快到龙抬头,居然下雪了,天空飘起了雪花,温度下降了近20°。

代码:

%% ------------------------------------------------------------------------
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 4.21 \n\n'); banner();
%% ------------------------------------------------------------------------ % ----------------------------------------------------
% 1 H1(z)
% ---------------------------------------------------- b = [3/4, 5/4, 1, 1, 5/4, 3/4]; a = [1]; % [R, p, C] = residuez(b,a) Mp = (abs(p))'
Ap = (angle(p))'/pi %% ------------------------------------------------------
%% START a determine H(z) and sketch
%% ------------------------------------------------------
figure('NumberTitle', 'off', 'Name', 'P4.21 H(z) its pole-zero plot')
set(gcf,'Color','white');
zplane(b,a);
title('pole-zero plot'); grid on; %% ----------------------------------------------
%% END
%% ---------------------------------------------- % ------------------------------------
% h(n)
% ------------------------------------ [delta, n] = impseq(0, 0, 19);
h_check = filter(b, a, delta); % check sequence %% --------------------------------------------------------------
%% START b |H| <H
%% 3rd form of freqz
%% --------------------------------------------------------------
w = [-500:1:500]*2*pi/500; H = freqz(b,a,w);
%[H,w] = freqz(b,a,200,'whole'); % 3rd form of freqz magH = abs(H); angH = angle(H); realH = real(H); imagH = imag(H); %% ================================================
%% START H's mag ang real imag
%% ================================================
figure('NumberTitle', 'off', 'Name', 'P4.21 DTFT and Real Imaginary Part ');
set(gcf,'Color','white');
subplot(2,2,1); plot(w/pi,magH); grid on; %axis([0,1,0,1.5]);
title('Magnitude Response');
xlabel('frequency in \pi units'); ylabel('Magnitude |H|');
subplot(2,2,3); plot(w/pi, angH/pi); grid on; % axis([-1,1,-1,1]);
title('Phase Response');
xlabel('frequency in \pi units'); ylabel('Radians/\pi'); subplot('2,2,2'); plot(w/pi, realH); grid on;
title('Real Part');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,2,4'); plot(w/pi, imagH); grid on;
title('Imaginary Part');
xlabel('frequency in \pi units'); ylabel('Imaginary');
%% ==================================================
%% END H's mag ang real imag
%% ================================================== % --------------------------------------------------------------
% x(n) through the filter, we get output y(n)
% --------------------------------------------------------------
N = 200;
nx = [0:1:N-1];
x = sin(pi*nx/2) + 5 * cos(pi*nx); [y, ny] = conv_m(h_check, n, x, nx); figure('NumberTitle', 'off', 'Name', 'P4.21 Input & h(n) Sequence');
set(gcf,'Color','white');
subplot(3,1,1); stem(nx, x); grid on; %axis([0,1,0,1.5]);
title('x(n)');
xlabel('n'); ylabel('x');
subplot(3,1,2); stem(n, h_check); grid on; %axis([0,1,0,1.5]);
title('h(n)');
xlabel('n'); ylabel('h');
subplot(3,1,3); stem(ny, y); grid on; %axis([0,1,0,1.5]);
title('y(n)');
xlabel('n'); ylabel('y'); figure('NumberTitle', 'off', 'Name', 'P4.21 Output Sequence');
set(gcf,'Color','white');
subplot(1,1,1); stem(ny, y); grid on; %axis([0,1,0,1.5]);
title('y(n)');
xlabel('n'); ylabel('y'); % ----------------------------------------
% yss Response
% ----------------------------------------
ax = conv([1,0,1], [1,2,1])
bx = conv([0,1], [1,2,1]) + conv([5,5], [1,0,1]) by = conv(bx, b)
ay = ax zeros = roots(by) [R, p, C] = residuez(by, ay) Mp_Y = (abs(p))'
Ap_Y = (angle(p))'/pi %% ------------------------------------------------------
%% START a determine Y(z) and sketch
%% ------------------------------------------------------
figure('NumberTitle', 'off', 'Name', 'P4.21 Y(z) its pole-zero plot')
set(gcf,'Color','white');
zplane(by, ay);
title('pole-zero plot'); grid on; % ------------------------------------
% y(n)
% ------------------------------------
LENGH = 100;
[delta, n] = impseq(0, 0, LENGH-1);
y_check = filter(by, ay, delta); % check sequence y_answer0 = 4.75*delta; [delta_1, n1] = sigshift(delta, n, 1);
y_answer1 = 2.25*delta_1; [delta_2, n2] = sigshift(delta, n, 2);
y_answer2 = 2.75*delta_2; [delta_3, n3] = sigshift(delta, n, 3);
y_answer3 = 3.75*delta_3; [delta_4, n4] = sigshift(delta, n, 4);
y_answer4 = 4.50*delta_4; y_answer5 = (2*(-0.5)*cos(pi*n/2) + 2*0.5*sin(pi*n/2) ).*stepseq(0,0,LENGH-1); [y01, n01] = sigadd(y_answer0, n, y_answer1, n1);
[y02, n02] = sigadd(y_answer2, n2, y_answer3, n3); [y03, n03] = sigadd(y01, n01, y02, n02);
[y04, n04] = sigadd(y03, n03, y_answer4, n4); [y_answer, n_answer] = sigadd(y04, n04, y_answer5, n); figure('NumberTitle', 'off', 'Name', 'P4.21 Yss and Y ');
set(gcf,'Color','white');
subplot(2,1,1); stem(n, y_answer5); grid on; %axis([0,1,0,1.5]);
title('Steady-State Response');
xlabel('n'); ylabel('Yss');
subplot(2,1,2); stem(n, y_check); grid on; % axis([-1,1,-1,1]);
title('Total Response');
xlabel('n'); ylabel('Y');

  运行结果:

系统函数H(z)的系数:

系统的DTFT,注意当ω=π/2和π时的振幅谱、相位谱的值。

当有输入时,输出的Y(z)进行部分分式展开,留数及对应的极点如下:

单位圆上z=-1处,极点和零点相互抵消,稳态响应只和正负j有关。

《DSP using MATLAB》Problem 4.21的更多相关文章

  1. 《DSP using MATLAB》Problem 6.21

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  2. 《DSP using MATLAB》Problem 5.21

    证明: 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  3. 《DSP using MATLAB》Problem 8.21

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  4. 《DSP using MATLAB》Problem 3.21

    模拟信号经过不同的采样率进行采样后,得到不同的数字角频率,如下: 三种Fs,采样后的信号的谱 重建模拟信号,这里只显示由第1种Fs=0.01采样后序列进行重建,采用zoh.foh和spline三种方法 ...

  5. 《DSP using MATLAB》Problem 7.27

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  6. 《DSP using MATLAB》Problem 7.26

    注意:高通的线性相位FIR滤波器,不能是第2类,所以其长度必须为奇数.这里取M=31,过渡带里采样值抄书上的. 代码: %% +++++++++++++++++++++++++++++++++++++ ...

  7. 《DSP using MATLAB》Problem 7.24

    又到清明时节,…… 注意:带阻滤波器不能用第2类线性相位滤波器实现,我们采用第1类,长度为基数,选M=61 代码: %% +++++++++++++++++++++++++++++++++++++++ ...

  8. 《DSP using MATLAB》Problem 7.23

    %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output Info a ...

  9. 《DSP using MATLAB》Problem 7.16

    使用一种固定窗函数法设计带通滤波器. 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

随机推荐

  1. angular5中使用echart的方法

    注意两点安装的版本 安装好后可以参照echart的官网使用 1.实现package.json中安装这两个包 2.index.html中引入 3.在appModule中添加 然后再html中就可以这么使 ...

  2. 1.python+selenium利用cookie,跳过验证码直接登录

    方法1 在登录时,叫代码等待一段时间,然后手动输入验证码 # coding:utf-8 from selenium import webdriver import time url = 'http:/ ...

  3. .net常见框架

    从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继 ...

  4. English trip V1 - 1.How Do You Feel Now? Teacher:Lamb Key:形容词(Adjectives)

    In this lesson you will learn to describe people, things, and feelings.在本课中,您将学习如何描述人,事和感受. STARTER  ...

  5. java向文件中添加数据---手动版日志添加

    核心代码为创建多级文件夹创建 //目标文件 File file=new File(filePath); //若不存在即创建文件 if(!file.exists()) { if (!file.getPa ...

  6. jquery自动填充输入框

    1,这是一个比较简单的页面,你可以复制下来就可以使用.<!doctype html><html lang="en"><head> <met ...

  7. 170301、使用Spring AOP实现MySQL数据库读写分离案例分析

    使用Spring AOP实现MySQL数据库读写分离案例分析 原创 2016-12-29 徐刘根 Java后端技术 一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案 ...

  8. Leetcode 17

    //狂练回溯,巧用备胎class Solution { public: vector<string> letterCombinations(string digits) { vector& ...

  9. 手动安装Silverlight 4 Tools for Visual Studio 2010

    手动安装吧,将Silverlight 4 Tools for Visual Studio 2010.exe改成rar文件,解压缩,按照下面的步骤安装: 1.silverlight_developer. ...

  10. 杜伦大学提出GANomaly:无需负例样本实现异常检测

    杜伦大学提出GANomaly:无需负例样本实现异常检测 本期推荐的论文笔记来自 PaperWeekly 社区用户 @TwistedW.在异常检测模块下,如果没有异常(负例样本)来训练模型,应该如何实现 ...