入力データは次のとおりです。
% @param Landmarks:
% Landmarks should be 1*m struct.
% m is the number of training set.
% Landmark(i).data is a n*2 matrix
古い関数:
function Landmarks=CenterOfGravity(Landmarks)
% align center of gravity
for i=1 : length(Landmarks)
Landmarks(i).data=Landmarks(i).data - ones(size(Landmarks(i).data,1),1)...
*mean(Landmarks(i).data);
end
end
arrayfun を使用する新しい関数:
function [Landmarks] = center_to_gravity(Landmarks)
Landmarks = arrayfun(@(struct_data)...
struct('data', struct_data.data - repmat(mean(struct_data.data), [size(struct_data.data, 1), 1]))...
,Landmarks);
end %function center_to_gravity
プロファイラーを使用すると、時間の使用が期待したものではないことがわかりました。
Function Total Time Self Time*
CenterOfGravity 0.011s 0.004 s
center_to_gravity 0.029s 0.001 s
誰かが理由を教えてもらえますか?
ところで...「arrayfun」を評判の新しいタグとして追加できません。