if中的break_Simulink中switch case功能实现

simulink中实现switch case的功能,可以直接采用switch-case的形式,也可以采用if的嵌套形式。

但是需要注意的是:如果是直接生成的是switch-case的形式,因为switch语句后面接的变量必须为整形,所以simulink中会自动进行转化。

例如:

3f77fb540f5fc1324007de773090a465.png

起初一看,1.9不在1,2,3三个条件之间应该执行default语句,也就是0。但是仿真的结果却是1。simulink在执行switch case的逻辑时,是先将double类型1.9转化为int32的类型,也就是1。然后再执行后续语句,所以最后的结果是1而不是0。

如果需要实现switch后的变量和case后的条件部分不为整形.那么建议使用if进行嵌套。

23d875e3678e05803e310b6d639a5124.png

实例说明:

算法功能:

switch(x)

{

case 1: y=1; break;

case 2: y=2; break;

case 3: y=3; break;

default:y=0; break;

}

1>直接生成switch case形式

①.MultiportSwitch模块

模型:

121bd3a0b41a4cdcd18bfb0ee7c0f20d.png

54dcb05f322b8d36a60bf37b0ae887ba.png

代码生成:

8c76f45b452df9edfe470b620eb43d16.png

②Switch Case和Switch Case Action Subsystem模块

模型:

d9af15c30db113bb4d9935b2ebdca4f4.png

代码生成:

d321ad32502beb1a65eaec23f2684e63.png

c7d89f82e21ba0285a1c9b4c9e7e08a7.png

2>生成if嵌套形式

①stateflow

模型:

35580cb209e7cfd674c52255a25ca6ba.png

3e5cf4d7c385f925ca2ea51fd725e3a3.png

1f9b25055cf635e27c0e56493c906be8.png

为使和上述功能保持一致,将输入做了强制转化

0229e305b036b75c6ff318c89f00e954.png

代码生成:

e4256d04fa8e8e19d1a14294ffbc46db.png

②switch模块

模型:

为使和上述功能保持一致,将输入做了强制转化

6e3f7fa8defd330d9aa0a7b88a94b859.png

代码生成:

37b0a65687aa1223c3244a0c186c5c8f.png

如果有用请帮忙转发或者点击看一看,有问题也欢迎进行留言。

48bda51511f615a307dc5b0b9f528797.png

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值