【问题标题】:Make rows in a matrix "interact" with each other使矩阵中的行相互“交互”
【发布时间】:2017-06-23 08:35:09
【问题描述】:
假设我有一个n x m 矩阵和一个函数f,它在两行之间做一些事情。如何创建一个循环,以便所有行都使用该函数 f 相互操作。
示例:
让f 是对行求和的函数。假设我们有一个4x4 矩阵。
所以我想总结row 1 和row 2,row 2 和row 3,row 1 和row 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));