在某些条件下在matlab中执行求和运算

时间:2015-11-10 13:28:21

标签: matlab matrix

我有以下矩阵,名为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中执行此操作?

1 个答案:

答案 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);