Matlab 从a值中减去矩阵中一行的平均值,然后放入另一个矩阵
我试图得到矩阵中一行的平均值,然后从该行的值中减去它,然后将该值放入相应的矩阵中。我已经用几个for循环完成了这项工作,但我想远离这些代码。我是一名经验丰富的程序员,正在尝试学习如何在不使用for循环的情况下在Matlab中进行操作。非常感谢您的帮助Matlab 从a值中减去矩阵中一行的平均值,然后放入另一个矩阵,matlab,matrix,Matlab,Matrix,我试图得到矩阵中一行的平均值,然后从该行的值中减去它,然后将该值放入相应的矩阵中。我已经用几个for循环完成了这项工作,但我想远离这些代码。我是一名经验丰富的程序员,正在尝试学习如何在不使用for循环的情况下在Matlab中进行操作。非常感谢您的帮助 A = [ 1 3 5; mean = 3 2 5 5; mean = 4 3 4 8; ]; mean = 5 B = [|B_11-mean| |B_1
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矩阵,但我一直未能正确实现。感谢您的帮助。谢谢
B = abs ( bsxfun (@minus, A, mean(A,2) ) );
测试
>> A = [ 1 3 5; 2 5 5; 3 4 8 ]
A =
1 3 5
2 5 5
3 4 8
>> B = abs ( bsxfun (@minus, A, mean(A,2) ) )
B =
2 0 2
2 1 1
2 1 3
测试
>> A = [ 1 3 5; 2 5 5; 3 4 8 ]
A =
1 3 5
2 5 5
3 4 8
>> B = abs ( bsxfun (@minus, A, mean(A,2) ) )
B =
2 0 2
2 1 1
2 1 3
谢谢你的回答,但它没有返回我正在寻找的矩阵。请查看更新的问题。@user2743您提供的输入是否与问题中显示的相同?我非常怀疑它,因为我这边的输出和期望的完全一样。请检查更新答案中的测试。使用它非常有趣@你完全正确。我想我已经盯着这个太久了,没有注意到。谢谢你的帮助!谢谢你的回答,但它没有返回我正在寻找的矩阵。请查看更新的问题。@user2743您提供的输入是否与问题中显示的相同?我非常怀疑它,因为我这边的输出和期望的完全一样。请检查更新答案中的测试。使用它非常有趣@你完全正确。我想我已经盯着这个太久了,没有注意到。谢谢你的帮助!