comparing matrix elements and performing operation if equal

If I have a matrix
A=
18 18 1
17 20 2
18 18 1
17 25 2
19 16 3
18 18 1
19 17 3
I want to scan through the matrix and when ever the first column elements are equal, the 3rd column elements should get added up
e.g: the resultant matrix should be
18 18 1
17 20 2
18 18 2
17 25 4
19 16 3
18 18 3
19 17 6
Please help me in this

1 commentaire

N/A
N/A le 5 Juil 2019
Modifié(e) : N/A le 5 Juil 2019
My problem is also the same i just have one little extension that whenever the elemnts in column 1 and 3 both are repeated elsewhere in matrix then only third column should get added up
e.g
A=
18 18 1
17 20 2
18 18 1
17 25 2
19 17 3
18 18 1
19 17 3
then answer should be
18 18 1
17 20 2
18 18 2
17 25 2
19 17 3
18 18 3
19 17 6

Connectez-vous pour commenter.

 Réponse acceptée

Simon
Simon le 14 Nov 2013
Modifié(e) : Simon le 14 Nov 2013
Hi!
% get indices of unique values
[~, ~, c] = unique(A(:, 1));
% loop over all unique values
for n = 1:max(c)
ind = n==c;
% cumulative sum
cs = cumsum(A(ind, 3));
% set third column
A(ind, 3) = cs;
end

Plus de réponses (0)

Catégories

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by