For loop versus Matrix notation
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Matt Kindig
am 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?
Akzeptierte Antwort
Oleg Komarov
am 30 Jan. 2013
Y = [uniquedates accumarray(X(:,1),X(:,2))];
3 Kommentare
Oleg Komarov
am 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!