《DSP using MATLAB》Problem 8.12

Posted ky027wh-sx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《DSP using MATLAB》Problem 8.12相关的知识,希望对你有一定的参考价值。

技术图片

代码:

%% ------------------------------------------------------------------------
%%            Output Info about this m-file
fprintf(‘\\n***********************************************************\\n‘);
fprintf(‘        <DSP using MATLAB> Problem 8.12 \\n\\n‘);

banner();
%% ------------------------------------------------------------------------

Wp = 500; Ws = 2000; Rp = 0.25; As = 50;
Fp = Wp/(2*pi);
Fs = Ws/(2*pi);

Ripple = 10 ^ (-Rp/20)
Attn = 10 ^ (-As/20)

% Analog filter design:
[b, a] = afd(‘butter‘, Fp, Fs, Rp, As);
%[b, a] = afd_butt(Wp, Ws, Rp, As);

% Calculation of second-order sections:
[C, B, A] = sdir2cas(b, a);

% Calculation of Frequency Response:
[db, mag, pha, ww] = freqs_m(b, a, 2500);

% Calculation of Impulse Response:
[ha, x, t] = impulse(b, a);


%% -------------------------------------------------
%%                    Plot
%% -------------------------------------------------  

figure(‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Problem 8.12 Analog Butterworth lowpass‘)
set(gcf,‘Color‘,‘white‘); 
M = 1.0;                          % Omega max

subplot(2,2,1); plot(ww, mag);  grid on; axis([-2100, 2100, 0, 1.2]);
xlabel(‘ Analog frequency in rad/sec units‘); ylabel(‘|H|‘); title(‘Magnitude in Absolute‘);
set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [-500, 0, 500, 2000]);
set(gca, ‘YTickMode‘, ‘manual‘, ‘YTick‘, [0, 0.003, 0.97, 1]);

subplot(2,2,2); plot(ww, db);  grid on; %axis([0, M, -50, 10]);
xlabel(‘Analog frequency in rad/sec units‘); ylabel(‘Decibels‘); title(‘Magnitude in dB ‘);
set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [-500, 0, 500, 2000]);
set(gca, ‘YTickMode‘, ‘manual‘, ‘YTick‘, [-50, -1, 0]);
set(gca,‘YTickLabelMode‘,‘manual‘,‘YTickLabel‘,[‘50‘;‘ 1‘;‘ 0‘]);

subplot(2,2,3); plot(ww, pha/pi);  grid on; axis([-2100, 2100, -1.2, 1.2]);
xlabel(‘Analog frequency in rad/sec nuits‘); ylabel(‘radians‘); title(‘Phase Response‘);
set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [-500, 0, 500, 2000]);
set(gca, ‘YTickMode‘, ‘manual‘, ‘YTick‘, [-1:0.5:1]);


subplot(2,2,4); plot(t, ha); grid on; %axis([0, 30, -0.05, 0.25]); 
xlabel(‘time in seconds‘); ylabel(‘ha(t)‘); title(‘Impulse Response‘);

  运行结果:

        通带ripple和阻带衰减,将题中的dB单位转换为以绝对值为单位。

技术图片

        非归一化模拟Butterworth低通滤波器,直接形式(有理函数)的系数,

技术图片

        将H(s)转换成串联形式,即一系列二阶子滤波器的乘积形式

技术图片

        模拟滤波器的幅度谱、相位谱和脉冲响应序列。

技术图片

 

以上是关于《DSP using MATLAB》Problem 8.12的主要内容,如果未能解决你的问题,请参考以下文章

《DSP using MATLAB》Problem 5.7

《DSP using MATLAB》Problem 6.7

《DSP using MATLAB》Problem 6.8

《DSP using MATLAB》Problem 3.12

《DSP using MATLAB》Problem 4.17

《DSP using MATLAB》Problem 3.5