ADSP仿真报告Word格式.docx
《ADSP仿真报告Word格式.docx》由会员分享,可在线阅读,更多相关《ADSP仿真报告Word格式.docx(12页珍藏版)》请在冰点文库上搜索。
x1(n)=sin(n*0.05*pi+rand(1,1)*2*pi);
end;
noise=randn(1,Num);
noise=(noise-mean(noise))/std(noise);
x2=filter([1,2,1],1,noise);
2、自相关函数
%%自相关函数
clc;
clearall;
Num=200;
[x1,x2]=GenerateSignal(Num);
C_x1=xcorr(x1);
C_x2=xcorr(x2);
Length=length(C_x1);
x_lb=1-Num;
x_ub=Length-Num;
%%画出自相关函数图形
figure
(1)
plot(x_lb:
x_ub,C_x1,'
-r'
);
%%axis([-55-5050]);
holdon;
x_ub,C_x2,'
-b'
legend('
输入信号x1(n)的自相关函数'
'
输入信号x2(n)的自相关函数'
2);
gridon;
3、LMS算法程序
%%LMS自适应算法
%%信号点数
x=x1+x2;
%%待处理信号x(n)
D=1;
%%D为选取的延时
r=[zeros(1,D),x];
%%序列x前加D个零,即延时D
x=[xzeros(1,D)];
%%序列x后加D个零
N=16;
%%滤波器的阶数
u=0.0003;
%%收敛参数
Length=length(r);
%%延时后向量的长度
y=zeros(1,Length);
%%初始化数据信号y(n)
w=zeros(1,N);
%%初始化权系数矩阵
e=zeros(1,Length);
%%初始化输出信号e(n)
%%LMS自适应
forn=N:
Length;
temp1=r(n:
-1:
n-N+1);
y(n)=w*temp1'
;
e(n)=x(n)-y(n);
w=w+2*u.*e(n).*temp1;
end
%%输入信号x1(n)与输出信号y(n)的比较图
t=1:
%%横坐标
plot(t,x1(1:
Num),'
%%axis([150200-33]);
plot(t,y(1:
输入信号x1(n)'
输出信号y(n)'
%%输入信号x2(n)与输出信号e(n)的比较图
figure
(2)
plot(t,x2(1:
%%axis([49005000-33]);
plot(t,e(1:
输入信号x2(n)'
输出信号e(n)'
四、程序输出图形
图2自相关函数
图3输入信号x1(n)与输出信号y(n)
图4输入信号x2(n)与输出信号e(n)
五、分析
由图2可以得到,当n=1的时候,对于窄带信号来说,可以认为仍然是相关的,而对于宽带噪声信号来说,可以认为不相关,所以时间间隔我们取1,然后滤波器阶数选为16以及收敛参数选为0.0003时LMS自适应可以得到还不错的结果。
由图3和图4我们能够看到,自适应滤波器有效地分离了有用信号与噪声信号,也就是有用信号得到了谱线增强。
4.25题
一、信号模型
,n=0,1,2,…,24;
是方差为1的复白噪声。
二、算法模型
1、PHD算法
a.根据取样自相关函数
求自相关矩阵R(x)。
b.根据特征方程求R(x)的特征值及特征向量,得到最小特征值的特征矢量。
c.根据公式
,得到正弦波的估计频率
和
。
2、MUSIC算法
a.先求自相关矩阵及其特征值和特征向量。
b.根据公式
,得到估计频率。
三、算法实现程序
1、PHD算法程序
a、信号产生函数
functionSignal=GenerateSignal(Var)
%%Var为方差
m=sqrt(-1);
%%复数j
sd=sqrt(Var);
%%标准差
n=0:
24;
x1=exp(m*2*pi*0.5*n)+exp(m*(2*pi*0.52*n+(pi/4)));
%%方差为Var的白噪声
v=randn(1,25);
v=(v-mean(v))/std(v);
v=sd*v;
%%产生信号
Signal=x1+v;
b、自相关函数
functionRx=Autocorrelation(xn,N)
%%求自相关矩阵
fork=0:
N-1
s=0;
forn=1:
N-k,
s=s+conj(xn(n))*xn(n+k);
end
rxx(1,k+1)=(1/N)*s;
Rx=toeplitz(rxx(1,1:
N));
c、PHD算法
N=3;
%%样本阶数
fstep=0.01;
fstart=0;
fend=1;
f=fstart:
fstep:
fend;
Var=1;
xn=GenerateSignal(Var);
%%产生x(n)
Rx=Autocorrelation(xn,N);
%%求自相关矩阵
[VD]=eig(Rx);
%%得到特征矢量与特征值
%%降序排列特征值特征矢量
diag(D);
[AI]=sort(diag(D),'
descend'
fori=1:
N;
V1(:
i)=V(:
I(i));
%%PHD算法的功率谱估计
Pphdf=zeros(1,1/fstep+1);
ei=zeros(1,N);
length(f)
forj=1:
N
ei(j)=exp(-2*pi*(j-1)*f(i)*m);
end;
sum=abs(ei*V1(:
N))^2;
Pphdf(1,i)=10*log10(1/sum);
%%功率谱的估计图
plot(f.*2*pi,Pphdf);
title('
基于PHD算法的功率谱估计'
)
ylabel('
功率谱幅度(dB)'
xlabel('
频率(w)'
2、MUSIC算法程序
c、MUSIC算法
N=12;
M=2;
fstep=0.001;
%%MUSIC算法的功率谱估计
Pmusicf=zeros(1,1/fstep+1);
sum=0;
fork=1:
N-M
sum=sum+abs(ei*V1(:
k+M))^2;
Pmusicf(1,i)=10*log10(1/sum);
plot(f.*2*pi,Pmusicf);
基于MUSIC算法的功率谱估计'
四、程序输出图形
图5基于PHD算法的功率谱估计
图6基于MUSIC算法的功率谱估计
从图形上看,MUSIC算法的估计更准确,PHD算法的估计偏差较大,这是与他们的估计特性有关。
PHD算法和MUSIC算法都是特征分解频率估计。
但是,自相关矩阵的阶数不同,PHD算法需要的阶数是M+1,也就是说PHD的估计总是使用特征值最小的对应的特征向量进行估计,而MUSIC算法需要的阶数越大越精确,而且在实际估计过程中需要选择比PHD算法更加高的分辨率,比如有几次仿真结果的出来的两个峰重合在了一起,两种算法的谱估计方法不同,各有优缺点。