What controls of this error 'Inner matrix dimensions must agree'?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sandi J
el 13 de Sept. de 2018
Comentada: Dennis
el 13 de Sept. de 2018
Sometimes I use these steps but without error
N=5;
s=linspace(0,2);
C=exp(s*(0:5));
Why sometimes other times this error appears ? Inner matrix dimensions must agree.
Respuesta aceptada
Stephan
el 13 de Sept. de 2018
Editada: Stephan
el 13 de Sept. de 2018
When using * in Matlab with non-scalars, matlab follows the calculation rules of linear algebra:
>> A = randi(10,3,2)
A =
4 4
2 6
8 2
>> B = randi(10,2,5)
B =
7 7 8 1 10
3 7 5 3 2
>> C = A * B
C =
40 56 52 16 48
32 56 46 20 32
62 70 74 14 84
>> whos A B C
Name Size Bytes Class Attributes
A 3x2 48 double
B 2x5 80 double
C 3x5 120 double
Multiply a 3x2 Matrix with a 2x5 is possible and results in a 3x5 Matrix. If you try the same "backwards" it will give the error:
>> D = B * A
Error using *
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix
matches the number of rows in the second matrix. To perform elementwise multiplication, use '.*'.
Best regards
Stephan
3 comentarios
Stephan
el 13 de Sept. de 2018
yes, but you asked for an explanation why sometimes you get the "inner dimensions error" and sometimes not - that was what i tried to answer.
Dennis
el 13 de Sept. de 2018
This will not return an error either:
N=5; s=linspace(0,2); C=exp(s'*(0:5));
The question is if this 'solves the problem'. It might be a way to calculate something that is not result that you want.
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!