行列に対して、数値の演算(引き算、足し算、掛け算など)を実行できます。統計的手法の多くは、簡潔な行列表記で表現し、JSLに組み込むことができます。
たとえば次の式は、最小2乗回帰を行列の乗算と逆行列で表したものです。
b = (X′X)-1X′y
この式を、次のJSL式に組み込みます。
b = Inv( X′*X )*X′*y;
行列に対して、次の基本的な算術を実行できます。
• 足し算
• 引き算
• 掛け算
• 割り算(逆数を掛ける)
メモ: 標準的な乗算は、行列の掛け算であり、要素ごとの掛け算ではないことに注意してください。
行列の掛け算を実行するには、次のいずれかの方法を使用します。
• * 演算子
• Multiply()関数
• Matrix Mult()関数
行列の割り算を実行するには、次のいずれかの方法を使用します。
• / 演算子
• Divide()関数
行列の掛け算および割り算では、次のことに注意してください。
• スカラーの掛け算または割り算は可換(ab = ba)ですが、行列の掛け算または割り算は可換ではないことに注意してください。
• 2つの要素のうちの1つがスカラーの場合、要素ごとの掛け算または割り算が実行されます。
• 要素ごとの掛け算をする場合、:*またはEMult()関数を使用します。
• 要素ごとの割り算をする場合、:/か、または同じ作用を持つEDiv()関数を使用します。
A = [1 2 3, 4 5 6, 7 8 9, 10 11 12];
B = [0 1 2, 2 1 0, 0 1 1, 2 0 0];
C = [1 2 3 4, 4 3 2 1, 0 1 0 1];
D = [0 1 2, 2 1 0, 1 2 0];
行列の足し算
R = A + B;
[1 3 5,
6 6 6,
7 9 10,
12 11 12]
行列の引き算
R = A - B;
[1 1 1,
2 4 6,
7 7 8,
8 11 12]
行列の掛け算(Aの行とCの列の内積)
R = A * C;
[9 11 7 9,
24 29 22 27,
39 47 37 45,
54 65 52 63]
行列の割り算(A*Inverse(D)と等価)
R = A / D;
[1.5 0.5 0,
3 2 0,
4.5 3.5 0,
6 5 0]
行列の要素ごとの掛け算
R = A :* B;
[0 2 6,
8 5 0,
0 8 9,
20 0 0]
行列とスカラーの掛け算
R = C * 2;
[2 4 6 8,
8 6 4 2,
0 2 0 2]
行列のスカラーによる割り算
R = C / 2;
[0.5 1 1.5 2,
2 1.5 1 0.5,
0 0.5 0 0.5]
行列の要素ごとの割り算(ゼロで割った場合は欠測値を戻す)
R = A :/ B;
[.2 1.5,
2 5 .,
.8 9,
5 . .]
数値関数は、行列の各要素に対して作用します。純粋な数値関数の多くは行列にも適用でき、結果は行列として得られます。行列とスカラーを混在させてもかまいません。
数値関数の例には次のようなものがあります。
• Sqrt()、Root()、Log()、Exp()、^ Power()、Log10()
• Abs()、Mod()、Floor()、Ceiling()、Round()、Modulo()
• Sine()、Cosine()、Tangent()、ArcSine()、およびその他の三角関数
• Normal Distribution()、および他の確率関係の関数
A = [1 2 3, 4 5 6, 7 8 9, 10 11 12];
B = Sqrt( A ); // 各要素ごとに平方根をとる
[1 1.414213562373095 1.732050807568877,
2 2.23606797749979 2.449489742783178,
2.645751311064591 2.82842712474619 3,
3.16227766016838 3.3166247903554 3.464101615137754]