方波信号与正弦信号混有白噪声如何用matlab滤波
求一个用维纳滤波方法处理噪声的matlab程序,必须是要调试好的,能用的程序有追加的 clear allclck=8;fs=1000;采样率N=1000;采样点数n=0:N-1;t=0:1/fs:1-1/fs;时间序列signal=sin(2*pi*10*t);noise=sin(2*pi*100*t);前500点高斯分部白噪声,后500点均匀分布白噪声xn=signal+k*noise;构造的混合信号figure(1)plot(xn);grid on;title('原始信号 ');Fs=fft(xn,512);将信号变换到频域AFs=abs(Fs);信号频域图的幅值f=(0:255)*fs/512;频率采样figure(2)plot(f,AFs(1:256));滤波前的信号频域图grid on;xlabel('频率/赫兹');ylabel('幅度');title('信号滤波前频域图');figure(3);Rxx=xcorr(xn,xn);得到混合信号的自相关函数M=100;维纳滤波器阶数for i=1:M%得到混合信号的自相关矩阵for j=1:Mrxx(i,j)=Rxx(abs(j-i)+N);endendRxy=xcorr(xn,signal);得到混合信号和原信号的互相关函数for i=1:Mrxy(i)=Rxy(i+N-1);end%得到混合信号和原信号的互相关向量h=inv(rxx)*rxy';得到所要涉及的wiener滤波器系数Signal_Filter=filter(h,1,xn);将输入信号通过维纳滤波器plot(Signal_Filter);grid on;title('维纳滤波后的信号');Fs2=fft(Signal_Filter,512);将信号变换到频域AFs2=abs(Fs2);信号频域图的幅值f=(0:255)*fs/512;频率采样figure(4)。
用MATLAB仿真正弦波加窄带高斯白噪声 %方差为sigma,x=A*sin(w0*t+theta)+sigma*randn(size(t));