【发布时间】:2016-07-08 03:59:15
【问题描述】:
您好,我是使用 MATLAB 的新手
我要做的是 我有 m 维样本(数据),这里 m 为 2。
MATLAB代码中的数据是这样的
X1 = [4,2;2,4;2,3;3,6;4,4];
X2 = [9,10;6,8;9,5;8,7;10,8];
我要减去样本的平均值,即
Mu1 = [3;3.8];
然后我可以在一行中减去每个二维数据和MATLAB代码中的样本平均值
【问题讨论】:
标签: matlab
您好,我是使用 MATLAB 的新手
我要做的是 我有 m 维样本(数据),这里 m 为 2。
MATLAB代码中的数据是这样的
X1 = [4,2;2,4;2,3;3,6;4,4];
X2 = [9,10;6,8;9,5;8,7;10,8];
我要减去样本的平均值,即
Mu1 = [3;3.8];
然后我可以在一行中减去每个二维数据和MATLAB代码中的样本平均值
【问题讨论】:
标签: matlab
如果我对您的理解正确,您想从您的数据中减去平均 Mu1(x1 和 x2)。
如果是这样,您可以使用 bsxfun 函数:
X1_subtracted = bsxfun(@minus, X1, Mu1')
哪个输出:
X1_subtracted =
1.0000 -1.8000
-1.0000 0.2000
-1.0000 -0.8000
0 2.2000
1.0000 0.2000
请注意,您必须将' 与Mu1 一起使用,因为X1 的形状为5x2,而Mu1 的形状为1x2。
【讨论】:
.' 而不是' 进行转置,因为如果没有这个点,它将是ctranspose 而不是transpose。当值很复杂时,这会产生问题,因为会计算复共轭转置。
要获得X1 - mean(X1),您可以尝试
X = [X1(:,1) - mean(X1(:,1)), X1(:,2) - mean(X1(:,2))]
this will output
1. - 1.8
- 1. 0.2
- 1. - 0.8
0. 2.2
1. 0.2
【讨论】: