For loop versus Matrix notation
1 回表示 (過去 30 日間)
古いコメントを表示
Can this be simplified to use a matrix expression instead of a for loop?:
X=[1 5.4; 1 6.3; 2 4.8; 3 7.1];
dates=X(:,1);
amounts=X(:,2);
uniquedates=unique(dates);
totals=zeros(size(uniquedates));
for d = 1:size(uniquedates,1)
totals(d,1)=sum(amounts(dates==uniquedates(d,1)));
end
Y = [uniquedates totals];
2 件のコメント
Matt Kindig
2013 年 1 月 29 日
Probably, but likely not in an easy-to-understand way. The fact that totals differs in size from dates complicates things.
Is there a reason you don't want to just use the for-loop?
採用された回答
Oleg Komarov
2013 年 1 月 30 日
Y = [uniquedates accumarray(X(:,1),X(:,2))];
3 件のコメント
Oleg Komarov
2013 年 1 月 30 日
Map the dates to a set X in the positive N, i.e. use unique on the dates and then X(:,1) is the ia index from the call to unique.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!