Matlab - Como restar a una matriz un vector fila?

   
Vista:

Como restar a una matriz un vector fila?

Publicado por Patricia (8 intervenciones) el 21/02/2014 19:39:28
Hola a todos,
Tengo una inquietud
Estoy haciendo un script en el cual cargo una matriz, por eje:
X=[1 2 3; 4 5 6; 7 8 9]
calculo el promedio por columna de esta manera:
A=mean(X)
Esto me da como resultado un vector con el promedio A=[4 5 6]
Ahora bien, yo quisiera restarle el primer valor del vector A a la columna 1 de la matriz X, el segundo valor del vector A a la segunda columna de X.
De tal modo que obtenga una matriz respuesta: R=[-3 -3 -3; 0 0 0; 3 3 3]
Muchas gracias por la ayuda!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

Como restar a una matriz un vector fila?

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 21/02/2014 23:02:57
>> clear all
X=[1 2 3; 4 5 6; 7 8 9]
A=mean(X)
X(:,1)=X(:,1)-A(1)

X =

1 2 3
4 5 6
7 8 9


A =

4 5 6


X =

-3 2 3
0 5 6
3 8 9



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como restar a una matriz un vector fila?

Publicado por Patricia (8 intervenciones) el 28/02/2014 17:40:40
Gracias Jose Jeremias! Sos un genio! Es la manera encontrando la manera fácil de hacerlo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como restar a una matriz un vector fila?

Publicado por Arturo Laflor (1 intervención) el 11/05/2016 23:54:07
Hola José Jeremías, gracias por compartir. Esto soluciona el hecho de restar el elemento 1 del vector a cada elemento de la columna 1 de la matriz. Sin embargo, lo que se quiere hacer es que a cada renglón de la matriz A se le reste el vector B. En octave el código es directo, haces A-B y viva la paz.

ma=[3 4 5;5 6 7;8 9 10]
ma =

3 4 5
5 6 7
8 9 10

m=mean(ma)
m = 5.3333 6.3333 7.3333

>> ma-m
ans =

-2.33333 -2.33333 -2.33333
-0.33333 -0.33333 -0.33333
2.66667 2.66667 2.66667

En matlab esto arroja el error: >> ma-m
Error using -
Matrix dimensions must agree.


En un foro se propone repetir el vector tantas veces como renglones tenga la matriz y luego hacer la resta de forma natural. Esa operación seguramente funciona, pero... temo que no es la más óptima y eso es lo que se quiere sobre todo en lenguajes como Matlab que se busca hacer operaciones entre matrices y vectores de forma paralela.

Agradezco de antemano cualquier respuesta a este comentario, soy principiante en el uso de Matlab y octave.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar