2
我想要获取矩阵中的行的平均值,并从该行中的值中减去该值的平均值,并将该值成为相应的矩阵。我已经为一些循环做了这个循环,但我想从这些代码中移开。我是一位正在尝试学习如何在Matlab中完成而不使用for循环的程序员。任何帮助是极大的赞赏。获取从一个值减去矩阵中的一行的平均值,并将其放入另一个矩阵
A = [ 1 3 5; mean = 3
2 5 5; mean = 4
3 4 8; ]; mean = 5
B = [|B_11-mean| |B_12-mean| |B_13-mean|
|B_21-mean| |B_22-mean| |B_23-mean|
|B_31-mean| |B_32-mean| |B_33-mean|];
B = [ 2 0 2;
2 1 1;
2 1 3; ];
下面是我正在使用的代码。我计划扩展到一个更大的数据集,所以我想尽可能提高效率。
[rows columns] = size(A);
B = zeros(rows, columns);
mean_row = mean(A.');
for j=1:rows
for i=1:columns
B(j,i) = abs(A(j, i) - mean_row(1,columns));abs(A(j, i) - mean_row(1,columns));
end
end
我一直在做关于如何做到这一点没有for循环,以及如何更有效地创建了矩阵B的研究,但我一直没能得到它的权利。任何帮助表示赞赏。谢谢!
+1'bsxfun'一个完美的情况下! –
感谢您的答案,但它不会返回我正在寻找的矩阵。请参阅最新的问题。 – user2743
@ user2743您是否提供了与您展示的相同的输入内容?我非常怀疑它,因为在我的结果输出完全相同的预期。请检查测试更新的答案。 – jkshah