matlab取整函数名_取整函数定义


在处理信号、控制等软件程序中,时常需要将S域的传递函数转化为实际可执行的代码。对于不常接触此领域的人,可能需要花费一些时间查找相关方法。为了便于自己及未来遇到相同问题的人们,下面将详细记录并解释整个转换流程。

进行信号处理时,matlab是一个强大的工具,因此这里的说明将以matlab和C语言为例。若需转换为其他语言,其过程大致相似。

整体转换流程如下:S域传递函数先通过matlab转换为Z域传递函数,然后再转换为C代码。

我们拿到一个S域的传递函数,其表达方式如某些文献或软件所示。

那么,如何将这个连续的传递函数转换为Z域(即数字化)呢?这里我们可以使用matlab的c2d函数。

c2d函数最常用的参数形式如下:

sysd = c2d(sys, Ts, method)

其中,sys代表连续系统传递函数,Ts是采样时间,method是转换方法。

method有五种选择方法:

1. ‘zoh’(零阶保持器),这是默认的方法。

2. ‘impulse’(脉冲响应不变法)。

3. ‘tustin’(双线性变换法)。

4. ‘matched’(零极点匹配法)。

那么,sys又是如何得到的呢?在控制系统中,传递函数G(s)通常可以用matlab中的tf函数来表示。

例如,传递函数的表达式在matlab中可以用以下方式表示:

H = tf([b0 b1 ... bm], [a0 a1 ... an])

其中,[b0 b1 ... bm]是分子,即传递函数的分子系数;[a0 a1 ... an]是分母,即传递函数的分母系数。

以一个具体例子来说明整个过程:假设我们的传递函数表达式为H=tf([1 1], [1 4 5]),那么在matlab中我们可以这样表示。接着,我们使用c2d函数将其转换为采样时间为1ms的数字系统传递函数。

HD = c2d(H, 0.001, 'zoh')

除了‘zoh’方法外,大家也可以尝试其他几种变换方法,看看结果有何不同。

得到Z域的传递函数后,下一步就是要将这个传递函数转化为C语言代码。在C代码中,我们用数组x表示输入,y表示输出。通过一定的数算,我们可以将传递函数的分子和分母转化为C语言中的运算表达式。

例如,对于某个DSP形式的传递函数,我们可以将其转化为C语言代码中的运算过程。利用x[3],y[3]等数组来存储输入输出的值,并按照一定的数学关系进行计算。最终得到的C代码中,y[0]表示当前运算周期的输出,x[0]表示当前周期的输入。