Array vs. Matrix Operations
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Stephen23
il 15 Ott 2019
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:
Risposta accettata
Stephen23
il 15 Ott 2019
Modificato: Stephen23
il 15 Ott 2019
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 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!