Sumar un vector renglón a una matriz en MATLAB

Publicado el 26 mayo 2015 por Evaristor

Supongamos que tenemos una matriz A con m renglones y n columnas y un vector b con n columnas. Queremos sumarle a cada columna de A el correspondiente elemento de b. Tal vez nuestro primer impulso es intentar A+b pero MATLAB nos dirá que Matrix dimensions must agree. Entonces se nos antojará un for de 1 a n, pero no debemos caer en la tentación. Una mejor opción es usar repmat.

m = 10; % Diez renglones
n = 5; % Cinco columnas
A = randi(9,m,n) % Matriz con números al azar del 1 al 9
b = randi(99,1,n) % Vector renglón con números al azar del 1 al 99

A =
8 2 6 7 4
9 9 1 1 4
2 9 8 3 7
9 5 9 1 8
6 8 7 1 2
1 2 7 8 5
3 4 7 7 5
5 9 4 3 6
9 8 6 9 7
9 9 2 1 7
b =
28 68 65 17 12

Usando repmat podemos crear una nueva matriz B donde cada renglón sea el vector b.

B = repmat(b,m,1) % Creamos una matriz C

B =
28 68 65 17 12
28 68 65 17 12
28 68 65 17 12
28 68 65 17 12
28 68 65 17 12
28 68 65 17 12
28 68 65 17 12
28 68 65 17 12
28 68 65 17 12
28 68 65 17 12

y ahora sí podemos sumar

suma = A+B

suma =
36 70 71 24 16
37 77 66 18 16
30 77 73 20 19
37 73 74 18 20
34 76 72 18 14
29 70 72 25 17
31 72 72 24 17
33 77 69 20 18
37 76 71 26 19
37 77 67 18 19


Código fuente de esta entrada