我有一个一阶差分方程:y[n] = z0 * [n-1] + x[n] (2-3).通常我们要做的是应用z变换,然后使用"filter“函数。但是我的老师想要做不同的事情:
在一阶差分方程(2-3)中,设yRn和yIn表示yn的实部和虚部.用yRn-1,尹-1,xn,r,cos m和sin m,写出了表示yRn和yIn的一对实值差分方程。
(我忘了提到,xn=G*diracn,其中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程序实现这一对实数方程,并利用该程序生成r=1/2和m=0,m=pi/4的方程(2-3)的脉冲响应。对于这2种情况,绘制得到的脉冲响应的真实部分。与复杂递归输出的真实部分进行比较(2-3)
我不明白的是,除了应用z变换,然后使用"filter“函数之外,我如何才能做到这一点。我在网上查过,有一些关于状态空间形式的东西,但我不知道它是否相关。另外,我不想把解决方案交给我,我只是想知道如何解决它。非常感谢!
发布于 2015-12-15 01:52:53
你走在正确的轨道上。对于数字系统,如您所拥有的,您只需设置初始输入,并运行程序。没有必要做任何花哨的事情,你在很大程度上考虑这个问题。换句话说,对于一个简单的函数,您可以这样做:
f(0)=1;
f(n)=a*f(n-1);从本质上讲,对于这个函数,你会循环一些范围(可能是20个点),其中f(n)查看前面的函数。
对于您的函数,我怀疑您只是将真实的部分(yR[0])设置为1,yI[0]=0,并运行一段时间。
我知道Matlab是基于1的,所以您可能希望实际上将第一个值设置为1,但同样的原则适用。
https://stackoverflow.com/questions/34139676
复制相似问题