0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于实现逻辑循环的方法分析和介绍

MATLAB 来源:djl 作者:柚籽 2019-09-17 11:24 次阅读

C代码中常用的循环控制语句有诸如for 、while以及do while。那么,这种循环逻辑在Simulink模型中是如何实现的呢?

Simulink里有三种建模手段:

Simulink 框图

Stateflow Chart

MATLAB Function

先来看看如何使用Simulink 框图来表达这种循环逻辑。

点击末尾的 “阅读原文” 下载本文的案例模型

循环逻辑

要得到:

y1 = 0;

for(inx = 0; inx <10; inx++)

{

y1 = u1[inx] + y1;

}

或者

while(flag && (num_iter <= 100)

{

flag = func ();

num_iter ++;

}

怎么做:

在 Simulink的Port & Subsystem库里,有IF-ELSE以及While模块。

For循环实例

1. 新建一个简单的Simulink模型

首先来看For循环,这是从Port & Subsystem库里拖出来的For Iterator模块:

关于实现逻辑循环的方法分析和介绍

双击它,搭建内部如下图:

关于实现逻辑循环的方法分析和介绍

代码生成之前所需要的配置、数据对象的构造以及信号关联等等,这些任务与之前所述一样,此处就不再重复说了。

5. 生成代码

Ctrl+B,生成代码。

如前面所设置的,可以看到下图所生成的For循环的C代码:

关于实现逻辑循环的方法分析和介绍

While循环实例

在Port & Subsystem库里的While Iterator模块,实现while循环的功能。从这个模型的端口来看,在这个循环里根据输入u2来计算输出y2的值,如下图。

关于实现逻辑循环的方法分析和介绍

在这个While Iterator子系统内部,则是具体的while循环的内容,如下图。

While Iterator模块,是这个循环的条件模块,可以设置最大的循环次数,同时cond为while的循环条件。而在上部的累加计算框图,则是 while 循环的内容。

关于实现逻辑循环的方法分析和介绍

生成代码,如下图。图中的func函数就是框图func子系统所生成的函数。内部做了一些更新flag的计算。另外可以看到累加框图生成的代码:y2 += u2。

关于实现逻辑循环的方法分析和介绍

do while循环实例

这个就简单了,直接把上图中的 while Iterator 模块双击设置为 do while 的模式就行了。

其他

生成代码结束之后,如果继续编译链接生成 exe 文件时,会有一个有意思的错误如下。有兴趣的可以去查看 math.h 的函数定义。

关于实现逻辑循环的方法分析和介绍

在Simulink的Port & Subsystem库里,有IF-ELSE以及While相应的子系统模块实现循环算法

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 逻辑
    +关注

    关注

    2

    文章

    832

    浏览量

    29441
  • 循环
    +关注

    关注

    0

    文章

    92

    浏览量

    15954
  • C代码
    +关注

    关注

    1

    文章

    89

    浏览量

    14286
收藏 人收藏

    评论

    相关推荐

    逻辑异或和逻辑或的比较分析

    逻辑异或(Exclusive OR,简称XOR)和逻辑或(OR)是数字逻辑和编程中两种基本的逻辑运算,它们各自具有独特的功能和应用场景。以下是对逻辑
    的头像 发表于 11-19 09:48 126次阅读

    关于LRU(Least Recently Used)的逻辑实现

    凑巧看到一个有关LRU(Least Recently Used)的逻辑实现,其采用矩阵方式进行实现,看起来颇有意思,但文章中只写方法不说原理,遂来研究下。LRU(Least Rece
    的头像 发表于 11-12 11:47 156次阅读
    <b class='flag-5'>关于</b>LRU(Least Recently Used)的<b class='flag-5'>逻辑</b><b class='flag-5'>实现</b>

    逻辑分析仪的常见故障及解决方法

    逻辑分析仪作为数字电路信号分析的关键工具,其稳定运行对于确保测试结果的准确性至关重要。然而,在使用过程中,可能会遇到一些常见故障。以下是对这些故障及其解决方法的详细探讨,以及一些预防故
    的头像 发表于 10-12 15:43 389次阅读

    浅谈逻辑分析仪的技术原理和应用领域

    或时序)开始捕获信号。这些触发条件可以根据工程师的需求进行设置,以实现灵活的信号捕获和分析。 信号分析:存储的信号数据可以通过逻辑分析仪的软
    发表于 09-12 15:04

    时序逻辑电路的五种描述方法

    时序逻辑电路是数字电路中的一种重要类型,它具有存储和处理信息的能力。时序逻辑电路的描述方法有很多种,不同的方法适用于不同的设计和分析场景。以
    的头像 发表于 08-28 11:39 727次阅读

    对放大电路的分析方法介绍

    放大电路是电子技术中非常重要的组成部分,它广泛应用于信号处理、通信、测量等领域。对于放大电路的分析,通常可以分为直流分析和交流分析两种情况。下面我们将介绍这两种
    的头像 发表于 08-07 10:08 477次阅读

    24M的逻辑分析仪怎么用的

    24M逻辑分析仪是一种用于数字信号测试和分析的仪器,它可以帮助工程师和技术人员对数字信号进行捕获、存储、显示和分析。以下是关于24M
    的头像 发表于 07-17 16:40 517次阅读

    组合逻辑控制器的基本概念、实现原理及设计方法

    广泛应用于计算机、通信、控制等领域。 本文将详细介绍组合逻辑控制器的基本概念、实现原理、设计方法、应用场景等方面的内容,以帮助读者全面了解组合逻辑
    的头像 发表于 06-30 10:26 1479次阅读

    组合逻辑控制器是用什么实现

    组合逻辑控制器是一种用于控制和管理复杂系统中各个组件之间交互的逻辑设备。它可以应用于各种领域,如计算机科学、通信、自动化控制等。在这篇文章中,我们将详细探讨组合逻辑控制器的实现
    的头像 发表于 06-30 10:11 455次阅读

    如何实现PLC的自动化控制逻辑

    地提高了生产效率和设备运行的稳定性。本文将详细介绍如何实现PLC的自动化控制逻辑,包括PLC的基本概念、编程工具、逻辑实现
    的头像 发表于 06-15 16:44 1064次阅读

    逻辑分析仪的使用说明

    系统的运行状况。本使用说明旨在详细介绍逻辑分析仪的基本功能、使用方法、操作技巧及注意事项,以助于用户更好地利用该仪器进行数字系统的调试和分析
    的头像 发表于 05-16 15:37 2333次阅读

    arduino如何停止loop循环

    退出这个循环。本文将详细介绍如何在Arduino中停止loop循环。 在Arduino中,可以通过使用一个布尔变量或条件语句来实现停止loop循环
    的头像 发表于 02-14 16:24 4190次阅读

    使用Raspberry Pi Pico实现简单的逻辑分析

    逻辑分析仪是一种电子仪器,可捕获并显示来自数字系统或数字电路的多个信号。逻辑分析仪可以将捕获的数据转换为时序图、协议解码、状态机跟踪、操作码,或者可以将操作码与源级软件相关联。
    的头像 发表于 12-11 09:33 1432次阅读
    使用Raspberry Pi Pico<b class='flag-5'>实现</b>简单的<b class='flag-5'>逻辑</b><b class='flag-5'>分析</b>仪

    利用SCR步进指令实现流水灯循环点亮

    在以往介绍西门子smart文章中,提到过流水灯的写法,有用循环位移字[ROL(R)_B]节来实现,有利用定时器(TON)来实现。今天我们利用SCR步进指令来
    的头像 发表于 12-04 09:15 2111次阅读
    利用SCR步进指令<b class='flag-5'>实现</b>流水灯<b class='flag-5'>循环</b>点亮

    如何利用SCR步进指令来实现流水灯循环点亮?

    在以往介绍西门子smart文章中,提到过流水灯的写法,有用循环位移字[ROL(R)_B]节来实现,有利用定时器(TON)来实现
    的头像 发表于 12-04 09:14 2538次阅读
    如何利用SCR步进指令来<b class='flag-5'>实现</b>流水灯<b class='flag-5'>循环</b>点亮?