![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
processingで
下のプログラムのクラスの中に、引数を実数値の配列としてベクトルをあたえ、インスタンス変数としてベクトルを配列としては管理するsetVector()というメゾットをつくりたいのですが、どのような形のプログラムにす
ればよいか分かりません。教えてください。
void setup()
{
Vectors ve=new Vectors();
float[] vector={2,9,0,1};
ve=setVector(vector);
}
class Vectors
{
}
No.3ベストアンサー
- 回答日時:
> すみません。
自分でも頭の中が混乱してしまったうん、まぁ混乱してるのは分かります。
例えば、
> println("内積",ve.naiseki());
> println("コサイン類似度",ve.kosain());
> println("面積",ve.menseki());
この計算はもう一つベクトルが必要なのに、全く無視してる辺りに混乱が伺えますね(笑)。
とは言っても、僕も別にProcessing Expertってワケじゃないし、「他の言語だとこう書くだろうからこういうカンジでしょ」って何となく書いてるだけです。
と言うわけで、お互い「Processing初心者」なんで(笑)、気楽に行きましょう。
// ここから
void setup() {
Vectors ve1 = new Vectors(2, 9, 0, 1);
Vectors ve2 = new Vectors(4, 1, 1, 8);
println("1の大きさ", ve1.vectorsize());
println("2の大きさ", ve2.vectorsize());
println("内積", ve1.naiseki(ve2));
println("コサイン類似度", ve1.cosine(ve2));
println("面積", ve1.menseki(ve2));
}
class Vectors{
float[] v;
Vectors (float... s) {
v = s;
}
float[] foo() {
return v;
}
float vectorsize() {
int i, n = 0;
for (i = 0; i < v.length; i++) {
n += pow(v[i], 2);
}
return sqrt(n);
}
float naiseki(Vectors u) {
int i, n = 0;
for (i = 0; i < v.length; i++) {
n += v[i] * u.foo()[i];
}
return n;
}
float cosine(Vectors u){
return naiseki(u) / (vectorsize() * u.vectorsize());
}
float menseki(Vectors u) {
return 1/2.0 * sqrt(pow(vectorsize(), 2) * pow(u.vectorsize(), 2) - pow(naiseki(u), 2));
}
}
No.2
- 回答日時:
> ベクトルを配列として管理する
いやいや。
だからクラスを作っちゃえばベクトルはベクトルとして管理されますよ。
「配列として管理する」なら、配列のままでおいておくのがベストです。
それとも、ベクトルを「配列を使って実装してくれ」ってのかしらん。あるいは「配列をベクトルに変換しろ」なんでしょうか。
意味がそれぞれ違うんで、その辺がハッキリせんと何とも言えないでしょう。
> {2,9,0,1}のベクトルの大きさをもとめたくて
このままじゃ配列の大きさは4ですよね。そのまんまです。
ただし。
「ベクトルの大きさ」って何でしょうか。
数学的に言うと、例えばこの場合(4次元のベクトルですよね)、
√(x^2+y^2+z^2+w^2)
です。
配列をそのまんまベクトルに見立てて、って言うのなら、別にベクトル作らんでも要素引っこ抜いて公式にぶち込んで計算すれば済む話ですよね。
すみません。自分でも頭の中が混乱してしまったのですが、最終的に下のように2つの4次元ベクトルのそれぞれの大きさ(√x^2+y^2+z^2+w^2)や内積などを求めたいのですが、このvoid setup に対応するclassの中身はどのようなプログラムにすれば1番良いのか教えて頂きたいです。
void setup()
{
Vectors ve=new Vectors();
float[] vector1={2,9,0,1};
float[] vector2={4,1,1,8};
ve.setVector1(vector1);
ve.setVector2(vector2);
println("1の大きさ",ve.vectorsize1());
println("2の大きさ",ve.vectorsize2());
println("内積",ve.naiseki());
println("コサイン類似度",ve.kosain());
println("面積",ve.menseki());
}
class Vectors
{
}
No.1
- 回答日時:
☓メゾット
○メソッド (method)
洋風おじやじゃねぇんだから(笑)。
> ベクトルを配列としては管理する
これちょっと意味が分かりません。
「ベクトルクラスを作る」ってのは「ベクトルをベクトルとして管理できる」から作るわけですよ。
例えばねぇ・・・。
数学で言うとベクトルは成分毎に加算出来たり、内積出来たり外積出来たりする。これは配列そのまんまじゃ「出来ない」事ですよね。でもベクトルを定義する、って事はそこまで面倒無く持っていける、って事なのです。
つまりベクトルを作っても「配列として管理する」ってのはちと意味不明なんですよね。
「何をさせたいか」がもっと明確になってないといけません。
回答ありがとうございます。正しくは「ベクトルを配列として管理する」です。誤字ってしまいました。すみません。{2,9,0,1}のベクトルの大きさをもとめたくてとても大まかにすると下のようにすればいいのかなと思ったのですが、それに付け足してsetVector()メゾット を書かなくてはいけないとおもうのですが、どのようにすればよいのか分かりません……教えていただけませんか。
void setup()
{
Vectors ve=new Vectors();
float[] vector={2,9,0,1};
ve=setVector(vector);
println("大きさ",vectorsize());
}
class Vectors
{
int vectorsize()
{
return ;
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) パイソンのプログラミングについての質問です 2 2023/05/22 12:39
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- 数学 線形代数の問題について教えて下さい。 行列A、行列B、ベクトルx 1.ABx=αxを満たす定数αを求 2 2023/06/12 10:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
配列で、値の入っている要素数...
-
main(String[] args) の args...
-
C#で動的配列Listの中身をListB...
-
Javaには、構造体はないんですか?
-
javaでEUC-JP文字列→UTF-8への変換
-
出力ストリームをバイト配列へ...
-
Java配列の問題を教えてくださ...
-
java
-
csvファイルを2次元配列に格納
-
エラーのStackTraceをString変...
-
『args[]』とは?
-
【C#】ハッシュテーブル(連想...
-
動的配列確保
-
Javaで文字と数字が混ざったも...
-
jspでの二次元配列
-
配列のサイズをrealloc的に変更...
-
cloneメソッドについて (java)
-
データベースから取得したデー...
-
Java CSVファイルをカンマごと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ページング
-
[Ljava.lang.Stringってなんですか
-
【C#】ハッシュテーブル(連想...
-
配列で、値の入っている要素数...
-
C言語でunsigned char配列を連...
-
Javaで文字と数字が混ざったも...
-
この警告はどうすれば?
-
C#で動的配列Listの中身をListB...
-
配列の中に複数存在する数がい...
-
javamailで複数人にメールを送...
-
同じ配列またはクラスを、2回...
-
csvファイルを2次元配列に格納
-
ArrayListからBean配列に値をセ...
-
javaで大容量テキストファイル...
-
main(String[] args) の args...
-
【Ajax通信&Java】配列の受け取...
-
java
-
『args[]』とは?
-
配列をセッションに割り当てた後で
-
Javaで文字を漢字であるか否か...
おすすめ情報