matlab - 获取矩阵中行的平均值减去 a 值并将其放入另一个矩阵

标签 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_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

关于matlab - 获取矩阵中行的平均值减去 a 值并将其放入另一个矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152831/

相关文章:

MATLAB imread 将彩色​​ GIF 读取为灰度

c++ - 将很多符号表达式从 x^2 或 x^3 转换为 pow(x,n)

arrays - Matlab - 为数组的每个元素运行一个带参数的函数?

matlab - 一个用于matlab的任务列表工具

matlab - 矢量化代码比 Matlab 中的 for 循环慢

c++ - 使用 GLM 正确旋转 Open GL 相机

matlab - 十进制到二进制作为 double 类型数组,而不是字符串

r - 如何使用灰度按原样在 R 中绘制矩阵?

math - 如何在 THREE.js 中找到两个向量之间的旋转矩阵

R Markdown !额外的对齐选项卡已更改为\cr。 <最近阅读>\endtemplate