For loop versus Matrix notation
2 views (last 30 days)
Show older comments
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 Comments
Matt Kindig
on 29 Jan 2013
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?
Accepted Answer
Oleg Komarov
on 30 Jan 2013
Y = [uniquedates accumarray(X(:,1),X(:,2))];
3 Comments
Oleg Komarov
on 30 Jan 2013
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.
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!