我刚开始学非高斯噪声下的信号处理,刚编了一个最简单的程序,关于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]