xuexixuexia 发表于 2006-12-31 18:51

求助:s函数中的微分问题

最近我用s函数写控制器
里面的参数是用微分方程给出的,比如参数   dx(表述x的一阶导数)=a+30*(b+x),
这个我知道可以用微分部分即 sys(1)=a+|30*(b+x(1))表示,

但是,我的控制器里面却包含的是dx, 例如控制器F=M(x)+C(dx)
控制器里面的x我直接写成x(1)即可,而 dx呢?请问我应该怎么表示出来

这里,谢谢了先:@)

wf1254 发表于 2007-1-2 21:27

你是说dx无法利用是吧,若是,可以采用在S函数中定义全局变量的方法,其命令是set_param(gcb,'UserData',mydata)和mydada=get_param(gcb,'UserData'),其中mydada是随意自定义的变量名,可以是结构体,针对你的问题可以在微分函数中用mydata=sys;set_param(gcb,'UserData',mydata);记录下微分值,在使用的地方用mydada=get_param(gcb,'UserData');得到。

Hermes 发表于 2007-1-7 15:24

最好能有具体的问题,给你三个方案,你尝试一下:
1将dx也作为状态量
2在output中用a+30*(b+x)代替dx
3将x,dx作为输出量,然后再重新加模块定义控制力
页: [1]
查看完整版本: 求助:s函数中的微分问题