Filter löschen
Filter löschen

Marix manipulation

2 Ansichten (letzte 30 Tage)
Charles
Charles am 5 Aug. 2011
How do I perform this operation? I have a data set with recurring values at a given co-ordinate. I need to sum values of the repeating coordinates. I initially used a for loop to solve the problem but it is too slow. Here is a simple example of the problem:
val = rand(1);
a = [1 1 1 val;
1 2 1 val;
1 1 1 val];
Since the 1st and 3rd rows have the same co-ordinates, I need to add their values, delete the entries and replace with the new summed value. I know it should be possible using sub2ind and a cumsum operation, but I haven't figure exactly how to combine them yet. If I haven't written an answer at the time you are reading this, it means I still haven't got the combination right. Thanks.
  1 Kommentar
Pierre
Pierre am 5 Aug. 2011
>> _Since the 1st and 3rd rows have the same co-ordinates, I need to add their values, delete the entries and replace with the new summed value._
I wonder, if anybody can understand what you're trying to do there... I can't. :S
Please post your actual solution (with the for loop), this would allow us to see what the output's supposed to look like, would you?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Daniel Shub
Daniel Shub am 5 Aug. 2011
My solution has a for loop.
[b, i, j] = unique(a(:, 1:(end-1)), 'rows');
c = b;
for ii = 1:length(i)
c(ii, 4) = sum(a(j==ii, 4));
end
My guess is that it can be eliminated (and potentially made faster) with a bsxfun or arrayfun. In order to optimize it, we would need to know the sizes and how often things repeat.
  3 Kommentare
Charles
Charles am 5 Aug. 2011
ACCUMARRAY might be the better option as it doesn't involve a loop.
Daniel Shub
Daniel Shub am 5 Aug. 2011
While I am happy to have my answer accepted, my guess is that if you un-accept my answer (not even sure you can do that), once the people in the US wake up, you will get a bsxfun/arrayfun/accumarray solution.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrices and Arrays 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!

Translated by