我有以下矩阵,名为interact:
interact = [1 2;
1 3;
2 1;
2 3;
3 1;
3 4;
4 1]
此矩阵表示1和2相互作用,1和3相互作用,依此类推。 (只是一个充满指数的矩阵。)
现在我想执行此操作/任务。
所有1个交互将被添加并存储在矩阵中。意味着1和2之间的相互作用以及1和3之间的相互作用= 1的相互作用。
用于交互2,3,4的单独矩阵。
我如何在matlab中执行此操作?
答案 0 :(得分:1)
这是我如何理解你的问题。您有一个包含值的数组,名为values
。您还有一个包含交互的数组,名为interact
。您现在想要构造第三个数组result
,其中第一个元素是1的交互,第二个元素是2的交互等。interact
在第一列中具有元素的索引("哪个元素正在交互?"),在第二列中,第一列中的元素与之交互的元素的索引("谁是交互伙伴?")
%# make up some values
values = rand(1,4);
%# use your interactions
interact = [1 2;
1 3;
2 1;
2 3;
3 1;
3 4;
4 1]
%# calculate
result = accumarray(interact(:,1),values(interact(:,2)), [], @sum, NaN);