一个正,一个负,但只要-0.99的,光改绘图那条语句好像不太行,求完整改法吗,完整代码如下
clc;
clear all;
a1=-0.99;%AR模型参数
Pv=0.995;%AR模型噪声功率
trials=100;%迭代次数
M=2;%滤波器抽头系数
u=0.05;%收敛因子,步长
L=10000;%长度
mu1=0.0005;
% x=zeros(M,1);%输入数据矢量
% y=zeros(1,trials);%预测输出数据矢量
w=zeros(trials,M);%滤波器N次迭代自适应改变的权值
w11=zeros(M,L);%多次测量平均权值
e11=zeros(1,L);%多次测量平均误差
for m=1:trials
v=sqrt(Pv)*randn(L,1,trials);%产生白噪声
u=zeros(L,1,trials);%初始化输入数据
u(1,:,m)=v(1,:,m);%第一个输出信号
for i=2:L;%产生AR输出信号
u(i,:,m)=-a1*u(i-1,:,m)+v(i,:,m);
end
w1=zeros(2,L);
e1=zeros(1,L);
d1=zeros(L,1);
for n=4:L-1%%迭代
w1(:,n+1)=w1(:,n)+mu1*u(n-1:-1:n-M,:,m)*conj(e1(n));
d1(n+1)=w1(:,n+1)'*u(n:-1:n-M+1,:,m);%估计的期望
e1(n+1)=u(n+1,:,m)-d1(n+1);%估计的误差
end
w11=w11+w1;
e11=e11+e1.^2;
end
w11=w11/trials;%多次试验平均均值
e11=e11/trials;%多次试验平均误差
t=1:L;
subplot(2,2,1);
plot(t,w1(1,:),'r',t,w11(1,:),'b',t,w1(2,:),'r',t,w11(2,:),'b');
axis( [0 10000 -0.2 1.1]);
title('LMS算法权值收敛图(M=2)');
xlabel('迭代次数');
ylabel('权值大小');
legend('单次测量','多次测量'); ;
hold on;
subplot(2,2,3);
plot(e11);hold on;
axis( [0 1000 0 12]);
title('多次LMS算法平方误差收敛图');
xlabel('迭代次数');
ylabel('平方误差大小');
hold on;
subplot(2,2,4);
plot(e1.^2);hold on;
axis( [0 1000 0 12]);
title('单次LMS算法平方误差收敛图');
xlabel('迭代次数');
ylabel('平方误差大小');
hold on;
留vchang
不知道你这个问题是否已经解决, 如果还没有解决的话: