Subtracting within a Matrix
Mostrar comentarios más antiguos
I have this matrix:
1 0
1 2
1 3
2 3
2 4
3 1
3 6
In the second column, I need to find the highest and lowest number that are associated with the same number in the first column, and then subtract the two. In row 1, the numbers 1 and 0 exist. In row 3, the numbers 1 and 3 exists. I need to subtract the 3 and the 0 and get 3 as my output.
The output should be a matrix that looks like this:
1 3
2 1
3 5
Also if a number in the first column only occurs once
1 0
1 2
1 3
2 3
2 4
3 1
3 6
4 5
Then the number in the second column associated with it in the output matrix should be a 0.
1 3
2 1
3 5
4 0
Respuesta aceptada
Más respuestas (1)
Star Strider
el 13 de Oct. de 2015
Editada: Star Strider
el 13 de Oct. de 2015
The accumarray approach:
M = [ 1 0
1 2
1 3
2 3
2 4
3 1
3 6
4 5];
Mu = unique(M(:,1));
R = accumarray(Mu, Mu, [], @(x)[max(M(M(:,1)==Mu(x),2))-min(M(M(:,1)==Mu(x),2))]);
Result = [Mu R]
Result =
1 3
2 1
3 5
4 0
Categorías
Más información sobre Performance and Memory en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!