What controls of this error 'Inner matrix dimensions must agree'?

1 view (last 30 days)
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.
  2 Comments
Dennis
Dennis on 13 Sep 2018
s is a vector of length 100, you want to multiply this vector with a vector of length 6.
What result do you expect?
Matt J
Matt J on 13 Sep 2018
You probably set 's' to a scalar value in some situations. Only then will the code run without error.

Sign in to comment.

Accepted Answer

Stephan
Stephan on 13 Sep 2018
Edited: Stephan on 13 Sep 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 '.*'.
Read more in the documentation for Matrix operations, where this behavior is described in detail.
Best regards
Stephan
  3 Comments
Stephan
Stephan on 13 Sep 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
Dennis on 13 Sep 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.

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!