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