首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Simulink代码生成: While Iterator子系统及其代码

  • 23-09-22 01:02
  • 4152
  • 6492
blog.csdn.net

本文研究Simulink中的While Iterator子系统及其生成的代码。

文章目录

  • 1 Simulink中的While Iterator子系统
  • 2 While Iterator子系统建模示例
  • 3 While Iterator子系统的代码
  • 4 总结

1 Simulink中的While Iterator子系统

在C语言中,除了for循环以外,还可以通过while或者do-while完成循环。在Simulink中,除了For Iterator子系统以外,也有相应的While Iterator子系统。

新建一个While Iterator子系统(While Iterator Subsystem)如下。
在这里插入图片描述

2 While Iterator子系统建模示例

本例通过While Iterator子系统建模实现从1累加到n的过程,n是外部输入的信号。
1)首先双击进入子系统,将While Iterator模块设置如下:
在这里插入图片描述

  • Maximum number of iterations是指最大迭代次数,这里设为-1表示没有最大迭代次数,while循环的中止条件由外部决定而不由迭代次数决定
  • While loop type是指循环类型,这里选择while循环。其他情况下也可以选择do-while
  • States when starting选为reset,表示每一个时间步都会重置
  • Show iteration number port表示迭代次数,勾选上,后面建模会用到这个迭代次数

2)搭建累加和判断模块如下:
在这里插入图片描述

  • 通过迭代次数和Inport1做比较,输入给cond来决定While Iterator子系统是否执行。这里为什么用<来比较而不是<=来比较,可以自己仔细思考一下。
  • IC是初始条件,这里设为恒定为1
  • 后面通过Unit Delay模块来累加

3)在子系统外部添加常数和disp观测,并运行模型。
在这里插入图片描述
可以看出,输出值6是1+2+3的总和。

3 While Iterator子系统的代码

1)将模型的输入输出替换成port模块如下:
在这里插入图片描述
2)生成代码如下:
在这里插入图片描述
代码比较容易看懂,做一点简单解释。

  • s1_iter变量对应模型中的迭代次数,也就是While Iterator模块的输入口。每个循环都会将s1_iter,并加到Out1上面去
  • loopCond是while循环的条件,初始循环条件是由In2决定的,对应着模型中的IC输入口;在循环的过程中,loopCond也会通过关系比较而不停地变化,直到loopCond变成false后就退出while循环
  • 这里就能看出为什么关系比较要用小于号而不是小于等于号,因为第一次执行while循环,是外部决定的

如果用do-while循环也可以实现这个简单的累加功能,可以自己尝试一下。

4 总结

While Iterator子系统在建模中也会有用到的场景,但是感觉上应该不多,了解到就行了。

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/108908296"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top