zoukankan      html  css  js  c++  java
  • MATLAB信号与系统分析(四)——离散信号与系统的复频域分析及MATLAB实现

    一、系统的z变换和反变换

    1、利用部分分式展开求解逆Z变换:

    image

    2、例子

    image

    3、Z变换的MATLAB函数

    image

    image

    clear all
    f=sym('cos(a*k)');
    F=ztrans(f)
    F=sym('z^2/((1+z)*(z-2))');
    f=iztrans(F)

    二、系统的零极点分布及其稳定性

    image

    image

    %求H(z)=(z^3+2z)/(z^4+3(z^3)+2(z^2)+2z+1)的零极点及其分布图
    %求H(z)=(1+z^(-1))/(1+z^-1/2+z^-2/4+1)的零极点及其分布图
    %采用roots和plot函数
    clear all 
    %(1)
    b=[1,0,2,0];
    a=[1,3,2,2,1];
    zs1=roots(b);
    ps1=roots(a);
    figure(1)
    subplot(2,1,1);plot(real(zs1),imag(zs1),'o',real(ps1),imag(ps1),'kx','markersize',12);
    axis([-2,2,-2,2]);grid on;
    legend('零点','极点')
    %(2)
    c=[1,1,0];
    d=[1,1/2,1/4];
    zs2=roots(c);
    ps2=roots(d);
    subplot(2,1,2);
    plot(real(zs2),imag(zs2),'o',real(ps2),imag(ps2),'kx','markersize',12);
    axis([-2,2,-2,2]);grid on;legend('零点','极点')
    
    %采用tf2zp和zplane函数
    %(1)
    b=[1,0,2,0];
    a=[1,3,2,2,1];
    figure(2)
    [z,p]=tf2zp(b,a)
    subplot(2,1,1),zplane(z,p)
    %(2)
    c=[1,1,0];
    d=[1,1/2,1/4];
    [z,p]=tf2zp(c,d)
    subplot(2,1,2),zplane(z,p)

    三、系统的零极点分布与系统冲激响应时域特性

    image

    clear all
    a=[1 -2*0.8*cos(pi/4) 0.8^2];
    b=[1];
    [z,p,k]=tf2zp(b,a);
    figure(1)
    subplot(2,1,1),zplane(z,p);
    subplot(2,1,2),impz(b,a,20)

    四、离散系统的频率响应

    MATLAB提供了专门对离散系统频率响应H(jw)进行分析的函数freqz(),该函数可以求出系统频率响应的数值解,并可绘出系统的幅频和相频响应曲线。

    [H,w]=freqz(b,a,N)

    [H,w]=freqz(b,a,N,’whole’)

    freqz(b,a,N)

    freqz(b,a,N,’whole’)

    image

     

     

    image

    %例7
    clear all;
    b=[5/4 -5/4];
    a=[1 -1/4];
    [h,w]=freqz(b,a,400,'whole');
    hf=abs(h);
    hx=angle(h);
    figure(1),clf;
    subplot(2,1,1),plot(w,hf),title('幅频特性曲线'),grid on;
    subplot(2,1,2),plot(w,hx),title('相频特性曲线'),grid on;
    figure(2)
    freqz(b,a,'whole')
    %
    [z,p]=tf2zp(b,a);
    r=2;
    k=200;
    w=0:1*pi/k:r*pi;                
    y=exp(i*w);                        %定义单位圆上的k个频率等分点
    N=length(p);                    %求极点个数
    M=length(z);                    %求零点个数
    yp=ones(N,1)*y;                    %定义行数为极点个数的单位圆向量
    yz=ones(M,1)*y;                    %定义行数为零点个数的单位圆向量
    vp=yp-p*ones(1,r*k+1);            %定义极点到单位圆上各点的向量
    vz=yz-z*ones(1,r*k+1);            %定义零点到单位圆上各点的向量
    Ai=abs(vp);                        %求出极点到单位圆上各点的向量的模
    Bj=abs(vz);                        %求出零点到单位圆上各点的向量的模
    Ci=angle(vp);                    %求出极点到单位圆上各点的向量的相角
    Dj=angle(vz);                    %求出零点到单位圆上各点的向量的相角
    fai=sum(Dj,1)-sum(Ci,1);        %求系统相频响应
    H=prod(Bj,1)./prod(Ai,1);        %求系统幅频响应
    figure(3)
    subplot(2,1,1),plot(w,H);title('离散系统幅频特性曲线'),xlabel('角频率'),ylabel('幅度')
    subplot(2,1,2),plot(w,fai);title('离散系统的相频特性曲线'),xlabel('角频率'),ylabel('相位')
  • 相关阅读:
    Javascript事件处理程序的3种方式
    JS原生AJAX
    所谓的渐进增强,优雅降级?
    1059 老师的苦恼
    HTML5 参数传递
    HDU 5289 Assignment(二分+RMQ-ST)
    HDU 3333 Turing Tree(离线树状数组)
    mac下 mysql 插入中文乱码解决
    校园商铺-7商品类别模块-5商品类别删除后端开发
    校园商铺-7商品类别模块-3商品类别添加后端开发
  • 原文地址:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4513110.html
Copyright © 2011-2022 走看看