代码:

%% ------------------------------------------------------------------------
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 8.21 \n\n'); banner();
%% ------------------------------------------------------------------------ Fp = 3.2; % analog passband freq in kHz
Fs = 3.8; % analog stopband freq in kHz
fs = 8; % sampling rate in kHz % -------------------------------
% ω = ΩT = 2πF/fs
% Digital Filter Specifications:
% -------------------------------
%wp = 2*pi*Fp/fs; % digital passband freq in rad/sec
wp = Fp;
%ws = 2*pi*Fs/fs; % digital stopband freq in rad/sec
ws = Fs;
Rp = 0.5; % passband ripple in dB
As = 45; % stopband attenuation in dB Ripple = 10 ^ (-Rp/20) % passband ripple in absolute
Attn = 10 ^ (-As/20) % stopband attenuation in absolute % Analog prototype specifications: Inverse Mapping for frequencies
T = 1; % set T = 1
OmegaP = wp/T; % prototype passband freq
OmegaS = ws/T; % prototype stopband freq % Analog Chebyshev-1 Prototype Filter Calculation:
[cs, ds] = afd_chb1(OmegaP, OmegaS, Rp, As); % Calculation of second-order sections:
fprintf('\n***** Cascade-form in s-plane: START *****\n');
[CS, BS, AS] = sdir2cas(cs, ds)
fprintf('\n***** Cascade-form in s-plane: END *****\n'); % Calculation of Frequency Response:
[db_s, mag_s, pha_s, ww_s] = freqs_m(cs, ds, 8); % Calculation of Impulse Response:
[ha, x, t] = impulse(cs, ds); % Impulse Invariance Transformation:
[b, a] = imp_invr(cs, ds, T); [C, B, A] = dir2par(b, a) % Calculation of Frequency Response:
[db, mag, pha, grd, ww] = freqz_m(b, a); %% -----------------------------------------------------------------
%% Plot
%% -----------------------------------------------------------------
figure('NumberTitle', 'off', 'Name', 'Problem 8.21 Analog Chebyshev-I lowpass')
set(gcf,'Color','white');
M = 1.0; % Omega max subplot(2,2,1); plot(ww_s, mag_s/T); grid on; %axis([-10, 10, 0, 1.2]);
xlabel(' Analog frequency in kHz units'); ylabel('|H|'); title('Magnitude in Absolute');
set(gca, 'XTickMode', 'manual', 'XTick', [-8, -3.8, -3.2, 0, 3.2, 3.8, 8]);
set(gca, 'YTickMode', 'manual', 'YTick', [0, 0.006, 0.94, 1]); subplot(2,2,2); plot(ww_s, db_s); grid on; %axis([0, M, -50, 10]);
xlabel('Analog frequency in kHz units'); ylabel('Decibels'); title('Magnitude in dB ');
set(gca, 'XTickMode', 'manual', 'XTick', [-8, -3.8, 0, 3.2, 3.8, 8]);
set(gca, 'YTickMode', 'manual', 'YTick', [-45, -1, 0]);
set(gca,'YTickLabelMode','manual','YTickLabel',['45';' 1';' 0']); subplot(2,2,3); plot(ww_s, pha_s/pi); grid on; axis([-10, 10, -1.2, 1.2]);
xlabel('Analog frequency in kHz nuits'); ylabel('radians'); title('Phase Response');
set(gca, 'XTickMode', 'manual', 'XTick', [-8, -3.8, 0, 3.2, 3.8, 8]);
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'); figure('NumberTitle', 'off', 'Name', 'Problem 8.21 Digital Chebyshev-I lowpass')
set(gcf,'Color','white');
M = 2; % Omega max subplot(2,2,1); plot(ww/pi, mag); axis([0, M, 0, 1.2]); grid on;
xlabel(' frequency in \pi units'); ylabel('|H|'); title('Magnitude Response');
set(gca, 'XTickMode', 'manual', 'XTick', [0, 0.8, 0.95, M]);
set(gca, 'YTickMode', 'manual', 'YTick', [0, 0.0056, 0.9441, 1]); subplot(2,2,2); plot(ww/pi, pha/pi); axis([0, M, -1.1, 1.1]); grid on;
xlabel('frequency in \pi nuits'); ylabel('radians in \pi units'); title('Phase Response');
set(gca, 'XTickMode', 'manual', 'XTick', [0, 0.8, 0.95, M]);
set(gca, 'YTickMode', 'manual', 'YTick', [-1:1:1]); subplot(2,2,3); plot(ww/pi, db); axis([0, M, -30, 10]); grid on;
xlabel('frequency in \pi units'); ylabel('Decibels'); title('Magnitude in dB ');
set(gca, 'XTickMode', 'manual', 'XTick', [0, 0.8, 0.95, M]);
set(gca, 'YTickMode', 'manual', 'YTick', [-60, -45, -1, 0]);
set(gca,'YTickLabelMode','manual','YTickLabel',['60';'45';' 1';' 0']); subplot(2,2,4); plot(ww/pi, grd); grid on; %axis([0, M, 0, 35]);
xlabel('frequency in \pi units'); ylabel('Samples'); title('Group Delay');
set(gca, 'XTickMode', 'manual', 'XTick', [0, 0.8, 0.95, M]);
%set(gca, 'YTickMode', 'manual', 'YTick', [0:5:35]); figure('NumberTitle', 'off', 'Name', 'Problem 8.21 Pole-Zero Plot')
set(gcf,'Color','white');
zplane(b,a);
title(sprintf('Pole-Zero Plot'));
%pzplotz(b,a); % ----------------------------------------------
% Calculation of Impulse Response
% ----------------------------------------------
figure('NumberTitle', 'off', 'Name', 'Problem 8.21 Imp & Freq Response')
set(gcf,'Color','white');
t = [0:0.01:60]; subplot(2,1,1); impulse(cs,ds,t); grid on; % Impulse response of the analog filter
axis([0,60,-0.5,1.0]);hold on n = [0:1:60/T]; hn = filter(b,a,impseq(0,0,60/T)); % Impulse response of the digital filter
stem(n*T,hn); xlabel('time in sec'); title (sprintf('Impulse Responses T=%2d',T));
hold off % Calculation of Frequency Response:
[dbs, mags, phas, wws] = freqs_m(cs, ds, 2*pi/T); % Analog frequency s-domain [dbz, magz, phaz, grdz, wwz] = freqz_m(b, a); % Digital z-domain %% -----------------------------------------------------------------
%% Plot
%% ----------------------------------------------------------------- subplot(2,1,2); plot(wws/(2*pi),mags/T,'b+', wwz/(2*pi*T),magz,'r'); grid on; xlabel('frequency in Hz'); title('Magnitude Responses'); ylabel('Magnitude'); text(-0.8,0.15,'Analog filter'); text(0.6,1.05,'Digital filter');

  运行结果:

通带、阻带指标

模拟Chebyshev-1型低通系统函数,串联形式系数

脉冲响应不变法,转换成数字低通,系统函数直接形式系数

模拟Chebyshev-1型低通,幅度谱、相位谱和脉冲响应

数字Chebyshev-1型低通,幅度谱、相位谱和群延迟

最新文章

  1. 解读ASP.NET 5 &amp; MVC6系列(13):TagHelper
  2. 开源、免费功能全面的Chart图
  3. AccessHelper 需修改
  4. 好用的php类库和方法
  5. HDU 3911 Black And White(线段树区间合并+lazy操作)
  6. 当kfreebsd 用户遇见openSUSE系统
  7. FusionCharts参数的详细说明和功能特性(转)
  8. Tomcat6 一些调优设置内存和连接数
  9. 第五章 与众不同的this
  10. 在weblogic11g发布该项目时遇到错误(不支持web-app_3_0)
  11. http-server 命令行
  12. render与vue组件和注册
  13. 数字签名与HTTPS详解
  14. ubuntu 16.04 安装中文语言包
  15. luogu3646 巴厘岛的雕塑 (dp)
  16. CodeWarrior WarningC12056
  17. python模块说明
  18. 判断Javascript对象是否为空
  19. java IO 入门例子
  20. 常见的HTTP请求应答返回码列表

热门文章

  1. ConvertBSTRToString导致的内存泄漏
  2. c_数据结构_图_邻接表
  3. ransformResourcesWithMergeJavaResForDebug问题
  4. Linux 指令查询帮助
  5. csps退役记
  6. 「题解」:$Simple$
  7. 字符串——cf1109B
  8. SQLite3与C++的结合应用
  9. ~/.bashrc的常用alias设置,30 个方便的 Bash shell 别名
  10. webpack 简单笔记(三)vue-cli 使用 webpack-bundle-analyzer 分析