注册 登录
编程论坛 Matlab

如何对采样数据进行去均值,白化处理

Lhyun 发布于 2015-05-10 21:47, 2206 次点击
[s1,fs1]= audioread('1.wav');
[s2,fs2]= audioread('2.wav');
[s3,fs3]= audioread('3.wav');
%三路语音信号
s=[s1,s2,s3];
m=size(s);
a=rand(3,3);
x=s*a;
x1=x(:,1);
x2=x(:,1);
x3=x(:,1);
%混合三路信号

%% 1、去均值
[XVariableNum, XSampleNum] = size(x);  % 行数为变量个数,列数为采样点数
Xave = mean(x')'; % 均值
for i = 1 : XVariableNum
    x(i,:) = x(i,:) - Xave(i)*ones(1,XSampleNum);
end

%% 2、白化/球化
Cx = cov(x', 1); % 计算协方差矩阵Cx
[eigvector, eigvalue] = eig(Cx); % 计算Cx的特征值和特征向量
WhiteMartix = eigvalue^(-1/2)*eigvector';  % 白化矩阵
Z = WhiteMartix * x;  % 正交

去均值和白化是从别的地方找的 不懂 运行了也不对 求教 谢谢
0 回复
1