声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2313|回复: 3

[基本模块类] matlab7.0 s函数两输入相乘问题

[复制链接]
发表于 2007-11-19 19:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
编写s 函数时,需要两输入相乘。假设两个输入为常数,希望输出也为常数,可结果却成了矩阵,这是怎么回事?怎么解决?程序大概是这样的:
function Output(block)
   iq2ref=block.InputPort(1).Data;
omegam=block.InputPort(2).Data;
Cp0=iq2ref*omegam;
block.OutputPort(1).Data = Cp0;
回复
分享到:

使用道具 举报

发表于 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; 这一句应该用{},而不是()
 楼主| 发表于 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。

msfun_yici.mdl

19.08 KB, 下载次数: 19

msfcn_yici.m

3.08 KB, 下载次数: 13

 楼主| 发表于 2007-11-21 20:26 | 显示全部楼层
问题已经解决,我怀疑是在s函数内部不能有diff函数。把求导放到了s函数外部,问题就ok了。:lol
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 03:25 , Processed in 0.056079 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表