在矩阵中创建行"交互"彼此

时间:2017-02-06 11:53:28

标签: matlab loops for-loop matrix sum

假设我有一个n x m矩阵和一个函数f,它在两行之间做了一些事情。如何创建一个循环,以便所有行都使用该函数f相互操作。

实施例: 设f为汇总行的函数。我们假设我们有一个4x4矩阵。 所以我想总结row 1row 2row 2row 3row 1row 4等等。直到所有行都与之互动为止彼此。

  • 通过将一行与另一行相加,我的意思是取第一行的总和,并将其与另一行的总和相加。

1 个答案:

答案 0 :(得分:0)

带循环的版本,假设f是一个接受两行M作为两个参数的函数:

count = 0;
result = zeros((n-1)*n/2,1);
for r1 = 1:n-1
    for r2 = r1+1:n
        count = count + 1;
        result(count) = f(M(r1,:),M(r2,:));
    end
end

没有循环的版本:

N = nchoosek(1:n,2);
result = arrayfun(@(r1,r2) f(M(r1,:),M(r2,:)), N(:,1), N(:,2));