代码:
%% ------------------------------------------------------------------------ %% Output Info about this m-file fprintf(' *********************************************************** '); fprintf(' <DSP using MATLAB> Problem 8.26 '); banner(); %% ------------------------------------------------------------------------ c = [1, 1]; d = [1, 5, 6]; % Numerator and Denominator of Ha(s) T = 0.2; Fs = 1/T; % Sample interval %[b, a] = imp_invr(c, d, T) % digital Num and Deno coefficients of H(z) [b, a] = mzt(c, d, T) % digital Num and Deno coefficients of H(z) % Calculation of Impulse Response: %[hs, xs, ts] = impulse(c, d); figure('NumberTitle', 'off', 'Name', 'Problem 8.26 Imp & Freq Response') set(gcf,'Color','white'); t = [0:0.01:4]; subplot(2,1,1); impulse(c,d,t); grid on; % Impulse response of the analog filter axis([0,4,-0.1,1]);hold on n = [0:1:4/T]; hn = filter(b,a,impseq(0,0,4/T)); % Impulse response of the digital filter stem(n*T,hn); xlabel('time in sec'); title (sprintf('Impulse Responses, T=%.2f',T)); hold off %n = [0:1:29]; %hz = impz(b, a, n); % Calculation of Frequency Response: [dbs, mags, phas, wws] = freqs_m(c, d, 2*pi/T); % Analog frequency s-domain [dbz, magz, phaz, grdz, wwz] = freqz_m(b, a); % Digital z-domain %% ----------------------------------------------------------------- %% Plot %% ω = ΩT = 2πF/fs %% ----------------------------------------------------------------- M = 1/T; % Omega max subplot(2,1,2); plot(wws/(2*pi),mags*Fs,'b', wwz/(2*pi)*Fs,magz,'r'); grid on; xlabel('frequency in Hz'); title('Magnitude Responses'); ylabel('Magnitude'); text(1.4,.5,'Analog filter'); text(1.5,1.5,'Digital filter');
运行结果:
可以看出,采样间隔T越小,数字滤波器幅度响应越接近模拟滤波器。