数字信号处理实验报告66566.docx

上传人:b****7 文档编号:9501936 上传时间:2023-02-05 格式:DOCX 页数:23 大小:231.51KB
下载 相关 举报
数字信号处理实验报告66566.docx_第1页
第1页 / 共23页
数字信号处理实验报告66566.docx_第2页
第2页 / 共23页
数字信号处理实验报告66566.docx_第3页
第3页 / 共23页
数字信号处理实验报告66566.docx_第4页
第4页 / 共23页
数字信号处理实验报告66566.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数字信号处理实验报告66566.docx

《数字信号处理实验报告66566.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报告66566.docx(23页珍藏版)》请在冰豆网上搜索。

数字信号处理实验报告66566.docx

数字信号处理实验报告66566

数字信号处理

实验报告

实验一序列的傅立叶变换

一、实验目的

1.进一步加深理解DFS,DFT算法的原理;

2.研究补零问题;

3.快速傅立叶变换(FFT)的应用。

二、实验步骤

1.复习DFS和DFT的定义,性质和应用;

2熟悉MATLAB语言的命令窗口、编程窗口和图形窗口的使用;

3利用提供的程序例子编写实验用程序;

4.按实验内容上机实验,并进行实验结果分析;

5.写出完整的实验报告,并将程序附在后面。

三、实验内容

1.周期方波序列的频谱

已知

试画出下面四种情况下的的幅度频谱,并分析补零后,对信号频谱的影响。

2.有限长序列x(n)的DFT

(1)取x(n)(n=0:

10)时,画出x(n)的频谱X(k)的幅度;

(2)将

(1)中的x(n)以补零的方式,使x(n)加长到(n:

0~100)时,画出x(n)的频谱X(k)的幅度;

(3)取x(n)(n:

0~100)时,画出x(n)的频谱X(k)的幅度。

利用FFT进行谱分析

3.已知:

模拟信号

以t=0.01n(n=0:

N-1)进行采样,求N点DFT的幅值谱。

请分别画出N=45;N=50;N=55;N=60时的幅值曲线。

四、实验数据分析

1.周期方波序列的频谱分析

首先定义一个功能函数dfs

function[Xk]=dfs(xn,N)

n=[0:

1:

N-1];

k=[0:

1:

N-1];

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^nk;

Xk=xn*WNnk;

(1)L=5,N=20;

%题1.

(1)

L=5;N=20;%对于

(2),(3),(4)问,只要修改L,N的数值就好。

n=1:

N;

xn=[ones(1,L),zeros(1,N-L)];

Xk=dfs(xn,N);

magXk=abs([Xk(N/2+1:

N)Xk(1:

N/2+1)]);

k=[-N/2:

N/2];

figure

(1)

subplot(2,1,1);

stem(n,xn);xlabel('n');ylabel('xtide(n)');

title('DFSofSQ.wave:

L=5,N=20');

subplot(2,1,2);

stem(k,magXk);

axis([-N/2,N/2,0,16]);

xlabel('k');ylabel('Xtide(k)');

(2)L=5,N=40;

(3).L=5,N=60

(4)L=7,N=60;

结果分析:

虽然周期序列不存在FT,但是一个周期序列可以利用其DFS系数X(k)表示它的频谱分布规律,从以上各频谱图可以看出,随着补零点数的增加,周期序列的谐波次数越来越多,其频谱的包络线越来越平滑连续,更能反映幅度值随时间的变化。

2.有限长序列的DFT

(1)

%题2-

(1)

n=0:

10;

xn=cos(0.48*pi*n)+cos(0.52*pi*n);

N=11;

Xk=fft(xn,N);%序列x(n)的N点DFT

k=0:

N-1;wk=2*k/N;

subplot(1,1,1);stem(wk,abs(Xk),'.');

title('频谱X(K)的幅度');

xlabel('ω/π');ylabel('幅度');

(2)

%题2-2

M=10;

N=100;

n=1:

M;

xn=cos(0.48*pi*n)+cos(0.52*pi*n);

n1=[0:

1:

N-1];y1=[xn(1:

1:

M),zeros(1,N-M)];

figure

(1)

subplot(2,1,1);

stem(n1,y1);xlabel('n');ylabel('x(n)');

title('序列x(n),0<=n<=100');

axis([0,N,-2.5,2.5]);

Y1=fft(y1);

magY1=abs(Y1(1:

1:

N/2+1));

k1=0:

1:

N/2;

w1=2*pi/N*k1;

subplot(2,1,2);

title('x(n)的幅频特性曲线');

stem(w1/pi,magY1);

axis([0,1,0,60]);

xlabel('\omega/\pi');

ylabel('|X(K)|');

(3)

%Example2-3

M=10;

N=100;

n=0:

M;

xn=cos(0.48*pi*n)+cos(0.52*pi*n);

n1=[0:

1:

N-1];y1=[xn(1:

1:

M),zeros(1,N-M)];

figure

(1)

subplot(2,2,1);

stem(n1,y1);xlabel('n');ylabel('x(n)');

title('序列x(n),0<=n<=100');

axis([0,N,-2.5,2.5]);

YK=fft(y1);

Y=abs(Y1(1:

1:

N/2+1));

k1=0:

1:

N/2;

w1=2*pi/N*k1;

subplot(2,2,3);

stem(w1/pi,Y);

title('x(n)的幅频特性曲线');

axis([0,1,0,60]);

xlabel('\omega/\pi');

ylabel('|X(K)|');

subplot(2,2,4);

plot(angle(Y1));

title('x(n)的相频特性曲线');

xlabel('\omega/\pi');

ylabel('phi(\omega)');

结果分析:

由上述仿真图可得,随着n取值范围的增大,其频谱在[0,2π]上的采样间隔越来越小,采样点越来越多。

采样点越多,其DFS频谱越接近FT的频谱。

其相频特性曲线呈现周期性变化。

3.问题三

%题3

%N=45

figure

(1)

subplot(2,2,1)

N=45;n=0:

N-1;t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

stem(q,abs(y))

title('DFTN=45')

%N=50

subplot(2,2,2)

N=50;n=0:

N-1;t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

stem(q,abs(y))

title('DFTN=50')

%N=55

subplot(2,2,3)

N=55;n=0:

N-1;t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

stem(q,abs(y))

title('DFTN=55')

%N=60

subplot(2,2,4)

N=60;n=0:

N-1;t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

stem(q,abs(y))

title('DFTN=60')

结果分析:

由上述仿真图可得,随着N取值的增大,其频谱在[0,2π]上的采样间隔越来越小,采样点越来越多。

采样点越多,其DFS频谱越接近FT的频谱,幅值曲线越来越清晰,更能准确反应幅值随时间的变化规律。

五、心得体会

对于周期序列的离散傅里叶变换,通过matlab的模拟,可以更好的了解掌握序列采样间隔对其采样频谱的影响。

在实验过程中,学习如何使用matlab程序语言解决问题,是很有价值的。

让我对matlab的使用更为熟练。

实验二用双线性变换法设计IIR数字滤波器

一、实验目的

1.熟悉用双线性变换法设计IIR数字滤波器的原理与方法;

2.掌握数字滤波器的计算机仿真方法;

3、通过观察对实际心电图的滤波作用,获得数字滤波器的感性知识。

二、实验内容

1.用双线性变换法设计一个巴特沃斯低通IIR滤波器,设计指标参数为:

在通带内频率低于0.2π时,最大衰减小于1dB;在阻带内[0.3π,π]频率区间上,最小衰减大于15dB

2.以0.2π为采样间隔,打印出数字滤波器在频率区间[0,0.2π]上的幅值响应曲线。

3.用所设计的滤波器对实际的心电图信号采样序列x(n)=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];)

进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。

三.实验步骤

1.复习有关巴特沃斯模拟滤波器设计和双线性变换法设计IIR滤波器的内容

2.参考例子程序用MATLAB语言编写仿真实验用程序;

3.在通用计算机上运行仿真程序

4.写出完整的实验报告并回答思考题。

四.实验数据分析

1.巴特沃斯低通IIR滤波器的设计

由题可得,数字低通技术指标为

wp=0.2πrad,αp=1dB,ws=0.3πrad,αs=15dB

若T=1s,预畸变校正计算相应的模拟低通的技术指标为

Ωp=1dB,Ωs=15dB

通过计算可得阶数N=5.3056,向上取整的N=6.

Ωc=0.7663rad/s,这样保证阻带技术指标满足要求,通带指标有富余。

以下是通过matlab实现的巴特沃斯低通IIR滤波器的设计

%1

T=1;Fs=1/T;

wpz=0.2;wsz=0.3;

wp=2*tan(wpz*pi/2);

ws=2*tan(wsz*pi/2);rp=1;rs=15;%预畸变校正转换指标

[N,wc]=buttord(wp,ws,rp,rs,'s');%设计过渡模拟滤波器

[B,A]=butter(N,wc,'s');

[Bz,Az]=bilinear(B,A,Fs);%用双线性变换法转换成数字滤波器

fk=0:

1/512:

1;

wk=2*pi*fk;

Hk=freqs(B,A,wk);

figure

(1);

subplot(2,1,1);

plot(fk,20*log10(abs(Hk)));

gridon;

title('模拟滤波器幅值响应曲线');

xlabel('\omega/\pi');

ylabel('幅度(dB)');

axis([0,1,-100,5]);

[Nd,wdc]=buttord(wpz,wsz,rp,rs);%调用buttord和butter直接设计数字滤波器

[Bz,Az]=butter(N,wdc);

wk=0:

pi/512:

pi;

Hz=freqz(Bz,Az,wk);

subplot(2,1,2);

plot(wk/pi,20*log10(abs(Hz)));

gridon;

title('数字滤波器幅值响应曲线');

xlabel('\omega/\pi');

ylabel('幅度(dB)');

axis([0,1,-100,5]);

2.以0.2π为采样间隔,打印出数字滤波器在频率区间[0,0.2π]上的幅值响应曲线。

在第一问的基础上加上下面的程序

%2

figure

(2);

freqz(Bz,Az,[0:

0.02*pi:

0.2*pi])

3.

在第一问程序的基础上加上如下程序即可

figure(3);

x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];

subplot(2,2,1);

n=0:

55;stem(n,x,'.');

title('x(n)的脉冲响应');

xlabel('n');

ylabel('x(n)');

A=0.09036;

b1=[A,2*A,A];

a1=[1,-1.2686,0.7051];

h1=filter(b1,a1,x);

[H1,w]=freqz(b1,a1,100);

b2=[A,2*A,A];

a2=[1,-1.0106,0.3583];

h2=filter(b2,a2,h1);

[H2,w]=freqz(b2,a2,100);

b3=[A,2*A,A];

a3=[1,-0.9044,0.2155];

h3=filter(b3,a3,h2);

[H3,w]=freqz(b3,a3,100);

subplot(2,2,2);stem(n,h3,'.');

xlabel('n');ylabel('y(n)');

title('通过滤波器H1(z),H2(z),H3(z)后的y3(n)函数');

subplot(2,2,3);

H4=H1.*(H2);

H=H4.*(H3);

mag=abs(H);

db=20*log10((mag+eps)/max(mag));

plot(w/pi,db);xlabel('ω/π');

ylabel('20log[Ha3(ejw)]');

title('通过滤波器H1(z),H2(z),H3(z)后的对数频率响应20log[Ha3(ejw)]函数');

grid;

figure(4);

N=1024;n=0:

N/2-1;

Xk=fft(x,N);AXk=abs(Xk(1:

N/2));

f=(0:

N/2-1)*Fs/N;f=f/Fs;

subplot(211);plot(f,AXk);title('x(n)的频谱');

xlabel('f');ylabel('|X(k)|');

axis([0,0.5,0,400]);

五、思考题

用双线性变换设计数字滤波器的过程中,下面变换公式的T值的取值,对设计结果是否有影响?

为什么?

 

虽然采用双线性变换法设计数字滤波器不会产生混叠现象,T得取值可以任选。

双线性变换法具有非线性,T小一些,非线性的影响也就少一些。

六、心得体会

通过这次实验,我学会了如何使用matlab语言来实现IIR低通滤波器的设计,同时对于其数字低通技术指标的就算有了进一步的认识体会。

在做实验的过程中,面对种种困难,但是却在解决困难的过程中收获了很多。

是一个很有意义的经历。

实验三用窗函数法设计FIR数字滤波器

一.实验目的

1.掌握用窗函数法设计FIR数字滤波器的原理和方法。

2.熟悉线性相位FIR数字滤波器特性。

3.了解各种窗函数对滤波特性的影响。

二.实验原理

如果所希望的滤波器的理想频率响应函数为Hd(ejω),则其对应的单位脉冲响应为

用窗函数w(n)将hd(n)截断,并进行加权处理,得到:

h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数H(

)为

如果要求线性相位特性,则h(n)还必须满足:

根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。

要根据所设计的滤波特性正确选择其中一类。

例如,要设计线性相位低通特性,可选择h(n)=h(N-1-n)一类,而不能选h(n)=-h(N-1-n)一类。

三.实验内容

1.用MATLAB产生各种窗函数

%窗函数

subplot(4,2,1)

m=200;

a=boxcar(m);%矩形窗

m=1:

200;

plot(m,a)

title('矩形窗');

subplot(4,2,2)

m=200;

b=bartlett(m)%三角窗

m=1:

200;

plot(m,b)

title('三角窗');

subplot(4,2,3)

m=200;

c=hanning(m);%汉宁窗

m=1:

200;

plot(m,c)

title('汉宁窗');

subplot(4,2,4)

m=200;

d=hamming(m);%哈明窗

m=1:

200;

title('哈明窗');

plot(m,d)

subplot(4,2,5)

m=200;

e=blackman(m);%布莱克曼窗

m=1:

200;

plot(m,e)

title('布莱克曼窗');

subplot(4,2,6)

m=200;

f=kaiser(m,7.865);%凯塞窗

m=1:

200;

plot(m,f)

title('凯塞窗');

subplot(4,2,7)

plot(m,a,'r*',m,b,'g+',m,c,'y*',m,d,'b.',m,e,'y.',m,f,'k.')

title('各种窗函数');

2.利用窗函数设计FIR滤波器

设计具有下列指标p=0.25,Rp=0.25dB,s=0.3,Rp=50dB的低通数字滤波器。

由已知条件Rp=50dB,通过计算可知应该选择哈明窗,哈明窗的Rps=53dB,选择窗函数时应该选择Rps>=50的,因而选择离50dB的哈明窗。

通过Bt=6.6π/N,Bt=ws-wp得到阶数N。

以下是利用matlab来实现FIR滤波器的设计。

%窗函数法设计FIR数字滤波器

wp=pi*0.25;ws=pi*0.3;

%Rs=50dB,所以选择哈明窗

DB=ws-wp;%计算过渡带宽度

N=ceil(6.6*pi/DB);

%计算哈明窗所需长度N

wc=(wp+ws)/2/pi;

%计算理想低通滤波器通带截止频率(关于π归一化)

hn=fir1(N,wc);

%调用fir1计算低通数字滤波器

%以下是绘图部分

figure

(2)

M=1024;

hk=fft(hn,M);

n=0:

N;

subplot(1,2,1);stem(n,hn,'.');

%绘制序列h(n)

xlabel('n');ylabel('h(n)');

title('数字滤波器h(n)');

k=1:

M/2;

w=2*(0:

M/2-1)/M;

subplot(1,2,2);plot(w,20*log10(abs(hk(k))));

%绘制损耗函数曲线

axis([0,1,-80,5]);xlabel('ω/π');ylabel('20lg|Hg(ω)|');

title('h(n)的损耗函数曲线');

gridon;

结果分析:

根据损耗函数可得,利用哈明窗实现了题目所要求的FIR低通滤波器。

满足p=0.25,Rp=0.25dB,s=0.3,Rp=50dB。

因而选择哈明窗可以很好的满足所需要求。

四、心得体会

本次实验是使用窗函数来设计FIR滤波器,在MATLAB中只需要将给定的参数输入到函数中即可马上得到处结果。

通过本次实验,我对使用MATLAB快速设计滤波器的流程更为熟练,同时,也由衷地感叹MATLAB的功能强大之处,它让我们在设计时能节约大量的时间。

根据输入的参数以及结果,使我对课本上的设计滤波器的知识更为了解。

更加巩固了理论知识。

 

WelcomeTo

Download!

!

!

 

欢迎您的下载,资料仅供参考!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1