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 = ceil(rand(m,n)*9) % Matriz con números al azar del 1 al 9 b = ceil(rand(1,n)*99) % Vector con números al azar del 1 al 99
A =
9 1 7 9 3
7 4 6 5 4
4 3 1 3 5
6 2 1 1 5
1 2 3 6 8
9 4 5 8 5
8 1 6 4 9
8 6 4 1 6
3 5 8 3 9
6 7 7 2 3
b =
68 29 68 70 7
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 =
68 29 68 70 7
68 29 68 70 7
68 29 68 70 7
68 29 68 70 7
68 29 68 70 7
68 29 68 70 7
68 29 68 70 7
68 29 68 70 7
68 29 68 70 7
68 29 68 70 7
y ahora sí podemos sumar
suma = A+B
suma =
77 30 75 79 10
75 33 74 75 11
72 32 69 73 12
74 31 69 71 12
69 31 71 76 15
77 33 73 78 12
76 30 74 74 16
76 35 72 71 13
71 34 76 73 16
74 36 75 72 10