How to do it more efficiently?
1 回表示 (過去 30 日間)
古いコメントを表示
Hi,
In my script, this piece of code is taking about 70% of processing time.
The idea is to create uniform timestamp, it searches the time array and compare it with the Tsynced. if there is no similar entry, the other parameters to NaN.
Is there anyway to change the script below without using find function? Even better if no for-loop is required.
Code:
for ix = 1:length(time_synced)
[r,~,~] = find(cCells(:,1)==time_synced(ix),1,'first');
if isempty(r)
curArr(ix,:) = NaN;
else
curArr(ix,:) = cCells(r,:);
end
end
Thanks.
0 件のコメント
採用された回答
Roger Stafford
2014 年 12 月 23 日
See if this is faster:
[t,ic] = ismember(time_synced,cCells(:,1));
curArr(t) = cCells(ic);
curArr(~t) = NaN;
Note: This assumes that 'time_synced' and 'curArr' are vectors of the same length.
その他の回答 (1 件)
Andrei Bobrov
2014 年 12 月 23 日
[l0,ii] = ismember(time_synced,cCells(:,1));
out = nan(numel(time_synced),size(cCells,2));
out(l0,:) = cCells(ii(l0),:);
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!