Quiero aplicar una función a todas las columnas en una matriz con MATLAB. Por ejemplo, me gustaría poder llamar sin problemas a cada columna de una matriz, en lugar de tratar suavemente la matriz como un vector (que es el comportamiento predeterminado si llamas suavemente (matriz)).¿Cuál es la mejor forma de recorrer las columnas de una matriz en MATLAB?
Estoy seguro de que debe haber una manera más idiomática para hacer esto, pero no puedo encontrarlo, por lo que he definido una función map_column:
function result= map_column(m, func)
result= m;
for col= 1:size(m,2)
result(:,col)= func(m(:,col));
end
end
que puedo llamar con:
smoothed= map_column(input, @(c) (smooth(c, 9)));
¿Hay algún problema con este código? ¿Cómo podría mejorarlo?
Esto no funciona para la función suave. Si pasa una matriz lisa, la trata como un vector grande. Sin embargo, este método sería conveniente para algunas otras funciones. – dmnd