yuzc025 发表于 2007-11-19 19:23

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;

witty01 发表于 2007-11-20 12:34

我没太懂你这个, 但是我有两个建议:
1、如果是s函数,那么就是连在simulink里的,两个输入可以表示成u(1),u(2)
两个输入相乘可以在function sys = mdlOutputs(t,x,u) 下面写成
u(1)*u(2);
2、在你的程序里面,   iq2ref=block.InputPort(1).Data; 这一句应该用{},而不是()

yuzc025 发表于 2007-11-20 16:29

原问题是这样的

上面那个是对的,能够计算。我以为下面这个的问题是那样的,所以就写了个简单的代码,想方便回复者阅读。原来问题不是那么简单。我把附件附上,大家帮帮忙。
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。

yuzc025 发表于 2007-11-21 20:26

问题已经解决,我怀疑是在s函数内部不能有diff函数。把求导放到了s函数外部,问题就ok了。:lol
页: [1]
查看完整版本: matlab7.0 s函数两输入相乘问题