南邮dsp实验报告

更新时间:2024-06-03 11:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京邮电大学

实 验 报 告

实验名称:离散时间信号与系统的时、频域表示

离散傅立叶变换和z变换

数字滤波器的频域分析和实现

数字滤波器的设计

课程名称 数字信号处理A(双语)

班级学号________ 姓 名_____________

开课时间 201 /201 学年, 第 学期

实验一:离散时间信号与系统的时、频域表示

一、实验目的和任务:

熟悉Matlab基本命令,理解和掌握离散时间信号与系统的时、频域表示及简单应用。在Matlab环境中,按照要求产生序列,对序列进行基本运算;对简单离散时间系统进行仿真,计算线性时不变(LTI)系统的冲激响应和卷积输出;计算和观察序列的离散时间傅立叶变换(DTFT)幅度谱和相位谱。

二、实验内容:

基本序列产生和运算: Q1.1~1.3,Q1.23,Q1.30~1.33 离散时间系统仿真: Q2.1~2.3 LTI系统:Q2.19,Q2.21,Q2.28 DTFT:Q3.1,Q3.2,Q3.4

三、实验过程与结果分析:

Q1.1 运行P1_1产生单位样本序列 u[n] 的程序与显示的波形如下:

clf;n=-10:20;

u=[zeros(1,10) 1 zeros(1,20)]; stem(n,u);

xlabel('时间序号 n');ylabel('振幅'); title('单位样本序列'); axis([-10 20 0 1.2]);

Q1.2 clf 命令的作用是- 清除图形窗口上的图形

axis命令的作用是- 设置坐标轴的范围和显示方式 title命令的作用是- 给图形加名字 xlabel命令的作用是- 添加x坐标标注 ylabel命令的作用是- 添加y坐标标注

Q1.3 产生有延时11个样本ud[n]的程序及其运行结果如下: clf;

n=-10:20;

ud=[zeros(1,21) 1 zeros(1,9)]; stem(n,ud);

xlabel('时间序号 n');ylabel('振幅'); title('单位样本序列'); axis([-10 20 0 1.2]);

Q1.23 n=0:50; f=0.08;

phase=pi/2; A=2.5;

arg=2*pi*f*n-phase;

x=A*cos(arg); clf;

stem(n,x);

axis([0 50 -3 3]); grid;

title('正弦序列'); xlabel('时间序号 n'); ylabel('振幅'); axis;

该序列的周期为12.5s

Q 1.30未污染的信号s[n]是什么样的形式?加信噪声d[n]是什么的形式?

Q1.31使用语句X=s+d能产生被噪声污染的信号吗?若不能,为什么?

Q1.32信号x1,x2和x3预先好x之间的关系是什么?

Q1.33legend命令的作用是什么?

Q2.1

clf;

n=0:100;

s1=cos(2*pi*0.05*n); s2=cos(2*pi*0.47*n); x=s1+s2;

M=input('滤波器所需的长度='); num=ones(1,M);

y=filter(num,1,x)/M; subplot(2,2,1); plot(n,s1);

axis([0,100,-2,2]);

xlabel('时间序号n');ylabel('振幅'); title('信号#1'); subplot(2,2,2); plot(n,s2);

axis([0,100,-2,2]);

xlabel('时间序号n');ylabel('振幅'); title('信号#2'); subplot(2,2,3); plot(n,x);

axis([0,100,-2,2]);

xlabel('时间序号n');ylabel('振幅'); title('输入信号'); subplot(2,2,4); plot(n,y);

axis([0,100,-2,2]);

xlabel('时间序号n');ylabel('振幅'); title('输出信号'); axis;

Q3.47 编写一个MATLAB程序,计算并显示零点和极点,计算并显示其因式形式,并产生z?1的两个多项式之比的形式表示的z变换的极零点图。使用该程序,分析式(3.32)的z变换G(z)。

编写的MATLAB程序:

clf;

% initialize

num = [2 5 9 5 3]; den = [5 45 2 1 1];

[z p k] = tf2zpk(num,den); disp('Zeros:'); disp(z);

disp('Poles:'); disp(p);

input('Hit to continue...'); [sos k] = zp2sos(z,p,k)

input('Hit to continue...'); zplane(z,p); 运行结果: Zeros:

-1.0000 + 1.4142i -1.0000 - 1.4142i -0.2500 + 0.6614i -0.2500 - 0.6614i

Poles:

-8.9576 -0.2718 0.1147 + 0.2627i 0.1147 - 0.2627i

sos =

1.0000 2.0000 3.0000 1.0000 9.2293 2.4344 1.0000 0.5000 0.5000 1.0000 -0.2293 0.0822 k =

0.4000

432Imaginary Part10-1-2-3-4-8-6-4Real Part-20

Q3.48 通过习题Q3.47产生的极零点图,求出G(z)的收敛域的数目。清楚地显示所有的收敛域。由极零点图说明离散时间傅里叶变换是否存在。

R1 : | z | < 0.2718 (left-sided, not stable)

R2 : 0.2718 < | z | < 0.2866 (two-sided, not stable)

R 3: 0.2866 < | z | < 8.9576 (two-sided, stable)

R4 : | z | > 8.9576 (right-sided, not stable)

不能从极零点图肯定的说DTFT是否存在,因为其收敛域一定要指定。当收敛域在上述R 3内所获得的序列却是证明了DTFT的存在,它是一个具有双面冲激响应的稳定系统。

Q3.50 编写一个MATLAB程序,计算一个有理逆z变换的前L个样本,其中L的值由用户通过命令input提供。用该程序计算并画出式(3.32)中G(z)的逆变换的前50个样本。使用命令stem画出由逆变换产生的序列。

编写的MATLAB程序:

clf;

num = [2 5 9 5 3]; den = [5 45 2 1 1];

L = input('Enter the number of samples L: '); [g t] = impz(num,den,L);

stem(t,g);

title(['First ',num2str(L),' samples of impulse response']); xlabel('Time Index n'); ylabel('h[n]');

Enter the number of samples L: 50

20-2-4-6-8-10-12-14-16x 1045First 50 samples of impulse responseh[n]0102030Time Index n4050

实验名称:数字滤波器的频域分析和实现

一、实验目的和任务:

(1)求滤波器的幅度响应和相位响应,观察对称性,判断滤波器类型。

(2)用Matlab函数实现系统的级联型和并联型结构,并对滤波器进行结构仿真。

二、实验内容:

系统传递函数的级联和并联实现:Q6.1, Q6.3, Q6.5, Q8.3,Q8.5, 滤波器的幅频特性分析:Q8.1, Q8.9,Q8.10,Q8.14

三、实验过程与结果分析:

Q6.1 使用程序P6.1,生成如下有限冲激响应传输函数的一个级联实现: H51(z)=2+10z

?1+23z

?2+34z

?3+31z

?4+16z

?

编写的MATLAB程序: % Program P6_1

num = input('Numerator coefficient vector = '); den = input('Denominator coefficient vector = '); [b,a] = eqtflength(num,den); % make lengths equal [z,p,k] = tf2zp(b,a); sos = zp2sos(z,p,k)

Numerator coefficient vector = [2 10 23 34 31 16 4] Denominator coefficient vector = [1] sos =

2.0000 6.0000 4.0000 1.0000 0 0 1.0000 1.0000 2.0000 1.0000 0 0 1.0000 1.0000 0.5000 1.0000 0 0 画出级联实现的框图:

H1(z)不是一个线性相位传输函数。

Q6.3 使用程序P6.1,H(z)=3+8z-1 +12z-2 +7z-3 +2z-4 -2z-5 116+24z-1 +24z-2 +14z-3 +5z-4 +1z-5

subplot(2,1,2);

stem(k,y); grid; axis([0 50 -4 4]);

xlabel('Time index n'); ylabel('Amplitude'); title('Output Sequence');

Input Sequence420-2-4Amplitude051015202530Time index nOutput Sequence35404550420-2-4051015202530Time index n35404550Amplitude

Q8.10 运行P8.3并产生两个图形。哪种输入成分会在滤波器输出出现?为什么输出序列的开始部分不是一种理想的正弦曲线?修改P8.3,以便纸过滤序列X2[n]。产生的输出序列和预料的是一样的吗?

4Input SequenceAmplitude20-2-40102030Time index nOutput Sequence40504Amplitude20-2-40102030Time index n4050

Input Sequence420-2-4051015202530Time index nOutput Sequence35404550AmplitudeAmplitude420-2-4051015202530Time index n35404550

答:产生的输出序列和预料的是不一样的

Q8.14 程序P8.4设计的滤波器类型为 FIR低通滤波器,指标为?p=[0 0.3?]

?S=[0.5? ?] ,阶数为 9 ,为了验证仿真需计算的冲激响应样本为 10个。

仿真是正确的吗?

答:滤波器类型为 FIR低通滤波器,指标为?p=[0 0.3?] ?S=[0.5? ?] ,阶数为 9 ,为了验证仿真需计算的冲激响应样本为 10个,仿真是正确的。

实验名称:数字滤波器的设计

一、实验目的和任务:

(1)用窗口法设计满足指标的FIR数字滤波器。 (2)以模拟低通滤波器为原型设计IIR数字滤波器

(3)选定一个信号滤波问题,设计数字滤波器,验证滤波效果。

二、实验内容:

阅读Page 91-93相应的函数和程序P7.1,完成Q7.1, Q7.5,Q7.6 阅读Page 94-96相应的函数, 完成Q7.9,Q7.13,Q7.14,Q7.20 sinc函数的功能与使用,可通过help查询:

Matlab-Help-Search-Function Name-输入sinc 实验指导书Page 49有sinc函数使用实例

幅度响应的分析:

通过DTFT定义计算幅度响应 通过freqz函数分析

三、实验过程与结果分析:

Q7.1 用MATLAB确定一个数字无线冲激响应低通滤波器所有四种类型的最低阶数。指标如下:40kHz的抽样率,4kHZ的通带边界频率,8kHz的阻带边界频率,0.5dB的通带波纹,40dB的最小阻带衰减。评论你的结果。

根据题意:FT=40kHz,FP=4 kHz,FS=8kHz,通带增益RP=0.5dB,阻带增益RS=40dB 可以得出?P=

2?FPFT2?(4*103)??0.2? 340*10 WP??P?0.2 ? ?S=

2?FSFT2?(8*103)??0.4? 340*10 WS?

?S?0.4 ?(1) 根据上述数据和buttord函数[N, Wn] = buttord(0.2,0.4,0.5,40)

得到巴特沃兹滤波器的最低阶数N=8。 Wn=0.2469 ?n=0.2469?

(2) 根据上述数据和cheb1ord函数[N, Wn] = cheb1ord(0.2,0.4,0.5,40)

得到切比雪夫1型滤波器的最低阶数N=5。

Wn=0.2000 ?n=0.2000?

(3) 根据上述数据和cheb2ord函数[N, Wn] = cheb1ord(0.2,0.4,0.5,40)

得到切比雪夫2型滤波器的最低阶数N=5。 Wn=0.4000 ?n=0.4000?

(4) 根据上述数据和ellipord函数[N, Wn] = ellipord (0.2,0.4,

0.5,40)得到椭圆滤波器的最低阶数N=4。 Wn=0.2000 ?n=0.2000?

Q7.5 通过运行P7.1设计巴特沃兹带阻滤波器,写出所产生的传输函数的准确

表达式。滤波器的指标是什么?使用MATLAB计算并绘制滤波器未畸变的相位相应及群延迟相应。 MATLAB程序为:

% Program P7_1

% Design of a Butterworth Bandstop Digital Filter Ws = [0.4 0.6]; Wp = [0.2 0.8]; Rp = 0.4; Rs = 50; % Estimate the Filter Order

[N1, Wn1] = buttord(0.2, 0.4, 0.5, 40); % Design the Filter

[num,den] = butter(N1,Wn1,'stop'); % Display the transfer function

disp('Numerator Coefficients are ');disp(num); disp('Denominator Coefficients are ');disp(den); % Compute the gain response [g, w] = gain(num,den); % Plot the gain response plot(w/pi,g);grid axis([0 1 -60 5]);

xlabel('\\omega /\\pi'); ylabel('Gain in dB');

title('Gain Response of a Butterworth Bandstop Filter'); 得到:

Numerator Coefficients are Columns 1 through 9

0.0493 0.0000 0.2465 0.0000 0.4930 0.0000 0.4930 0.0000 0.2465

Columns 10 through 11 0.0 0.0493

Denominator Coefficients are Columns 1 through 9

1.0000 0.0000 -0.0850 0.0000 0.6360 0.0000 -0.0288 0.0000 0.0561

Columns 10 through 11 0.0000 -0.0008

因此表达式为:

0.0493+0.2465z-2 +0.4930z-4?0.4930z-6 ?0.2465z-8?0.0493z-10H (z)= -2-4-6-8-101-0.0850z +0.6360z-0.0288z ?0.0561z?0.0008z 指标为?P1=0.2?,?S1=0.4?,?S2=0.6?,?P2=0.8?,RP=0.4dB,RS=50dB

Q7.6 修改P7.1后来设计符合习题Q7.1所给指标的切比雪夫1型低通滤波器。写出产生的传输函数的准确表达式。使用MATLAB计算并绘制滤波器未畸变的相位相应及群延迟响应。

修改P7.1后的程序(切比雪夫1型低通滤波器):

% Program Q7_6

% Design spec as given in Q7.1. FT = 40*10^3; % sampling freq

Fp = 4*10^3; % analog passband edge freq Fs = 8*10^3; % analog stopband edge freq

本文来源:https://www.bwwdw.com/article/cl46.html

Top