matlab 8.4,《DSP using MATLAB》Problem 8.42

7e50f49aedadc89c19800e624b74986e.png

代码:

%% ------------------------------------------------------------------------

%% Output Info about this m-file

fprintf(‘\n***********************************************************\n‘);

fprintf(‘ Problem 8.42 \n\n‘);

banner();

%% ------------------------------------------------------------------------

% Digital Filter Specifications: Elliptic bandstop

wsbs = [0.40*pi 0.48*pi]; % digital stopband freq in rad

wpbs = [0.25*pi 0.75*pi]; % digital passband freq in rad

Rp = 1.0 % passband ripple in dB

As = 80 % stopband attenuation in dB

Ripple = 10 ^ (-Rp/20) % passband ripple in absolute

Attn = 10 ^ (-As/20) % stopband attenuation in absolute

% Calculation of Elliptic filter parameters:

[N, wn] = ellipord(wpbs/pi, wsbs/pi, Rp, As);

fprintf(‘\n ********* Elliptic Filter Order is = %3.0f \n‘, N)

% Digital Elliptic bandstop Filter Design:

[bbs, abs] = ellip(N, Rp, As, wn, ‘stop‘);

[C, B, A] = dir2cas(bbs, abs)

% Calculation of Frequency Response:

[dbbs, magbs, phabs, grdbs, wwbs] = freqz_m(bbs, abs);

% ---------------------------------------------------------------

% find Actual Passband Ripple and Min Stopband attenuation

% ---------------------------------------------------------------

delta_w = 2*pi/1000;

Rp_bs = -(min(dbbs(1:1:ceil(wpbs(1)/delta_w+1)))); % Actual Passband Ripple

fprintf(‘\nActual Passband Ripple is %.4f dB.\n‘, Rp_bs);

As_bs = -round(max(dbbs(ceil(wsbs(1)/delta_w)+1:1:ceil(wsbs(2)/delta_w)+1))); % Min Stopband attenuation

fprintf(‘\nMin Stopband attenuation is %.4f dB.\n\n‘, As_bs);

%% -----------------------------------------------------------------

%% Plot

%% -----------------------------------------------------------------

figure(‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Problem 8.42 Elliptic bs by ellip function‘)

set(gcf,‘Color‘,‘white‘);

M = 1; % Omega max

subplot(2,2,1); plot(wwbs/pi, magbs); axis([0, M, 0, 1.2]); grid on;

xlabel(‘Digital frequency in \pi units‘); ylabel(‘|H|‘); title(‘Magnitude Response‘);

set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [0, 0.25, 0.40, 0.48, 0.75, M]);

set(gca, ‘YTickMode‘, ‘manual‘, ‘YTick‘, [0, 0.01, 0.8913, 1]);

subplot(2,2,2); plot(wwbs/pi, dbbs); axis([0, M, -120, 2]); grid on;

xlabel(‘Digital frequency in \pi units‘); ylabel(‘Decibels‘); title(‘Magnitude in dB‘);

set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [0, 0.25, 0.40, 0.48, 0.75, M]);

set(gca, ‘YTickMode‘, ‘manual‘, ‘YTick‘, [ -80, -40, 0]);

set(gca,‘YTickLabelMode‘,‘manual‘,‘YTickLabel‘,[‘80‘; ‘40‘;‘ 0‘]);

subplot(2,2,3); plot(wwbs/pi, phabs/pi); axis([0, M, -1.1, 1.1]); grid on;

xlabel(‘Digital frequency in \pi nuits‘); ylabel(‘radians in \pi units‘); title(‘Phase Response‘);

set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [0, 0.25, 0.40, 0.48, 0.75, M]);

set(gca, ‘YTickMode‘, ‘manual‘, ‘YTick‘, [-1:0.5:1]);

subplot(2,2,4); plot(wwbs/pi, grdbs); axis([0, M, 0, 50]); grid on;

xlabel(‘Digital frequency in \pi units‘); ylabel(‘Samples‘); title(‘Group Delay‘);

set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [0, 0.25, 0.40, 0.48, 0.75, M]);

set(gca, ‘YTickMode‘, ‘manual‘, ‘YTick‘, [0:20:50]);

% ------------------------------------------------------------

% PART 2

% ------------------------------------------------------------

% Discrete time signal

Ts = 1; % sample intevals

n1_start = 0; n1_end = 200;

n1 = [n1_start:n1_end]; % [0:200]

xn1 = sin(0.44*pi*n1); % digital signal

% ----------------------------

% DTFT of xn1

% ----------------------------

M = 500;

[X1, w] = dtft1(xn1, n1, M);

%magX1 = abs(X1);

angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1);

magX1 = sqrt(realX1.^2 + imagX1.^2);

%% --------------------------------------------------------------------

%% START X(w)‘s mag ang real imag

%% --------------------------------------------------------------------

figure(‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Problem 8.42 X1 DTFT‘);

set(gcf,‘Color‘,‘white‘);

subplot(2,1,1); plot(w/pi,magX1); grid on; %axis([-1,1,0,1.05]);

title(‘Magnitude Response‘);

xlabel(‘digital frequency in \pi units‘); ylabel(‘Magnitude |H|‘);

set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [0, 0.2, 0.44, 0.6, 0.8, 1.0, 1.2, 1.4, 1.56, 1.8, 2]);

subplot(2,1,2); plot(w/pi, angX1/pi); grid on; %axis([-1,1,-1.05,1.05]);

title(‘Phase Response‘);

xlabel(‘digital frequency in \pi units‘); ylabel(‘Radians/\pi‘);

figure(‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Problem 8.42 X1 DTFT‘);

set(gcf,‘Color‘,‘white‘);

subplot(2,1,1); plot(w/pi, realX1); grid on;

title(‘Real Part‘);

xlabel(‘digital frequency in \pi units‘); ylabel(‘Real‘);

set(gca, ‘XTickMode‘, ‘manual‘, ‘XTick‘, [0, 0.2, 0.44, 0.6, 0.8, 1.0, 1.2, 1.4, 1.56, 1.8, 2]);

subplot(2,1,2); plot(w/pi, imagX1); grid on;

title(‘Imaginary Part‘);

xlabel(‘digital frequency in \pi units‘); ylabel(‘Imaginary‘);

%% -------------------------------------------------------------------

%% END X‘s mag ang real imag

%% -------------------------------------------------------------------

% ------------------------------------------------------------

% PART 3

% ------------------------------------------------------------

yn1 = filter(bbs, abs, xn1);

n2 = n1;

% ----------------------------

% DTFT of yn1

% ----------------------------

M = 500;

[Y1, w] = dtft1(yn1, n2, M);

%magY1 = abs(Y1);

angY1 = angle(Y1); realY1 = real(Y1); imagY1 = imag(Y1);

magY1 = sqrt(realY1.^2 + imagY1.^2);

%% --------------------------------------------------------------------

%% START Y1(w)‘s mag ang real imag

%% --------------------------------------------------------------------

figure(‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Problem 8.42 Y1 DTFT‘);

set(gcf,‘Color‘,‘white‘);

subplot(2,1,1); plot(w/pi,magY1); grid on; %axis([-1,1,0,1.05]);

title(‘Magnitude Response‘);

xlabel(‘digital frequency in \pi units‘); ylabel(‘Magnitude |H|‘);

subplot(2,1,2); plot(w/pi, angY1/pi); grid on; %axis([-1,1,-1.05,1.05]);

title(‘Phase Response‘);

xlabel(‘digital frequency in \pi units‘); ylabel(‘Radians/\pi‘);

figure(‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Problem 8.42 Y1 DTFT‘);

set(gcf,‘Color‘,‘white‘);

subplot(2,1,1); plot(w/pi, realY1); grid on;

title(‘Real Part‘);

xlabel(‘digital frequency in \pi units‘); ylabel(‘Real‘);

subplot(2,1,2); plot(w/pi, imagY1); grid on;

title(‘Imaginary Part‘);

xlabel(‘digital frequency in \pi units‘); ylabel(‘Imaginary‘);

%% -------------------------------------------------------------------

%% END Y1‘s mag ang real imag

%% -------------------------------------------------------------------

figure(‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Problem 8.42 x(n) and y(n)‘)

set(gcf,‘Color‘,‘white‘);

subplot(2,1,1); stem(n1, xn1);

xlabel(‘n‘); ylabel(‘x(n)‘);

title(‘xn sequence‘); grid on;

subplot(2,1,2); stem(n1, yn1);

xlabel(‘n‘); ylabel(‘y(n)‘);

title(‘yn sequence‘); grid on;

运行结果:

我自己假设通带1dB,阻带衰减80dB。

在此基础上设计指标,绝对单位,

7e59d0dfed02e1ee656da729a92b4250.png

ellip函数(MATLAB工具箱函数)得到Elliptic带阻滤波器,阶数为5,系统函数串联形式系数如下图。

要想得到题目中的10阶的话,阻带衰减估计需要达到160dB左右,觉得没必要那么大。

c81482ab1506b17bf3df83cd4232f540.png

Elliptic带阻滤波器,幅度谱、相位谱和群延迟响应

beead803cf7f9584a3a0b6a3f8e260e6.png

输入离散时间信号x(n)的谱如下,可看出,频率分量0.44π

c21df7fbe00481f6184473aa54178e1b.png

通过带阻滤波器后,得到的输出y(n)的谱,好像变乱了,o(╥﹏╥)o

136cd56162d852504b2867d287dbf9fe.png

输入和输出的离散时间序列如下图

52e727b20b246fcf1f44f165d1eb2dc2.png

原文:https://www.cnblogs.com/ky027wh-sx/p/11808896.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包括32位与64位pojie文件与安装步骤 亲测32位可完整pojie安装! ver --------------------------------------------------------------------------------------------- MATLAB Version: 8.4.0.150421 (R2014b) MATLAB License Number: 409xxx Operating System: Microsoft Windows 7 旗舰版 Version 6.1 (Build 7601: Service Pack 1) Java Version: Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot(TM) Client VM mixed mode --------------------------------------------------------------------------------------------- MATLAB Version 8.4 (R2014b) Simulink Version 8.4 (R2014b) Aerospace Blockset Version 3.14 (R2014b) Aerospace Toolbox Version 2.14 (R2014b) Bioinformatics Toolbox Version 4.5 (R2014b) Communications System Toolbox Version 5.7 (R2014b) Computer Vision System Toolbox Version 6.1 (R2014b) Control System Toolbox Version 9.8 (R2014b) Curve Fitting Toolbox Version 3.5 (R2014b) DO Qualification Kit Version 2.4 (R2014b) DSP System Toolbox Version 8.7 (R2014b) Data Acquisition Toolbox Version 3.6 (R2014b) Database Toolbox Version 5.2 (R2014b) Datafeed Toolbox Version 5.0 (R2014b) Econometrics Toolbox Version 3.1 (R2014b) Embedded Coder Version 6.7 (R2014b) Filter Design HDL Coder Version 2.9.6 (R2014b) Financial Instruments Toolbox Version 2.0 (R2014b) Financial Toolbox Version 5.4 (R2014b) Fixed-Point Designer Version 4.3 (R2014b) Fuzzy Logic Toolbox Version 2.2.20 (R2014b) Gauges Blockset Version 2.0.9 (R2014b) Global Optimization Toolbox Version 3.3 (R2014b) HDL Coder Version 3.5 (R2014b) HDL Verifier Version 4.5 (R2014b) IEC Certification Kit Version 3.4 (R2014b) Image Acquisition Toolbox Version 4.8 (R2014b) Image Processing Toolbox Version 9.1 (R2014b) Instrument Control Toolbox Version 3.6 (R2014b) LTE System Toolbox Version 1.2 (R2014b) MATLAB Builder EX Version 2.5.1 (R2014b) MATLAB Builder JA Version 2.3.2 (R2014b) MATLAB Builder NE Version 4.2.2 (R2014b) MATLAB Coder Version 2.7 (R2014b) MATLAB Compiler Version 5.2 (R2014b) MATLAB Distributed Computing Server Version 6.5 (R2014b) MATLAB Report Generator Version 4.0 (R2014b) Mapping Toolbox Version 4.0.2 (R2014b) Model Predictive Control Toolbox Version 5.0 (R2014b) Model-Based Calibration Toolbox Version 4.8 (R2014b) Neural Network Toolbox Version 8.2.1 (R2014b) OPC Toolbox Version 3.3.2 (R2014b) Optimization Toolbox Version 7.1 (R2014b) Parallel Computing Toolbox Version 6.5 (R2014b) Partial Differential Equation Toolbox Version 1.5 (R2014b) Phased Array System Toolbox Version 2.3 (R2014b) Polyspace Bug Finder Version 1.2 (R2014b) Polyspace Code Prover Version 9.2 (R2014b) RF Toolbox Version 2.15 (R2014b) Real-Time Windows Target Version 4.5 (R2014b) Robust Control Toolbox Version 5.2 (R2014b) Signal Processing Toolbox Version 6.22 (R2014b) SimBiology Version 5.1 (R2014b) SimDriveline Version 2.7 (R2014b) SimElectronics Version 2.6 (R2014b) SimEvents Version 4.3.3 (R2014b) SimHydraulics Version 1.15 (R2014b) SimMechanics Version 4.5 (R2014b) SimPowerSystems Version 6.2 (R2014b) SimRF Version 4.3 (R2014b) Simscape Version 3.12 (R2014b) Simulink 3D Animation Version 7.2 (R2014b) Simulink Code Inspector Version 2.2 (R2014b) Simulink Coder Version 8.7 (R2014b) Simulink Control Design Version 4.1 (R2014b) Simulink Design Optimization Version 2.6 (R2014b) Simulink Design Verifier Version 2.7 (R2014b) Simulink PLC Coder Version 1.8 (R2014b) Simulink Real-Time Version 6.1 (R2014b) Simulink Report Generator Version 4.0 (R2014b) Simulink Verification and Validation Version 3.8 (R2014b) Spreadsheet Link EX Version 3.2.2 (R2014b) Stateflow Version 8.4 (R2014b) Statistics Toolbox Version 9.1 (R2014b) Symbolic Math Toolbox Version 6.1 (R2014b) System Identification Toolbox Version 9.1 (R2014b) SystemTest Version 2.6.8 (R2014b) Trading Toolbox Version 2.1.1 (R2014b) Vehicle Network Toolbox Version 2.3 (R2014b) Wavelet Toolbox Version 4.14 (R2014b) >>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值