Array vs. Matrix Operations
3 次查看(过去 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!