3
我需要这段代码运行得更快,因为它被称为很多次。我对Matlab很陌生,我觉得好像有一种方法可以做到这一点,但不是那么完整。值得赞赏的是,你可以给予的任何帮助,以提高我拥有的功能或其他功能,以帮助我执行此任务。 (任务是仅将“alldata”中的第一列在“minintervals”集合中的行转换为“alldataMinutes”。“minuteintervals”只是“alldata”列的最小值,增加20到20。最大ALLDATA的Matlab:代码性能问题使用“ismember”
minuteintervals= min(alldata(:,1)):20:max(alldata(:,1)); %20 second intervals
alldataMinutes= zeros(30000,4);
counter=1;
for x=1:length(alldata)
if ismember(alldata(x,1), minuteintervals)
alldataMinutes(counter,:)= alldata(x,:);
counter= counter+1;
end
end
alldataMinutes(counter:length(alldataMinutes),:)= [];
使用ISMEMBC(http://UndocumentedmMtlab.com/blog/ismembc-undocumented-helper-function/)应该比ISMEMBER提高性能。在这种情况下,与gnovice的矢量化相比,这种提升可以忽略不计,但只是FYI – 2010-08-04 03:48:31
@Yair:很高兴知道,尽管链接中存在拼写错误。对于任何感兴趣的人,这里是[正确的链接](http://undocumentedmatlab.com/blog/ismembc-undocumented-helper-function/)。 – gnovice 2010-08-04 04:07:32
感谢您指出gnovice :-) – 2010-08-07 18:24:29