Magazine

Sumar un vector a una matriz en MATLAB

Publicado el 04 marzo 2011 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 = 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


Volver a la Portada de Logo Paperblog