我有一阶差分方程:y[n] = z0 * [n-1] + x[n] (2-3)
。通常我们要做的是应用z变换,然后使用“过滤”功能。但是我的老师希望以不同的方式做到这一点:
在一阶差分方程(2-3)中,设yR [n]和yI [n] 表示y [n]的实部和虚部。写一对 表示yR [n]和yI [n]的实值差分方程 yR [n-1],yI [n-1],x [n]和r,cos m和sin m
(我忘了提及,x [n] = G * dirac [n]其中G是复数常数,其中r,cos m和sin m来自)。
这是我的结果(这是我能想到的最好的结果):
yR[n]=r(yR[n-1]cosm - yI[n-1]sinm) + xR[n]
yI[n]=r(yI[n-1]cosm + yR[n-1]sinm) + xI[n]
接下来的问题是:
编写一个MATLAB程序来实现这对实数方程式 用这个prorgam产生方程(2-3)的脉冲响应 对于r = 1/2且m = 0,并且m = pi / 4。对于这两种情况,绘制实际部分 获得的脉冲响应比较真实的部分 复数递归的输出(2-3)
我不明白的是除了应用z变换然后使用“过滤”功能之外我该如何做到这一点。我在网上查了一下,有一些关于状态空间的表格,但我不知道它是否相关。此外,我不打算在银盘上将解决方案交给我,我只是想知道如何解决这个问题。非常感谢你!
答案 0 :(得分:0)
你走在正确的轨道上。对于像您这样的数字系统,只需设置初始输入,然后运行程序即可。没有必要做任何花哨的事情,你非常想过这个问题。换句话说,对于一个简单的函数,你可以这样做:
f(0)=1;
f(n)=a*f(n-1);
基本上为此你会循环一些范围(可能是20分),其中f(n)查看前一个函数。
对于您的功能,我怀疑您只需将实部(yR[0]
)设置为1,yI[0]=0
,然后运行一段时间。
我知道Matlab是基于1的,所以你可能想要将第一个值实际设置为1,但同样的原则适用。