【发布时间】:2013-11-25 00:45:23
【问题描述】:
我试图获取矩阵中一行的平均值,然后从该行中的一个值中减去该平均值,然后将该值放入相应的矩阵中。我已经用几个 for 循环完成了这个,但我想远离那个代码。我是一位经验丰富的程序员,正在尝试学习如何在不使用 for 循环的情况下在 Matlab 中做事。非常感谢任何帮助。
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 矩阵,但我一直无法做到正确。任何帮助表示赞赏。谢谢!
【问题讨论】: