Matrix basic operation error

2 Ansichten (letzte 30 Tage)
Maryada Maryada
Maryada Maryada am 8 Mai 2017
Kommentiert: Steven Lord am 8 Mai 2017
I have following code A =
1 1 1
2 2 2
3 3 3
m =
2 4 6
and I am calculating A + m
And I am getting error
Error using + Matrix dimensions must agree
What is wrong in my code.
  4 Kommentare
Torsten
Torsten am 8 Mai 2017
Bearbeitet: Torsten am 8 Mai 2017
m must be a column vector:
m = [2;4;6]
Best wishes
Torsten.
Steven Lord
Steven Lord am 8 Mai 2017
This behavior is known as implicit expansion and was added to the arithmetic operators like + in release R2016b.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

KL
KL am 8 Mai 2017
For the "edited" question,
A =[1 1 1
2 2 2
3 3 3]
m =[2 4 6]
c = bsxfun(@plus,A,repmat(m,3,1))
  3 Kommentare
Jan
Jan am 8 Mai 2017
@KL: If you use bsxfun, you can omit the repmat.
KL
KL am 8 Mai 2017
oh yes, that's right, thanks Jan!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Jan
Jan am 8 Mai 2017
Bearbeitet: Jan am 8 Mai 2017
In modern (>= 2016b) Matlab versions use:
A = [1 1 1; ...
2 2 2; ...
3 3 3];
m = [2 4 6];
A + m
For older Matlab versions:
bsxfun(@plus, A, m)

KL
KL am 8 Mai 2017
If you enter your code on your command window,
>> a = [1 2 3 4]
b = [5; 6; 7]
you would see
a =
1 2 3 4
b =
5
6
7
which mean 'a' has 1 row and 4 columns and 'b' has 1 column and 3 rows. Basically if you want to add two matrices, they should be of same size so you can add the corresponding elements to produce a resultant matrix of the same dimension. For example,
a = [1 2 3]
b = [5 6 7]
here, this gives you
a =
1 2 3
b =
5 6 7
both 'a' and 'b' have 1 row and 3 columns. If you add them like you did in your question
>> c = a+b
then you will get
c =
6 8 10
each value of 'c' is simply the sum of corresponding elements in 'a' and 'b'. If you want to do matrix multiplication, it's a little more complicated so I'd suggest you ask another question or simply have a read here .
  1 Kommentar
Maryada Maryada
Maryada Maryada am 8 Mai 2017
I want to add m to each row of A result should be
3 5 7
4 6 8
5 7 9

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by