这是输入数据:
% @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”添加为我的声誉的新标签。