Matrix basic operation error

3 visualizaciones (últimos 30 días)
Maryada Maryada
Maryada Maryada el 8 de Mayo de 2017
Comentada: Steven Lord el 8 de Mayo de 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 comentarios
Torsten
Torsten el 8 de Mayo de 2017
Editada: Torsten el 8 de Mayo de 2017
m must be a column vector:
m = [2;4;6]
Best wishes
Torsten.
Steven Lord
Steven Lord el 8 de Mayo de 2017
This behavior is known as implicit expansion and was added to the arithmetic operators like + in release R2016b.

Iniciar sesión para comentar.

Respuesta aceptada

KL
KL el 8 de Mayo de 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 comentarios
Jan
Jan el 8 de Mayo de 2017
@KL: If you use bsxfun, you can omit the repmat.
KL
KL el 8 de Mayo de 2017
oh yes, that's right, thanks Jan!

Iniciar sesión para comentar.

Más respuestas (2)

Jan
Jan el 8 de Mayo de 2017
Editada: Jan el 8 de Mayo de 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 el 8 de Mayo de 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 comentario
Maryada Maryada
Maryada Maryada el 8 de Mayo de 2017
I want to add m to each row of A result should be
3 5 7
4 6 8
5 7 9

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by