仿真题.docx
《仿真题.docx》由会员分享,可在线阅读,更多相关《仿真题.docx(14页珍藏版)》请在冰点文库上搜索。
仿真题
信号处理基础仿真题作业
学号:
S*******57姓名:
贾雪婷
4.17将权向量初始化为
=[10]T,分别使用步长0.015、0.025和0。
05,完成本节的仿真实例。
解:
function[EPP1]=lms2(mu)
%----------产生系统输入白噪声v1(n)---------%
sigma_v1_2=0.27;%方差为0.27
b
(1)=-0.8458;
b
(2)=0.9458;
a
(1)=-(b
(1)+b
(2));
a
(2)=b
(1)*b
(2);
datlen=500;%迭代次数为500,即样本数目为500
P=zeros(2,datlen);
E=zeros(1,datlen);
fori=1:
datlen
rand('state',sum(100*clock));
s=sqrt(sigma_v1_2)*randn(datlen,1);%产生系统输入白噪声
x=filter(1,[1,a],s);%得到信号x(n)
%---------产生输入滤波器的未知信号u(n)和期望响应信号d(n)---------%
sigma_v2_2=0.1;
u=x+sqrt(sigma_v2_2)*randn(datlen,1);
d=filter(1,[1,-b
(1)],s);
%-------LMS迭代算法----------------%
w0=[1;0];%初始化权向量
w=w0;
M=length(w0);%FIR滤波器抽头的个数
N=length(u);
%mu=0.015;
P1=zeros(M,datlen);
forn=M:
N
ui=u(n:
-1:
n-M+1);
y(n)=w'*ui;
e(n)=d(n)-y(n)';
w=w+(mu).*conj(e(n)).*ui;
P1(:
n)=w;
end
P=P+P1;
E=E+e.^2;
end
end
clearall;
closeall;
clc;
[E1P1P11]=lms2(0.015);
[E2P2P12]=lms2(0.025);
[E3P3P13]=lms2(0.05);
g=500;
figure
(1);
plot(conj(E1)'/g);holdon;
plot(conj(E2)'/g);holdon;
plot(conj(E3)'/g);
xlabel('迭代次数');ylabel('MSE');title('学习曲线');
figure
(2);
plot(conj(P1)'/g);holdon;plot(conj(P11)');
xlabel('迭代次数');ylabel('权值');title('步长为0.015');
figure(3);
plot(conj(P2)'/g);holdon;plot(conj(P12)');
xlabel('迭代次数');ylabel('权值');title('步长为0.025');
figure(4);
plot(conj(P3)'/g);holdon;plot(conj(P13)');
xlabel('迭代次数');ylabel('权值');title('步长为0.05');
得到的学习曲线如下:
步长为0.015时权向量收敛曲线:
步长为0.025时权向量收敛曲线:
步长为0.05时权向量收敛曲线:
4.18考虑AR过程
,其差分方程为
,其中
是零均值、方差为
的加性高斯白噪声。
AR参数a1=-0.975,a2=0.95。
(1)产生N=512点的
的样本序列。
(2)令
为二阶线性预测器LP
(2)的输入,在
=0.05,
=0.005的情况下用LMS滤波器来估计w1和w2。
(3)在
(2)的参数条件下,滤波器尽享100次独立实验。
通过平均预测误差
的平均值,计算剩余均方误差和失调参数,并画出学习曲线。
(4)改变
=0.005,其他参数不变,计算剩余均方误差和失调参数,并画出学习曲线。
比较
=0.05和
=0.005时学习曲线的区别。
解:
%---------产生512点样本序列————————%
data_len=512;%样本序列的长度
trials=100;%随机试验的次数
A=zeros(data_len,2);EA=zeros(data_len,1);
B=zeros(data_len,2);EB=zeros(data_len,1);
form=1:
trials
a1=-0.975;
a2=0.95;
sigma_v_2=0.0731;
v=sqrt(sigma_v_2)*randn(data_len,1,trials);%产生v(n)
u0=[00];
num=1;
den=[1a1a2];
Zi=filtic(num,den,u0);%滤波器的初始条件
u=filter(num,den,v,Zi);%产生样本序列u(n)
%----------LMS迭代算法-----------%
mu1=0.05;
mu2=0.005;
w1=zeros(2,data_len);
w2=zeros(2,data_len);
e1=zeros(data_len,1);
e2=zeros(data_len,1);
d1=zeros(data_len,1);
d2=zeros(data_len,1);
forn=3:
data_len-1
w1(:
n+1)=w1(:
n)+mu1*u(n-1:
-1:
n-2,:
m)*conj(e1(n));
w2(:
n+1)=w2(:
n)+mu2*u(n-1:
-1:
n-2,:
m)*conj(e2(n));
d1(n+1)=w1(:
n+1)'*u(n:
-1:
n-1,:
m);
d2(n+1)=w2(:
n+1)'*u(n:
-1:
n-1,:
m);
e1(n+1)=u(n+1,:
m)-d1(n+1);
e2(n+1)=u(n+1,:
m)-d2(n+1);
end
A=A+conj(w1)';
EA=EA+e1.^2;
B=B+conj(w2)';
EB=EB+e2.^2;
end
figure
(1);
plot(A/trials);holdon;
plot(conj(w1)');
xlabel('迭代次数');ylabel('权值');title('步长为0.05');
figure
(2);
plot(B/trials);holdon;
plot(conj(w2)');
xlabel('迭代次数');ylabel('权值');title('步长为0.005');
figure(3);
plot(EA/trials,'*');holdon;
plot(EB/trials,'-');
xlabel('迭代次数');ylabel('MSE');title('学习曲线');
输出结果如下:
步长为0.05时权向量收敛曲线:
步长为0.005时权向量收敛曲线:
步长分别为0.05和0.005时100次独立实验的学习曲线:
计算剩余误差和失调参数:
wopt=zeros(2,trials);
Jmin=zeros(1,trials);
sum_eig=zeros(trials,1);
form=1:
trials;
rm=xcorr(u(:
:
m),'biased');
R=[rm(512),rm(513);rm(511),rm(512)];
p=[rm(511);rm(510)];
wopt(:
m)=R\p;
[v,d]=eig(R);
Jmin(m)=rm(512)-p'*wopt(:
m);
sum_eig(m)=d(1,1)+d(2,2);
end
sJmin=sum(Jmin)/trials;
e1_100trials_ave=sum(e1)/trials;
e2_100trials_ave=sum(e2)/trials;
Jex1=e1_100trials_ave-sJmin;
Jex2=e2_100trials_ave-sJmin;
sum_eig_100trials=sum(sum_eig)/100;
Jexfin=mu1*sJmin*(sum_eig_100trials/(2-mu1*sum_eig_100trials));
Jexfin2=mu2*sJmin*(sum_eig_100trials/(2-mu2*sum_eig_100trials));
M1=Jexfin/sJmin
M2=Jexfin2/sJmin
结果分别为:
M1=0.0502
M2=0.0048
4.19已知期望信号
和观测信号
分别由式给出,其中,
=0.5,N=4。
用LMS算法实现噪声中单频信号的估计。
FIR滤波器权系数个数为M=2,选择适当的步长,给出单次实验和100次独立实验的学习曲线,以及权系数在单次实验和100次独立实验的变化曲线。
解:
%----------产生观测信号和期望信号--------------%
trials=100;%随机试验的次数
data_len=1000;%样本数目
n=1:
data_len;
A1=zeros(data_len,2);
EA1=zeros(data_len,1);
fori=1:
trials
sigma_v_2=0.5;
phi=2*pi*rand(1,1);%随机相位
signal=sin(pi/2*n'+phi);%信号s(n)
u=signal+sqrt(sigma_v_2)*randn(data_len,1);%观测信号u(n)
d=2*cos(pi/2*n'+phi);%期望响应信号d(n)
%---------LMS迭代算法-----------------%
mu=0.015;
M=2;
w=zeros(M,data_len);
e=zeros(data_len,1);
y=zeros(data_len,1);
form=2:
data_len-1
w(:
m+1)=w(:
m)+mu*u(m:
-1:
m-1)*conj(e(m));
y(m+1)=w(:
m+1)'*u(m+1:
-1:
m);
e(m+1)=d(m+1)-y(m+1);
end
A1=A1+conj(w)';
EA1=EA1+e.^2;
end
figure
(1);
plot(A1/trials);holdon;
plot(conj(w)');
xlabel('迭代次数');ylabel('权值');title('步长为0.015');
figure
(2);
plot(e);
xlabel('迭代次数');ylabel('MSE');title('单次学习曲线');
figure(3);
plot(EA1/trials);
xlabel('迭代次数');ylabel('MSE');title('100学习曲线');
输出结果为:
单次实验和100次独立实验的时权向量收敛曲线:
单次实验的学习曲线:
100次独立实验的学习曲线: