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