Ich möchte eine Funktion für alle Spalten in einer Matrix mit MATLAB anwenden. Zum Beispiel möchte ich in der Lage sein, jede Spalte einer Matrix glatt aufzurufen, anstatt die Matrix glatt als Vektor zu behandeln (was das Standardverhalten ist, wenn Sie glatt (Matrix) nennen).Was ist der beste Weg, um Spalten einer Matrix in MATLAB zu durchlaufen?
Ich bin sicher, es muss eine idiomatische Weg, dies zu tun, aber ich kann es nicht finden, also habe ich eine map_column Funktion definiert:
function result= map_column(m, func)
result= m;
for col= 1:size(m,2)
result(:,col)= func(m(:,col));
end
end
, die ich mit anrufen:
smoothed= map_column(input, @(c) (smooth(c, 9)));
Gibt es etwas falsch mit diesem Code? Wie könnte ich es verbessern?
Dies gilt nicht für die reibungslose Funktion arbeiten. Wenn Sie eine Matrix glätten, wird sie als ein großer Vektor behandelt. Diese Methode wäre jedoch für einige andere Funktionen geeignet. – dmnd