数字信号处理.docx
《数字信号处理.docx》由会员分享,可在线阅读,更多相关《数字信号处理.docx(15页珍藏版)》请在冰豆网上搜索。
![数字信号处理.docx](https://file1.bdocx.com/fileroot1/2023-2/23/674d63c8-857b-4eff-b80a-2b355e1c656e/674d63c8-857b-4eff-b80a-2b355e1c656e1.gif)
数字信号处理
北京航空航天大学
《数字信号处理》
实验报告
姓名:
学号:
专业:
自动化
培养院系:
自动化科学与电气工程学院
撰写日期:
2012年11月11日
实验一:
数字信号的滑动平均滤波
1、仿真实验的程序代码:
m1=3;m2=1;
n=1:
100;
x1=1.0*sin(0.1*pi*n);
x2=rand(1,100)*0.6-0.3;
x=x1+x2;
nh=-m2:
m2;
h=ones(1,m1)/m1;
nys=nh
(1)+n
(1);
nyf=nh(end)+n(end);
y=conv(h,x);
ny=nys:
nyf;
subplot(3,1,1);
stem(n,x1,'.');
axis([0,100,-1.5,1.5]);
title('原始正弦信号波形');
xlabel('n');ylabel('x1');
subplot(3,1,2);
stem(n,x,'.');
axis([0,100,-1.5,1.5]);
title('受污染正弦信号波形');
xlabel('n');ylabel('x');
subplot(3,1,3);
stem(ny,y,'.');
axis([0,100,-1.5,1.5]);
title('三点滑动平均处理');
xlabel('nys');ylabel('y');
注:
五点滑动平滑滤波的程序只需改动参数m1和m2即可。
2、仿真实验结果及分析:
三点和五点:
由滑动平均处理后的波形可以看出,滑动平均滤波器对输入进行平滑作用,相当于一个低通滤波器,滤除高频分量,而保留低频分量。
同时滑动平均法的参数选取将直接影响对数据的平滑效果。
如参数即平均的项数取得较大,则局部平均的相邻数据偏多,尽管平滑作用较大,有利于抑制频繁随机起伏的随机误差,但也可能将高频变化的确定性成分一起被平均而削弱;反之,若参数取得较小,则可能对低频随机起伏未作平均而减小,不利于抑制随机误差。
因此,在按平滑的目的及数据的实际变化情况,应当合理选取滑动平均的参数。
实验二:
数字信号的卷积运算
1、仿真实验的程序代码:
function[y]=conv1(x,h)
lx=length(x);
lh=length(h);
x1=[zeros(1,lh-1),x,zeros(1,lh)];
hf=fliplr(h);
fori=1:
(lh+lx-1)
h1=[zeros(1,i-1),hf,zeros(1,lx+lh-i)];
y(i)=x1*h1';
end
h=[3,2,1,-2,1,0,4,0,3];
x=[1,-2,3,-4,3,2,1];
nh=1:
length(h);
nx=1:
length(x);
y=conv1(h,x);
y1=conv(h,x);
ny=1:
length(y);
ny1=1:
length(y1);
subplot(4,1,1);
stem(nh,h,'.');
axis([0,20,-20,20]);
title('信号h原始波形');
xlabel('n');ylabel('h');
subplot(4,1,2);
stem(nx,x,'.');
axis([0,20,-20,20]);
title('信号x原始波形');
xlabel('n');ylabel('x');
subplot(4,1,3);
stem(ny,y,'.');
axis([0,20,-20,20]);
title('自编卷积函数结果');
xlabel('n');ylabel('y');
subplot(4,1,4);
stem(ny1,y1,'.');
axis([0,20,-20,20]);
title('系统卷积函数计算结果');
xlabel('n');ylabel('y1');
2、仿真实验结果及分析:
对比自己编写的conv程序和matlab自带的程序结果对比,可知程序编写正确。
实验三:
利用DFT进行频谱计算
1、仿真实验的程序代码:
functionxk=dft_new(xn,N)
l=length(xn)
ifl~=N
xn=[xn,zeros(1,N-1)];
end
w=exp(-j*2*pi/N);
fork=1:
N
xk(k)=0;
forn=1:
N
xk(k)=xk(k)+xn(n)*(w^((k-1)*(n-1)));
end
end
n=1:
120;N=120;
x1=1.0*sin(0.1*pi*n);
x2=1.0*sin(0.4*pi*n);
x=x1+x2;
xk1=dft_new(x1,N);
xk2=dft_new(x2,N);
xk=dft_new(x,N);
xkk=fft(x,N);
wk=2*n/120;
subplot(4,2,1);
stem(wk,abs(xk1),'.');
axis([0,2,0,100]);
title('x1幅频特性图');
xlabel('w/pi');ylabel('幅度');
subplot(4,2,2);
stem(wk,angle(xk1),'.');
axis([0,2,-5,5]);
title('x1相频特性图');
xlabel('w/pi');ylabel('相位');
subplot(4,2,3);
stem(wk,abs(xk2),'.');
axis([0,2,0,100]);
title('x2幅频特性图');
xlabel('w/pi');ylabel('幅度');
subplot(4,2,4);
stem(wk,angle(xk2),'.');
axis([0,2,-5,5]);
title('x2相频特性图');
xlabel('w/pi');ylabel('相位');
subplot(4,2,5);
stem(wk,abs(xk),'.');
axis([0,2,0,100]);
title('x幅频特性图');
xlabel('w/pi');ylabel('幅度');
subplot(4,2,6);
stem(wk,angle(xk),'.');
axis([0,2,-5,5]);
title('x相频特性图');
xlabel('w/pi');ylabel('相位');
subplot(4,2,7);
stem(wk,abs(xkk),'.');
axis([0,2,0,100]);
title('系统自带函数x幅频特性图');
xlabel('w/pi');ylabel('幅度');
subplot(4,2,8);
stem(wk,angle(xkk),'.');
axis([0,2,-5,5]);
title('系统自带函数x相频特性图');
xlabel('w/pi');ylabel('相位');
2、仿真实验结果及分析:
由幅频特性叠加后函数可以显示两种成分的幅频特性,知函数编写应该是正确的,但是不知道为什么相频特性和系统自带函数相差特别大。
实验四:
利用FFT实现循环卷积
1、仿真实验的程序代码:
x1=ones(1,15);
x2=ones(1,20);
X11=fft(x1,20);
X21=fft(x2,20);
Y1=X11.*X21;
y1=ifft(Y1,20);
X12=fft(x1,34);
X22=fft(x2,34);
Y2=X12.*X22;
y2=ifft(Y2,34);
X13=fft(x1,40);
X23=fft(x2,40);
Y3=X13.*X23;
y3=ifft(Y3,40);
y=conv(x1,x2);
n1=1:
length(y1);
subplot(4,1,1);
stem(n1,y1,'.');
axis([0,40,0,20]);
title('长度L=20的循环卷积');
xlabel('n');ylabel('y1');
n2=1:
length(y2);
subplot(4,1,2);
stem(n2,y2,'.');
axis([0,40,0,20]);
title('长度L=34的循环卷积');
xlabel('n');ylabel('y2');
n3=1:
length(y3);
subplot(4,1,3);
stem(n3,y3,'.');
axis([0,40,0,20]);
title('长度L=40的循环卷积');
xlabel('n');ylabel('y3');
n4=1:
length(y);
subplot(4,1,4);
stem(n4,y,'.');
axis([0,40,0,20]);
title('系统conv函数计算出来的卷积');
xlabel('n');ylabel('y4');
2、仿真实验结果及分析:
由图可知,当L≥34(即N+M-1时),循环卷积可以正确的计算线性卷积。
而当L<34时,发生了时域混叠,此时循环卷积后的波形不同于线性卷积的波形。
实验五:
利用FFT进行频谱分析
1、仿真实验的程序代码:
f=100;
fs=800;
Ts=1/fs;
n=1:
800*0.25;
y=2*sin(2*pi*f*n*Ts)+0.5*randn(size(n));
Y1=fft(y,200);
Y2=fft(y,400);
Y3=fft(y,512);
n1=1:
200;
n2=1:
400;
n3=1:
512;
wk1=2*n1/200;
wk2=2*n2/400;
wk3=2*n3/512;
subplot(4,1,1);
stem(n,y,'.');
axis([0,200,-3,3]);
title('原始序列的波形');
xlabel('n');ylabel('y');
subplot(4,1,2);
stem(wk1,abs(Y1),'.');
axis([0,2,0,250]);
title('L=200的相频特性图');
xlabel('w/pi');ylabel('幅度');
subplot(4,1,3);
stem(wk2,abs(Y2),'.');
axis([0,2,0,250]);
title('L=400的相频特性图');
xlabel('w/pi');ylabel('幅度');
subplot(4,1,4);
stem(wk3,abs(Y3),'.');
axis([0,2,0,250]);
title('L=512的相频特性图');
xlabel('w/pi');ylabel('幅度');
2、仿真实验结果及分析:
分析实验结果可知,快速傅里叶变换的结果是将原信号中包含的频率成分分析出来,即使原信号在采样时叠加有随机噪声信号也不影响傅里叶变换的结果。
另外采样频率一定时,采样点数越多越好,换种话说就是采样时间越长越好,这样fs/N就越小,也就是频域的频率分辨率越大,FFT结果就越准确。
采样点数最好是2的整数次幂,可以加快FFT运算。
实验六:
加窗设计FIR数字滤波器
1、仿真实验的程序代码:
N=51;
t=(N-1)/2;
wc=0.5*pi;
fori=1:
50
if(i-t)==0
hd(i+1)=wc/pi;
else
hd(i+1)=sin(wc*(i-t))/pi/(i-t);
end
end
n=0:
1:
50;
hd
(1)=sin(wc*(0-t))/pi/(0-t);
%wn=ones(1,51);%矩形窗
wn=(0.54-0.46*cos(2*pi*n/(N-1)));%哈明窗
hn=hd.*wn;
[H,w]=freqz(hn,1);
[W,w]=freqz(wn,1);
subplot(3,2,1);
stem(n,wn,'.');
axis([0,60,0,1]);
title('哈明窗窗口序列');
subplot(3,2,2);
plot(w/pi,20*log10((abs(W)/abs(max(W)))));
title('哈明窗频谱图');
subplot(3,2,3);
stem(n,hn,'.');
axis([0,60,-0.6,0.6]);
title('哈明窗FIR单位脉冲响应');
subplot(3,2,4);
plot(w/pi,20*log10((abs(H)/abs(max(H)))));
title('哈明窗FIR单位脉冲响应幅频图');
subplot(3,2,5);
plot(w,angle(H));
title('哈明窗FIR单位脉冲响应相频图');
2、仿真实验结果及分析:
矩形窗:
哈明窗波形:
由上图可知,矩形窗的主瓣比较集中,而旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。
哈明窗,又称改进升余弦窗,可以看作是3个矩形时间窗的频谱之和,而其中两项相对于第一个谱窗向左、右各移动2π/N,从而使旁瓣互相抵消,消去高频干扰和漏能。
可以看出,哈明窗主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗。