马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我在做信号去噪,想用自适应噪声抵消的方法,所以选择的原始信号为正弦信号+白噪声,参考信号为白噪声,系统的最后输出en应该为要得到的有用信号,按照书中讲的算法写的程序,但是我仿真的结果总是不对
有没有自适应滤波器的高手,下面是我的程序,请帮我仿真并分析下原因。
非常感激!!
%%子函数
function[yn,w,en]=LMS(xn,dn,M,mu)
N=100;%%信号长度
en=zeros(N,1);%%自适应滤波系统输出
W=zeros(M,N);
%%迭代算法
for k=M:N
x=xn(k:-1:k-M+1);
yn=W(:,k-1).'*x;
en(k)=dn(k)-y;
W(:,k)=W(:,k-1)+2*mu*en(k)*x;
end
%%主程序
close all;
clear all;
%周期信号
t=0:99;
xs=sin(0.5*t);
%%噪声信号
randn('state',sum(100*clock));
e=100*randn(1,100);
%%滤波
sn=xs+e;%%自适应滤波器的原始输入
xn=e.';
dn=sn.';%%自适应滤波起的参考输入,即自适应滤波器的输入
M=20;%%滤波器介数
rho_max=max(eig(xn*xn.'));
mu=rand()*(1/rho_max);
[yn,W,en]=LMS(xn,dn,M,mu);
figure;
subplot(211);
plot(sn);title('原始带噪信号');
subplot(212);
plot(en);title('去噪后信号');
%%学习曲线
J=en.^2;
figure;
plot(J);title('学习曲线');
subplot(211); |