带差分方程和系统函数的单面 Z 变换

信息处理 matlab z变换 冲动反应
2022-02-20 13:08:02

我正在解决这个问题:给定一个脉冲响应,

  1. 找到系统函数,
  2. 找到差分方程表示,
  3. 找到零极点图,
  4. 如果输入为 ,则查找输出y[n]x[n]=0.25nu[n]

这是我到目前为止所拥有的(MATLAB代码)

  1. 求 H(z)

    H(z)=510.25z1,|z|>0.25

  2. 对于第 2 部分,我使用了 我交叉相乘,然后进行逆变换并得到:

    H(z)=Y(z)X(z)
    Z
    y[n]0.25y[n]=5x[n]

  3. 对于第 3 部分,我使用了以下zplane功能:

    b = [5 0];
     a = [1 -0.25];
     数字; zplane(b,a);
  4. 第 4 部分是我感到困惑的地方。我采用差分方程的单边变换得到 假设系统是随机的(由于脉冲响应和输入中的单位步长函数,问题中也没有给出初始条件), 所以,重新排列后, 使用函数进行部分分数分解Z

    Y+(z)0.25[y[1]+z1Y+(z)]=5X+(z)
    x[n]
    y[1]=0
    Y+(z)=510.5z1+0.0625z2,|z|>0.25
    residuez

    b1 = [5 0 0];
     a1 = [1 -0.5 0.0625];
     [R p C] = 残基z(b1,a1)
    R =
    
          0
          5
    
    
     p =
    
         0.2500
         0.2500
    
    
     C =
    
          0
    

然后取由 生成的项的逆变换,Zresiduez

y[n]=5(1/4)nu[n]

但是,当我检查时,情况并非如此。为了检查,我首先使用创建一个 MATLAB 生成的序列y[n]filter

 
%MATLAB 检查第 4 部分
n = 0:50;% 比较前 50 个样本
x = (1/4).^n;  
y = 过滤器(b,a,x);

然后,创建从逆 -transform 和函数 计算的检查序列Zresiduez

ycheck = 5*(0.25).^n;
误差 = 最大值(绝对值(y-ycheck))

序列不一样,而且误差与名义上的相差无几。谁能告诉我哪里出错了?

1个回答

您误解了residuez. 请注意,还有第四个输出参数,即极点的多重性(在您的示例中为)。在您的情况下,该函数没有多大帮助,因为您已经知道极点,并且结果已经是部分分数形式:2residuez

(1)Y(z)=X(z)H(z)=5(114z1)2

您可以table -transform ,或者甚至更直接,通过时域中的卷积计算结果:Z(1)

(2)y[n]=k=x[k]h[nk]

求解(2)对于给定的序列非常简单。