主题:大家帮忙看看这个程序,关于LMP算法的
我刚开始学非高斯噪声下的信号处理,刚编了一个最简单的程序,关于alpha稳定分布的LMP(类似LMS算法)程序,但是程序不收敛啊,有明白的大侠帮忙指点一下,可以帮我修改一下吗?我刚开始学,万分感谢……
clc
clear all
close all
a=1.5; %1<a<=2
p=1.5; %1<p<=a 这两个数可以在这个范围内任意取
M=10; %滤波器的阶数
mu=0.0005; %步长
N=3000; %迭代次数
nois=starnd(a,0,N); %产生alpha稳定分布非高斯噪声
x=sin(2*pi*0.02*[0:N-1]); %没有噪声的输入信号
u=x+nois; %加上噪声
d=x; %期望信号
wn=zeros(1,M); %权系数
for i=M:N
U=u(i:-1:i-M+1);
yn(i)=U*wn';
err(i)=d(i)-yn(i);
if err(i)>0
sgn=1;
elseif err(i)<0
sgn=-1;
else sgn=0;
end
wn=wn+mu*(abs(err(i)).^(p-1))*U*sgn;
end
er=(err).^2;
plot(er);[em18]
clc
clear all
close all
a=1.5; %1<a<=2
p=1.5; %1<p<=a 这两个数可以在这个范围内任意取
M=10; %滤波器的阶数
mu=0.0005; %步长
N=3000; %迭代次数
nois=starnd(a,0,N); %产生alpha稳定分布非高斯噪声
x=sin(2*pi*0.02*[0:N-1]); %没有噪声的输入信号
u=x+nois; %加上噪声
d=x; %期望信号
wn=zeros(1,M); %权系数
for i=M:N
U=u(i:-1:i-M+1);
yn(i)=U*wn';
err(i)=d(i)-yn(i);
if err(i)>0
sgn=1;
elseif err(i)<0
sgn=-1;
else sgn=0;
end
wn=wn+mu*(abs(err(i)).^(p-1))*U*sgn;
end
er=(err).^2;
plot(er);[em18]