matlab 调用外部函数,matlab 流程调用外部函数和状态调用外部函数 的疑问

本帖最后由 hpp19860 于 2017-5-23 11:10 编辑

各位大神好,我刚开始入手代码生成。发现外部函数 testfun() 在状态图的位置不一样会导致产生的代码差别很大。file:///D:\Program Files (x86)\QQ\QQmsg\52747630\Image\C2C\7VI6XP9H6}L5MKU}P6`MR%P.png                     testfun() 函数为外部c 函数,问了几个大神大门告诉我产生这个的原因是流程调用和状态调用的差别,我想问下流程调用和状态调用是什                      么意思,多谢!

调用方式一:在状态入口处调用testfun函数生成代码中会多如下部分(见图1)

生成的代码会对模型中的 i  值进行一系列的判断

if (mytest_DW.i < 2.147483648E+9) {                                                         if (mytest_DW.i >= -2.147483648E+9) {

tmp = (int32_T)mytest_DW.i;

} else {

tmp = MIN_int32_T;

}

} else {

tmp = MAX_int32_T;

}

调用方式二:在状态默认迁移处调用testfun函数生成代码中会多如下部分(见图2)

此方式中自动生成的代码没有对模型中的 i 值进行任何判断,而是直接拿来用

if (mytest_DW.is_active_c3_mytest == 0U) {

mytest_DW.is_active_c3_mytest = 1U;

mytest_DW.is_c3_mytest = mytest_IN_myfor;

testFun(mytest_B.FromWorkspace[1]);

for (i = 0; i < 6; i++) {

if (!((mytest_B.FromWorkspace[i + 1] > 8.0) || (mytest_B.FromWorkspace[i +1] < 4.0))) {

mytest_DW.yow += mytest_B.FromWorkspace[i + 1];

} else {

}

模型见附件:其中  b=2:1:10;

file:///D:\Program Files (x86)\QQ\QQmsg\52747630\Image\C2C\7VI6XP9H6}L5MKU}P6`MR%P.png

file:///D:\Program Files (x86)\QQ\QQmsg\52747630\Image\C2C\7VI6XP9H6}L5MKU}P6`MR%P.png

1.png

(11.76 KB, 下载次数: 0)

2017-5-23 10:50 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

方式一:testfun 函数在状态如入口处调用

88405b49a08916f58900e1e167125f47.png

2.png

(11.83 KB, 下载次数: 0)

2017-5-23 10:51 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

方式二:testfun函数在默认迁移处调用

4ea88c5e926dea7ef42e339fa1ab8c84.png

99e39a8196ca8f63dc1eee7b0d72d0ed.gif

2017-5-23 11:02 上传

点击文件名下载附件

318.62 KB, 下载次数: 4

b=2:1:10;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值