LMS、LMS/DFT、LMS/DCT、卡尔曼滤波、AR谱分析和小波变换程序
通信方向的研究生必修课,现代数字信号处理中,处理信号几种常用的方法。不仅能加深对方法的理解,还能为初学MATLAB的同学提供上手的绝佳程序,欢迎大家积极讨论和下载!大牛们也可以补充更为科学的源程序!程序较多,就只在下面贴上一部分代码,其他代码和源程序在附件中,供大家下载!ps:效果图在附近文档中有,这里po不上来,请原谅!
1、运用LMS基本算法以及LMS/DFT和LMS/DCT对含有噪声的信号进行处理,期望提取出有用信号。
LMS基本算法
clear all;
M=64;N=8*M;mu=0.001;
W=zeros(1,M);
signal=sin(2*pi*0.01*);
noise=randn(1,N);
x=signal+noise;
d=signal;
for k=1:length(x)-M+1;
y(k)=sum(W.*fliplr(x(k:M+k-1)));
e(k)=d(M+k-1)-y(k);
W=W+2*mu*e(k)*fliplr(x(k:M+k-1));
end
k=0:N-1;
subplot(121);plot(k,x);grid;
k=M-1:N-1;
subplot(122);plot(k,y);grid;
2、LMS/DFT算法
clear all;
M=64;N=8*M;mu=0.001;
W=zeros(1,M);
signal=sin(2*pi*0.01*);
noise=randn(1,N);
x=signal+noise;
d=signal;
X=zeros(1,M);P=zeros(1,M);
u=zeros(1,M);
delta=0.01;gamma=0.9;
for k=1:length(x)-M;
for m=1:M
X(m)=(exp(-i*2*pi*m/M)*X(m)+x(k+M)-x(k))/M^0.5;
P(m)=gamma*P(m)+(1-gamma)*X(m)*conj(X(m));
u(m)=X(m)/(P(m)+delta)^0.5;
end
y(k)=sum(W.*fliplr(u));
e(k)=d(M+k)-y(k);
W=W+2*mu*e(k)*fliplr(conj(u));
end
k=0:N-1;
subplot(121);plot(k,x);grid;
k=M:N-1;
subplot(122);plot(k,y);grid;
正在学习现代数字信号处理,不错!下个看看! 很好用,不错 谢谢楼主
页:
[1]