s函数中状态变量的个数最多为多少?
s函数中,可不可以用一个4*6的矩阵作为状态变量?为什么当我的输入变量u为一个有八个元素的向量时系统就报错说输入太多呢?
回复 #1 ly012659 的帖子
你的矩阵是4*6的,也就是说有4个状态变量你输入8个肯定会报错的 有几个地方不明白:
1、状态变量的个数为什么是矩阵?在s函数中,mdlInitializeSizes(T)这个函数中如何设置size.NumContStates或者是size.NumDiscStates的值,让它的值为一个矩阵?
2、输入变量u的维数与mdlInitializeSizes(T)中size.NumInputs的值相关,如果设置为8,输入变量u的维数是8不应该报错呀!如果设置为4,出错也只会说输入向量的维数必须是4,不会报错说大也不会说小吧,不知如何判断出一定是输入太多?
回复 #2 lirui0662 的帖子
状态变量矩阵的维数与输入没有必然关系吧,只是将中间的过程变量暂存在里边,相当于一个寄存器吧?回复 #4 ly012659 的帖子
你能把你的空间状态方程和s函数发上来看看吗?实在是不知道你的状态变量矩阵是怎么回事,这样如何在s函数中设置? 附件上传的网址是什么,我找了半天没找到:@D点下回复!这里可以上传,不会是开玩笑的吧:@L :@L 刚才一直在快速恢复栏里找...
刚才的模型传错了,又重新传了一遍....
[ 本帖最后由 ly012659 于 2007-10-11 12:01 编辑 ] 你用的是自适应控制,这个我学得不是很好,你的仿真我也没法运行,也许版本问题
先说说我的几点疑问:
1、看s函数你想得到的是但是按照仿真图中的连接方法得到的是,且u似乎也有相似的问题。
2、r(k)-u(k)=e(k)?
3、sizes.NumDiscStates= 9,P = x(4:7,4:7),K = x(1:4,8),theta = x(1:4,9);而x0 = ;
状态变量x是4×9,还是6×9的矩阵
4、P = eye(4),eye好像没有定义过
5、在mdlInitializeSizes中theta = theta0,x0 = ,是否每次运行S函数时都要初始化theta=theta0,从我知道的来看theta(k)应该等于theta(k-1)
以上几点是我小小的疑问,外家之言见笑了 1 仿真模型传错了 所有的y u都是应该从k-1时刻开始,不可能有当前时刻的
2 同上
3 4*9
4 eye(4)4阶单位矩阵,eye是单位矩阵函数,mat自带
5 初始化只在仿真开始时才进行 明白了,看看s函数和仿真框图,模块之间连接没问题的话,应该可以运行啊
找不出问题所在!:@( 请高手赐教!!不胜感激:loveliness:
回复 #9 jack_boy 的帖子
请问s函数的参数里包含一个矩阵,那矩阵的初始化应该放在什么地方,谢谢!! 我也遇到了类似的问题,真的很麻烦,初学搞不懂 状态变量的个数跟输入没有关系吧,为什么状态变量多了s函数就不能导入到simulink,sfunction模块中呢
页:
[1]
2