基本的な演算で互換性のある配列サイズ
MATLAB® の二項 (2 入力) 演算子および関数のほとんどは、"互換性のあるサイズ" をもつ数値配列をサポートします。すべての次元について入力の次元サイズが同じであるか、一方の次元サイズが 1 である場合、2 つの入力のサイズは互換性があります。最も簡単なケースでは、2 つの配列のサイズは、厳密に同じであるか一方がスカラーの場合に互換性があります。MATLAB は、要素単位の演算または関数の実行時、サイズに互換性のある配列を暗黙的に拡張して同じサイズにします。
サイズに互換性がある入力
2 次元入力
サイズに互換性があるスカラー、ベクトルおよび行列の組み合わせの例は以下のとおりです。
2 つの入力のサイズが厳密に同じ場合
一方の入力がスカラーである場合
一方の入力が行列で、他方が同じ行数の列ベクトルである場合
一方の入力が列ベクトルで、他方が行ベクトルである場合
多次元配列
MATLAB では、すべての配列にサイズが 1 の後続の次元があります。これは、多次元配列の場合、3 行 4 列の行列が 3 × 4 × 1 × 1 × 1 のサイズの行列と同じであることを意味します。サイズに互換性がある多次元配列の例は以下のとおりです。
一方の入力が行列で、他方が同じ行数と列数をもつ 3 次元配列である場合。
一方の入力が行列で、他方が 3 次元配列である場合。それぞれの次元はサイズが同じであるか、一方が 1 であること。
空配列
空配列の場合も、次元サイズがゼロの配列の場合も、規則は同じです。1 ではない次元のサイズによって出力のサイズが決まります。したがって、サイズがゼロの次元は他方の配列でサイズが 1 または 0 の次元とペアにしなければならず、出力の次元のサイズは 0 になります。
A: 1-by-0 B: 3-by-1 Result: 3-by-0
サイズに互換性がない入力
互換性のない入力のサイズは、暗黙的に同じサイズに拡張することはできません。以下に例を示します。
次元サイズのいずれかが等しくなく、どちらも 1 ではない。
A: 3-by-2 B: 4-by-2
長さが異なる 2 つの非スカラー行ベクトル。
A: 1-by-3 B: 1-by-4
例
ベクトルを行列から減算
ベクトル行列演算を単純化するには、sum
、mean
、min
などの次元関数で暗黙的な拡張を使用します。
たとえば、行列内の各列の平均値を計算した後、各要素から平均値を減算します。
A = magic(3)
A = 8 1 6 3 5 7 4 9 2
C = mean(A)
C = 5 5 5
A - C
ans = 3 -4 1 -2 0 2 -1 4 -3
行ベクトルと列ベクトルの加算
行ベクトルと列ベクトルのサイズには互換性があり、演算を実行すると結果は行列になります。
たとえば、行ベクトルと列ベクトルを加算します。結果は bsxfun(@plus,a,b)
と同じになります。
a = [1 2 3 4]
ans = 1 2 3 4
b = [5; 6; 7]
ans = 5 6 7
a + b
ans = 6 7 8 9 7 8 9 10 8 9 10 11