Array vs. Matrix Operations
4 ビュー (過去 30 日間)
古いコメントを表示
A row vector and a column vector have compatible sizes. If you add a 1-by-3 vector to a 2-by-1 vector, then each vector implicitly expands into a 2-by-3 matrix before MATLAB executes the element-wise addition.
x = [1 2 3]
x =
1 2 3
y = [10; 15]
y =
10
15
x + y
ans =
11 12 13
16 17 18
If the sizes of the two operands are incompatible, then you get an error.
A = [8 1 6; 3 5 7; 4 9 2]
A =
8 1 6
3 5 7
4 9 2
m = [2 4]
m =
2 4
A - m
Matrix dimensions must agree.
This is from the MATLAB "Array vs. Matrix Operations page". Why does the second example output an error while the first doesn't? I see that the second example says that "matrix dimensions must agree", but why did that error not occur for the first example? A further explanation of this would be great. Thank you!
1 件のコメント
Stephen23
2019 年 10 月 15 日
Note that your title "Array vs. Matrix Operations" actually refers to different kinds of operators, not specifically to compatible array sizes for basic array operations:
採用された回答
Stephen23
2019 年 10 月 15 日
編集済み: Stephen23
2019 年 10 月 15 日
What "compatible sizes" means is explained on this page:
I will not copy the entire page here, but the main points are:
- scalar dimensions can be expanded/contracted to match the other array.
- non-scalar dimensions must have exactly the same size.
That is all. So your first example works because (note the scalar dimensions):
- 1x3 can be expanded to 2x3
- 2x1 can be expanded to 2x3
But your second example fails because
- 1x2 can be expanded to 3x2
- 1x2 cannot be expanded/contracted to match 3x3,nor can 3x3 be expanded/contracted to match 1x2, because in the second dimension neither is scalar, nor do they have the same size.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!