Quelle est la meilleure façon pour itérer sur les colonnes d'une matrice?

Je veux appliquer une fonction à toutes les colonnes d'une matrice avec MATLAB. Par exemple, j'aimerais être en mesure d'appeler lisse sur chaque colonne d'une matrice, au lieu d'avoir lisse traiter de la matrice comme un vecteur (qui est le comportement par défaut si vous appelez smooth(matrix)).

Je suis sûre qu'il doit être un plus idiomatiques façon de le faire, mais je ne le trouve pas, j'ai donc défini un map_column fonction:

function result = map_column(m, func)
    result = m;
    for col = 1:size(m,2)
        result(:,col) = func(m(:,col));
    end
end

qui je peux appeler avec:

smoothed = map_column(input, @(c) (smooth(c, 9)));

Il n'y a rien de mal avec ce code? Comment pourrais-je l'améliorer?

OriginalL'auteur |