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