matlab7.0 s函数两输入相乘问题
编写s 函数时,需要两输入相乘。假设两个输入为常数,希望输出也为常数,可结果却成了矩阵,这是怎么回事?怎么解决?程序大概是这样的:function Output(block)
iq2ref=block.InputPort(1).Data;
omegam=block.InputPort(2).Data;
Cp0=iq2ref*omegam;
block.OutputPort(1).Data = Cp0; 我没太懂你这个, 但是我有两个建议:
1、如果是s函数,那么就是连在simulink里的,两个输入可以表示成u(1),u(2)
两个输入相乘可以在function sys = mdlOutputs(t,x,u) 下面写成
u(1)*u(2);
2、在你的程序里面, iq2ref=block.InputPort(1).Data; 这一句应该用{},而不是()
原问题是这样的
上面那个是对的,能够计算。我以为下面这个的问题是那样的,所以就写了个简单的代码,想方便回复者阅读。原来问题不是那么简单。我把附件附上,大家帮帮忙。Error evaluating registered method 'Outputs' of M-S-Function 'msfcn_yici' in 'msfun_yici/Level-2 M-file S-Function'. Invalid assignment in 'msfun_yici/Level-2 M-file S-Function': attempt to assign a matrix to a vector。 问题已经解决,我怀疑是在s函数内部不能有diff函数。把求导放到了s函数外部,问题就ok了。:lol
页:
[1]