我正在解决这个问题:给定一个脉冲响应,
- 找到系统函数,
- 找到差分方程表示,
- 找到零极点图,
- 如果输入为 ,则查找输出
这是我到目前为止所拥有的(MATLAB代码)
求 H(z)
对于第 2 部分,我使用了 我交叉相乘,然后进行逆变换并得到:
对于第 3 部分,我使用了以下
zplane
功能:b = [5 0]; a = [1 -0.25]; 数字; zplane(b,a);
第 4 部分是我感到困惑的地方。我采用差分方程的单边变换得到 假设系统是随机的(由于脉冲响应和输入中的单位步长函数,问题中也没有给出初始条件), 所以,重新排列后, 使用函数进行部分分数分解
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
然后取由 生成的项的逆变换,residuez
但是,当我检查时,情况并非如此。为了检查,我首先使用创建一个 MATLAB 生成的序列filter
%MATLAB 检查第 4 部分 n = 0:50;% 比较前 50 个样本 x = (1/4).^n; y = 过滤器(b,a,x);
然后,创建从逆 -transform 和函数
计算的检查序列residuez
ycheck = 5*(0.25).^n; 误差 = 最大值(绝对值(y-ycheck))
序列不一样,而且误差与名义上的相差无几。谁能告诉我哪里出错了?