ベクトルと数値の計算
前回はベクトルの操作について説明しました。今回はベクトルの計算についてです。まず初めにベクトルに一括で値を加減乗除していきます。例としてベクトルを作成し足し算をします。コマンドウインドウでの改行は「Shift」+「Enter」を用います。ここで1行目の最後には「;(セミコロン)」を記述します。セミコロンが記述された行の計算結果はコマンドウインドウに表示されません。
a = [1 2 3 4 5];
a = a + 5計算結果↓
a =
6 7 8 9 102行目の計算結果のみ表示されています。「ベクトル + 数値」とすることで、すべての要素に値が加算されていることがわかります。引き算、掛け算、割り算でも同様の結果となりますので、割愛します。
ベクトル同士の足し引き
つづいてベクトルとベクトルの計算について説明します。まずは足し算です。
a = [1 2 3 4 5];
b = [6 7 8 9 10];
a + b実行結果↓
ans =
7 9 11 13 151,2行目は「;(セミコロン)」があるため、3行目のみ結果が表示されています。ベクトル同士の足し算では、それぞれの要素ごとに足し算がされていることがわかります。ベクトルaの1番目の要素とベクトルbの1番目の要素といった具合に計算されます。数学で習うベクトルの足し算と同じ結果です。また、引き算も同様です。
ここでの注意点は計算するベクトルが同じ要素数でないとエラーになります。たとえば、下記の記述で実行します。
a = [1 2 3];
b = [6 7 8 9 10 11 12];
a + b実行結果↓
配列のサイズがこの演算に適合しません。
関連ドキュメンテーション配列のサイズが一致しないというエラーがでて計算結果が得られません。ベクトルの足し算、引き算の際には要素数の確認を忘れないようにしましょう。
ベクトル同士の掛け算
ベクトル同士の掛け算、割り算を行うには少し前提の知識が必要です。行列の演算がわかる方のみご参考にしてください。まずはa,bベクトルを作成します。
a = [1 2 3];
b = [4; 5; 6];ベクトル同士の掛け算を行います。
a * b実行結果↓
ans =
32aが1×3のベクトル、bが3×1のベクトルのため、a×bは(1×4 + 2×5 + 3×6) = 32となります。
続いては掛け算の順序を入れ替えます。
b * a実行結果↓
ans =
4 8 12
5 10 15
6 12 18b×aはbが3×1のベクトル、aが1×3のベクトルのため3×3の行列が結果として得られます。行列については次の記事で説明します。割り算も同様に行列演算になるため割愛します。
ベクトルの要素毎の掛け算、割り算
単純にベクトルの要素毎の掛け算や割り算をしたい場合は「.*」や「./」を使用します。演算子の前に「.(アポストロフィ)」を記述すると、要素毎で計算するという意味になります。下記の通り記述して実行すると
a = [1 2 3];
b = [4 5 6];
a .* b
a ./ b実行結果↓
ans =
4 10 18
ans =
0.2500 0.4000 0.5000a .* bで各要素毎が掛け算されていることがわかります。同様にa ./ bは各要素ごとに割り算が行われています。
関数の入力にベクトルを使用する
続いては関数の入力に数値ではなくベクトルを使用してみます。例えば以前紹介したsind関数にベクトルを入力します。
a = [0 30 45 60 90];
sind(a)実行結果↓
ans =
0 0.5000 0.7071 0.8660 1.0000ベクトルaの要素毎にsindの計算をして出力されていることがわかります。実際にsind関数のヘルプを見るため「help sind」を実行すると、この関数は入力引数としてスカラー値 | ベクトル | 行列 | N 次元配列があることがわかります。
sind - 度単位の引数の正弦
この MATLAB 関数 は、X の要素の正弦を返します。
Y = sind(X)
入力引数
X - 角度 (度単位)
スカラー値 | ベクトル | 行列 | N 次元配列
出力引数
Y - 角度の正弦
スカラー値 | ベクトル | 行列 | N 次元配列
例を開きます
180 度の正弦と π ラジアンの正弦を比較
複素数の角度ベクトルの正弦を度単位で指定
参考 sin, asind, asin
R2006a より前に MATLAB で導入
sind のドキュメンテーションMATLABではベクトルを入力値として利用できる関数が多く短いコードで完結に記述できるため、ぜひ使い方を理解してください。
まとめ
ベクトルの計算を行いましたが、足し算引き算と掛け算割り算では少し異なることがわかります。要素毎に計算したいのか、配列数はそろっているかなど少し気にする部分が多くなるので、意図した記述になっているか確認しながら進めましょう。一方で関数はスカラー値と同様に使用できる場合が多いのは強力なメリットですので、無駄な記述をしなくて済むように適宜使い方を調べながら使用してください。
次回は行列の操作について説明します。
コメント