【问题标题】:Make rows in a matrix "interact" with each other使矩阵中的行相互“交互”
【发布时间】:2017-06-23 08:35:09
【问题描述】:

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

示例: 让f 是对行求和的函数。假设我们有一个4x4 矩阵。 所以我想总结row 1row 2row 2row 3row 1row 4 等等。直到所有行都相互交互。

  • 将一行与另一行相加,是指将第一行的总和与另一行的总和相加。

【问题讨论】:

    标签: matlab loops for-loop matrix sum


    【解决方案1】:

    带有循环的版本,假设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));
    

    【讨论】:

    • 谢谢弗洛里安!
    猜你喜欢
    • 1970-01-01
    • 2017-03-23
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    相关资源
    最近更新 更多