clear;clc;
%根据AR(4)模型由白噪声产生随机信号
n=1:100;
W=randn(1,100);
B=[1];
A=[1 -1.352 1.338 -0.662 0.240];
X=filter(B,A,W);
V=randn(1,100);
Y=X+V;%产生观测信号
%wiener filter的生成
maxlag=100;
[rx,lags]=xcorr(Y,maxlag,'biased');%观测信号的自相关函数
rx1=toeplitz(rx(101:end));%对称化自相关函数矩阵使之成为方阵,filter的阶数为101阶
rx2=xcorr(X,Y,maxlag,'biased');%观测信号与期望信号的互相关函数
rx2=rx2(101:end);
h=inv(rx1)*rx2';%Wiener-Horf 方程
Y0=filter(h,1,Y);%加噪信号通过滤波器后的输出
%绘出观测信号Y0和期望信号X的波形
plot(n,X,'r-',n,Y0,'b--');
xlabel('采样点'), ylabel('输出');
title('期望信号波形和Wiener滤波器估计信号波形(v(n)=1)');