如何用c语言编程实现一个传递函数?

我在要用到一个控制器,递函数是G(s)=(1+As)(1+Bs)/(1+Cs)(1+Ds),但是不知道怎么用c语言来实现。是直接将G(s)通过离散化再写出递推关系吗?为什么用拉氏变换到z变换转换后得到的结果和用matlab里面c2d()命令得到的结果不一样,比如像最简单的一个惯性环节,G(s)=1/(s+3),采样时间0.01s,如果直接用z变换公式得到的是G(z)=z/(z-0.9704),而用matlab里面c2d()命令,选择零阶保持,得到的结果却是G(z)=0.009851/(z -0.9704),这是为什么呢,到底应该怎样算?

第1个回答  2013-10-17
  既然是零阶保持输入,那手算的时候应该也有零阶保持器的吧。
  既然离散系统,那么递推关系式也许可以吧。但是自己用C语言写,估计很麻烦,既然有Matlab就用Matlab算啊。
  对于含有零阶保持器的离散系统的传递函数你可以上网搜,也可以参考自动控制原理的书籍啊! 至于Matlab使用的方面,实现ABCD可调节也是可以的,你可以搜索Matlab里关于syms或者input函数的使用。 也可以尝试学习GUI的编程。本回答被提问者采纳
相似回答