0

我有一个一阶差分方程:y[n] = z0 * [n-1] + x[n] (2-3)。通常我们会做的是应用 z 变换,然后使用“过滤器”功能。但我的老师想以不同的方式做到这一点:

在一阶差分方程 (2-3) 中,让 yR[n] 和 yI[n] 表示 y[n] 的实部和虚部。写出一对实值差分方程,用 yR[n-1]、yI[n-1]、x[n] 和 r、cos m 和 sin m 表示 yR[n] 和 yI[n]

(我忘了提到,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 程序来实现这对实数方程,并使用该程序生成方程 (2-3) 的脉冲响应,其中 r=1/2 和 m=0,并且 m=pi/4。对于这两种情况,绘制获得的脉冲响应的实部。与复数递归输出的实部进行比较 (2-3)

我不明白的是,除了应用 z 变换然后使用“过滤器”功能之外,我还能如何做到这一点。我在网上查了一下,有关于状态空间形式的东西,但我不知道它是否相关。另外,我不希望将解决方案放在银盘上交给我,我只想知道如何解决。非常感谢!

4

1 回答 1

0

你在正确的轨道上。对于像您这样的数字系统,您只需设置初始输入,然后运行程序。没有必要做任何花哨的事情,您对问题的思考太多了。换句话说,对于一个简单的函数,你可以这样做:

f(0)=1;
f(n)=a*f(n-1);

基本上为此,您将循环某个范围(可能是 20 个点),其中 f(n) 查看前一个函数。

对于您的函数,我怀疑您只是将实部 ( yR[0]) 设置为 1 yI[0]=0, 并运行一段时间。

我知道 Matlab 是基于 1 的,因此您可能希望将第一个值实际设置为 1,但同样适用。

于 2015-12-15T01:52:53.177 回答