listing/enumerating numbers
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I have the following matrix, named interact:
interact = [1 2;
1 3;
2 1;
2 3;
3 1;
3 4;
4 1]
This matrix means that 1 and 2 interact, 1 and 3 interact, and so on. (just a matrix full of indices.)
Now I want to perform this operation/task.
All that 1 interacts will be added and stored in a matrix. Meaning the interaction between 1 and 2 + interaction between 1 and 3 = interaction of 1.
Similarly, separate matrices for interaction of 2, 3, 4, etc.
How do I do this in matlab?
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (1)
Guillaume
am 10 Nov. 2015
interact = [1 2; 1 3; 2 1; 2 3; 3 1; 3 4; 4 1];
interactwith = accumarray(interact(:, 1), interact(:, 2), [], @(v) {v})
accumarray uses the subs argument (here your first column) to group together the val argument (here your 2nd column) into a vector which at the end it passes to the fun function argument. Here that function is an anonymous function that just returns the vector as a cell array.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices 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!