Matlab将矩阵中心化为其平均值
我想把一个矩阵的中心对准它的平均值Matlab将矩阵中心化为其平均值,matlab,matrix,Matlab,Matrix,我想把一个矩阵的中心对准它的平均值 A[i][j] = A[i][j]-mean(A,j) 所以我从每个点减去相应列的平均值。 我找不到一个函数来集中我的数据,创建自己的数据也不是很简单 A = bsxfun(@minus,A,mean(A)); 例如: A = magic(5); A = bsxfun(@minus, A, mean(A)) A = 4 11 -12 -5 2 10 -8 -6 1 3 -9
A[i][j] = A[i][j]-mean(A,j)
所以我从每个点减去相应列的平均值。
我找不到一个函数来集中我的数据,创建自己的数据也不是很简单
A = bsxfun(@minus,A,mean(A));
例如:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
A =
4 11 -12 -5 2
10 -8 -6 1 3
-9 -7 0 7 9
-3 -1 6 8 -10
-2 5 12 -11 -4
例如:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
A =
4 11 -12 -5 2
10 -8 -6 1 3
-9 -7 0 7 9
-3 -1 6 8 -10
-2 5 12 -11 -4
我发现了这一点:也许做同样的事情detrend(一个“常数”);我应该选择这两种方法中的哪一种?我想我的方法很简单,如果您稍后返回代码,您可以很容易地理解正在发生的事情。此外,
detrend
还有一些附加选项,比如断点和你不关心的东西,所以repmat
可能会做得更快。好的,我有一个问题。我创建了一个随机脚本来实现中心:函数D=center(a)f=mean(a);对于i=1:size(A,2),D(:,i)=A(:,i)-f(i);为什么与其他2个相比速度如此之慢?在matlab中使用矢量化代码而不是循环更快。我发现了一个:可能做同样的事情detrend(A,'constant');我应该选择这两种方法中的哪一种?我想我的方法很简单,如果您稍后返回代码,您可以很容易地理解正在发生的事情。此外,detrend
还有一些附加选项,比如断点和你不关心的东西,所以repmat
可能会做得更快。好的,我有一个问题。我创建了一个随机脚本来实现中心:函数D=center(a)f=mean(a);对于i=1:size(A,2),D(:,i)=A(:,i)-f(i);为什么它比其他2个版本慢?在matlab中使用矢量化代码而不是循环更快。@nikosdi您使用的是哪个matlab版本?@Eastsun Hmmm。。。由于某种原因,这个例子看起来很熟悉…:-)(+1)@nikosdi您使用了哪个matlab版本?@Eastsun-Hmmm。。。由于某种原因,这个例子看起来很熟悉…:-)(+1)