1.41.2Magnitude Response for Length=4110.8|H(ej?)|0.60.40.2000.20.4? /?0.60.81
(4)长度为21的零相位低通滤波器的冲激响应:
1.41.2Magnitude Response for Length=2110.8|H(ej?)|0.60.40.2000.20.4? /?0.60.81
答:从这些图形可以证明不同情况下的幅值振动都是由于Gibb效应。波纹的数量的减少和滤波器的长度成正比的。最大波纹的高度与滤波器的长度没有关系。 修改程序产生一个偶数长度的零相位低通滤波器的冲激响应系数:
% Program Q7_9
n = -39.5:39.5; % this gives us a length of 80
hn_80 = 0.4 * sinc(0.4*n); % the length-80 impulse response omega = 0:pi/1023:pi; % radian frequency vector W = omega/pi; % Matlab normalized freq vector
Hz_80 = abs(freqz(hn_80,1,omega)); % 1024 samles of |H(e^jw)|
figure(1);
plot(W,Hz_80); grid;
xlabel('\\omega /\\pi'); ylabel('|H(e^{j\\omega})|'); title('Magnitude Response for Length=80'); % Reduce length to 60 and repeat hn_60 = hn_80(11:70);
Hz_60 = abs(freqz(hn_60,1,omega)); figure(2);
plot(W,Hz_60); grid;
xlabel('\\omega /\\pi'); ylabel('|H(e^{j\\omega})|'); title('Magnitude Response for Length=60'); % Reduce length to 40 and repeat hn_40 = hn_60(11:50);
Hz_40 = abs(freqz(hn_40,1,omega)); figure(3);
plot(W,Hz_40); grid;
xlabel('\\omega /\\pi'); ylabel('|H(e^{j\\omega})|'); title('Magnitude Response for Length=40'); % Reduce length to 20 and repeat hn_20 = hn_40(11:30);
Hz_20 = abs(freqz(hn_20,1,omega)); figure(4);
plot(W,Hz_20); grid;
xlabel('\\omega /\\pi'); ylabel('|H(e^{j\\omega})|'); title('Magnitude Response for Length=20');
Q7.13使用函数kaiord,估计具有以下指标的线性相位低通有限冲激相应滤波器的阶数:通带边界为2kHz,阻带边界为2.5kHz,通带波纹?P?0.005,阻带波纹?S=0.005.抽样率为10kHz。在函数kaiord中命令ceil和nargin的作用是什么? 答:使用函数kaiord和上述数据可以估计得到N=46 命令ceil:向正方向舍入成整数的函数。
命令nargin:用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的
功能。通常可以用他来设定一些默认值。
Q7.14 对下面的情况重做Q7.13:(a)20kHz的抽样率,(b)
?P?0.002和?S=0.002,(c)阻带
边界为2.3kHz。把每一种情况中得到的滤波器长度与Q7.13中得到的滤波器长度相比作比较。评论抽样率、波纹以及过渡带宽对滤波器阶数的影响。 (a)20kHz的抽样率时,N=91; (b)
?P?0.002和?S=0.002时,N=57;
(c)阻带边界为2.3kHz时,N=76;
1、抽样率对滤波器阶数的影响:对于一个给定的模拟过渡带宽,抽样率的增长导致估计的滤波器阶数的成比例增长,一直到下一个整数值。
2、波纹对滤波器阶数的影响:估计的滤波器阶数大约与波纹的log值成一定比例。
3、过渡带宽对滤波器阶数的影响:在一定的范围内滤波器阶数与过渡带宽成比例的变化。
Q7.20 使用函数firl,设计一个线性相位有限冲激响应低通滤波器,使其满足Q7.13给出的指标,并画出其增益和相位响应。使用Q7.13中用凯泽公式估计出的阶数。用表格的形式显示滤波器系数。满足指标的滤波器阶数是多少? 编写的MATLAB程序为:
数字信号处理实验小结及心得体会:
课后练习
M 2.2 (a)Using Program2_2,generate the sequence shown in Figures 2.23 and 2.24
(b)Generate and plot the complex exponential sequence -2.7e^((-0.4+jπ/6)n) for 0≤n≤82 using Program 2_2.
Answer:
(a) For figure 2.23: a =-1/12; b = pi/6; c = a + b*i; K = 1; N =41; n = 1:N;
x = K*exp(c*n); stem(n,real(x));
xlabel('时间n');ylabel('振幅'); title('实数部分');
disp('PRESS RETURN for imaginary part'); pause
stem(n,imag(x));%Plot the imaginary part xlabel('Time index n');ylabel('Amplitude'); title('Imaginary part');
For figure 2.24(a): a =log(1.2); b = 0;
c = a + b*i; K = 0.2; N =31; n = 1:N;
x = K*exp(c*n); stem(n,real(x));
xlabel('时间n');ylabel('振幅'); title('实数部分');
disp('PRESS RETURN for imaginary part'); pause
stem(n,imag(x));%Plot the imaginary part xlabel('Time index n');ylabel('Amplitude'); title('Imaginary part');
For figure 2.24(b): a =log(0.9); b = 0;
c = a + b*i; K = 20; N =31; n = 1:N;
x = K*exp(c*n); stem(n,real(x));
xlabel('时间n');ylabel('振幅'); title('实数部分');
disp('PRESS RETURN for imaginary part'); pause
stem(n,imag(x));%Plot the imaginary part xlabel('Time index n');ylabel('Amplitude'); title('Imaginary part');