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

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

3天内不再提示

条件语句/循环语句simulink的实现方法(一)

冬至子 来源:林南橘 作者:林南橘 2023-07-21 16:48 次阅读

条件语句和循环语句是计算机编程中常用的两种控制结构

条件语句是一种根据某个条件来执行不同操作的程序结构。当满足特定条件时,程序会执行一个或多个指定的操作;否则,程序将跳过这些操作并继续执行下一条语句。在大多数编程语言中,条件语句通常使用if-else语句实现,也可以使用switch-case语句等其他形式。

循环语句是一种重复执行相同或类似操作的程序结构。它允许程序按照预定义的次数或者直到某个条件被满足为止重复执行一组语句。在大多数编程语言中,循环语句通常使用for、while、do-while等关键字实现。

通过使用条件语句和循环语句,程序员可以更加灵活地控制程序的流程和行为,从而实现各种复杂的功能和应用

文本通过python,Stateflow,Simulink以及MATLABFunction四种方法实现If-else、Switch -case、For循环、While循环、Do-while循环

If-Else

if else循环的本质是根据给定条件判断程序执行哪个分支。具体来说,if语句会先判断括号中的条件是否为真,如果为真,则执行花括号内的代码块;否则,跳过该代码块,继续执行下一个语句。

x =10ifx >5:print("x大于5")else:print("x小于等于5")

在这个示例中,我们定义了变量x,并使用if else语句对其进行判断。首先,if语句会判断x是否大于5,由于x的值为10,因此条件成立,程序将输出“x大于5”。如果x的值为3,则条件不成立,程序将跳过if语句块,执行else语句块,输出“x小于等于5”。

总之,if else循环可以帮助我们根据不同的情况采取不同的行动,从而实现更加灵活和智能的编程。

举例说明1

对于自动空调控制系统,以夏季空调制冷为例,当主副驾设定不同需要求温度时(temp_set_driver,temp_set_passenger),整车TD负荷值按空调设定温度最低的一侧取值进行计算

Python实现

temp_set_driver =int(input("请输入主驾温度:")) temp_set_passenger =int(input("请输入副驾温度:"))iftemp_set_driver <= temp_set_passenger: output = temp_set_driverelse: output = temp_set_passengerprint("自动空调设定温度为:", output)""" 我们使用了input()函数来获取用户输入,并将其转换成整数类型。然后,我们使用if else语句来判断两个变量的大小关系,并将最小值赋给output变量。 最后输出自动空调设定温度即可。例如,在上述示例中,当用户输入主驾温度为20,副驾温度为22时,程序会输出“自动空调设定温度为:20”,因为此时主驾温度小于等于副驾温度。而当用户输入主驾温度为28,副驾温度为24时,程序会输出“自动空调设定温度为:24”,因为此时主驾温度大于副驾温度。 """

matlab function实现

functionoutput=auto_temp_control(temp_set_driver, temp_set_passenger)% 自动空调设定温度取主驾和副驾温度的最小值iftemp_set_driver <= temp_set_passengeroutput= temp_set_driver;elseoutput= temp_set_passenger;endfprintf("自动空调设定温度为:%dn",output); %{ 我们定义了一个名为auto_temp_control的MATLAB函数,并接受两个输入参数:temp_set_driver和temp_set_passenger。然后,我们使用ifelse语句来判断两个变量的大小关系,并将最小值赋给output变量。 最后,我们使用fprintf()函数输出自动空调设定温度即可。例如,在上述示例中,当用户输入主驾温度为20,副驾温度为22时,程序会输出“自动空调设定温度为:20”,因为此时主驾温度小于等于副驾温度。而当用户输入主驾温度为28,副驾温度为24时,程序会输出“自动空调设定温度为:24”,因为此时主驾温度大于副驾温度。 %}

simulink实现

图片

图片

当然,simulink实现方法是为了体现If-Else条件语句的逻辑,采用了Switch模块,单看此部分的实例,选用min模块会更加方便

图片

Stateflow实现

图片

If-Else If-Else

If-Else If-Else通常用于处理多种情况的判断,例如根据不同的条件执行不同的操作。以下是一个简单的示例代码(Python):

score =85ifscore >=90: grade ='A'elifscore >=80: grade ='B'elifscore >=70: grade ='C'elifscore >=60: grade ='D'else: grade ='F'print("成绩为:", grade)

举例说明2

**当车内环境温度(temp_incar)低于10℃时,空调开启加热模式(AC_state==heater),当车内环境温度处于10℃到30℃时开启空调自然风模式(AC_state==natural_wind),当车内环境温度大于30℃时开启制冷模式(AC_state==cooling)**

Python实现

temp_incar =float(input("请输入车内环境温度:"))iftemp_incar <10: AC_state ='heater'eliftemp_incar >=10andtemp_incar <=30: AC_state ='natural_wind'else: AC_state ='cooling'print("空调状态为:", AC_state)

matlab function实现

functionAC_state=calculate_AC_state()% 计算空调状态temp_incar = input("请输入车内环境温度:");iftemp_incar <10AC_state ='heater';elseiftemp_incar >=10&& temp_incar <=30AC_state ='natural_wind';elseAC_state ='cooling';endfprintf('空调状态为:%sn', AC_state);end%{ 在这个示例中,我们首先定义了一个名为calculate_AC_state()的MATLAB函数,并使用input()函数提示用户输入车内环境温度。然后,我们使用If-Else If-Else深层次逻辑来根据车内环境温度计算出对应的空调状态,与之前的Python代码相同。最后,我们使用fprintf()函数输出计算出的空调状态。 当你调用该函数时,程序会等待用户输入车内环境温度,并根据输入的值计算出对应的空调状态。 %}

simulink实现

图片

如果执行语句只是简单的赋值,使用 switch 模块即可,如果涉及到更复杂的计算,应避免频繁使用开关块进行条件分岔,可考虑使用 If 以及 If ActionSubsystem 模块,但是这个"复杂"也很难定义。对于 Switch来说,通常会约束一个层叠的上限,比如三层,如果 switch 模块层层叠叠层级非常多也可以考虑用子系统分别“包裹”起来,如果没有状态量的话,最好就不要用 If Action Subsystem模块,理论上 Stateflow,Simulink 以及 MATLAB Function 几乎都可以完成相同的模型,只是要根据应用场合和使用习惯加以取舍。

使用 If 以及 If Action Subsystem 模块对上面的switch模块进行改造,如下:

在Simulink中,If模块和If Action Subsystem模块组合可以用于实现多个条件分支逻辑。

  • If Action Subsystem 模块是经过预先配置的 Subsystem模块,可以作为一个起点,用来创建由 If模块控制执行的子系统。If 模块计算逻辑表达式,然后根据计算结果输出动作信号。子系统的执行由放置在子系统内部的 Action Port模块控制;
  • If 模块以及包含 Action Port 模块的 If Action Subsystem 模块实现 if-else 逻辑来控制子系统的执行。有关使用 If 模块的示例,请参阅 If 执行子系统;
  • If 模块从一组子系统中选择 If Action Subsystem 模块的执行。无论 If 模块选择哪个子系统,您都可以使用 Merge模块创建单个信号;
  • If Action Subsystem 模块中的所有模块必须以与驱动 If 模块相同的速率执行。您可以通过将每个模块的采样时间参数设置为继承-1或与 If 模块采样时间相同的值来满足此要求;
    图片

Stateflow实现

图片

Switch - Case

在Python中,switch-case结构并不是一种原生的语言结构。但我们可以使用其他方式来实现类似的功能。

一种常见的方法是使用字典(dictionary)和函数映射来vwin switch-case结构。具体步骤如下:

    1. 创建一个字典,将每个条件对应的操作函数作为值存储在其中。
    1. 根据输入信号选择相应的操作函数,并执行它。

以下是一个使用字典和函数映射实现switch-case结构的示例代码:

defcase_1():print("Case 1")defcase_2():print("Case 2")defcase_3():print("Case 3")# 创建字典cases = {1: case_1,2: case_2,3: case_3 }# 输入信号u =2# 根据输入信号选择相应的操作函数,并执行它ifuincases: cases[u]()else:print("Invalid input")

在上述代码中,我们首先定义了三个操作函数case_1()case_2()case_3(),分别对应三种情况。然后,我们创建了一个字典cases,将每个条件对应的操作函数作为值存储在其中。最后,根据输入信号选择相应的操作函数,并执行它。

既然python尚不支持Switch-Case,那我们先用一个C代码示例展示Switch-Case语法结构吧

#include< stdio.h >intmain(){intchoice;printf("Please select an option:n");printf("1. Option 1n");printf("2. Option 2n");printf("3. Option 3n");scanf("%d", &choice);switch(choice) {case1:printf("You selected Option 1.n");break;case2:printf("You selected Option 2.n");break;case3:printf("You selected Option 3.n");break;default:printf("Invalid input.n");break; }return0; }/* 在上述代码中,我们首先输出一个菜单,让用户选择一个选项。然后,我们使用switch-case结构来根据用户的选择执行相应的操作。如果用户输入了无效的选项,则会输出“Invalid input.”。 这个示例代码可以用于各种需要用户交互的场景,例如命令行工具、控制台程序等。 */

闲话休提,我们接着举例说明Switch-Case语句如何用simulink实现

举例说明3

**空调吹风模式具有多种状态,AC控制器需要把不同吹风模式反馈给大屏控制器用于状态显示,AC_flow_state=0x0时,AC_state=’face’;AC_flow_state=0x1时,AC_state=’foot’;AC_flow_state=0x2时,AC_state=’defrost’**

C代码实现

#include< stdio.h >intmain(){intAC_flow_state =1;charAC_state[10];switch(AC_flow_state) {case0:sprintf(AC_state,"face");break;case1:sprintf(AC_state,"foot");break;case2:sprintf(AC_state,"defrost");break;default:printf("Invalid input.n");return-1; }printf("The AC state is %s.n", AC_state);return0; }/* 在上述代码中,我们首先定义了一个整型变量AC_flow_state表示空调吹风模式状态。然后,我们使用switch-case结构根据不同的状态值来设置字符串类型的变量AC_state。最后,我们输出AC_state的值。 需要注意的是,在default分支中,我们输出了“Invalid input.”并返回-1,这是为了防止程序出现未知错误。 char AC_state[10]是一个字符数组,用于存储空调吹风模式的状态。在这个例子中,我们将其定义为长度为10的数组,因为最长的状态字符串"defrost"有7个字符,再加上结尾符�,所以需要分配至少8个字节的空间。 */

matlab function代码实现

functionAC_state=get_AC_state(AC_flow_state)% This function returns the corresponding AC state based on the input flow state.switchAC_flow_statecase0AC_state ='face';case1AC_state ='foot';case2AC_state ='defrost';otherwiseerror('Invalid input.');endfprintf('The AC state is %s.n', AC_state);end%{ 在上述代码中,我们首先定义了一个MATLAB函数get_AC_state(),它接受一个整型参数AC_flow_state表示空调吹风模式状态。然后,我们使用switch-case结构根据不同的状态值来设置字符串类型的变量AC_state }%

simulink实现

图片

Stateflow实现

图片

而对于 Stateflow 来说,不管是if-else还是switch-case,其实都是流程图。所以就算你按照switch-case的逻辑画了出来,生成的代码依旧是if-else形式的。

所以需要我们稍微配置一下:模型设置→代码生成→代码风格→勾选convert if-elseif-else patterns to switch case

图片

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

    关注

    51

    文章

    7938

    浏览量

    144602
  • 控制器
    +关注

    关注

    112

    文章

    15766

    浏览量

    174658
  • 自动控制系统

    关注

    1

    文章

    186

    浏览量

    19289
  • python
    +关注

    关注

    53

    文章

    4748

    浏览量

    83943
  • simulink仿真
    +关注

    关注

    0

    文章

    75

    浏览量

    8520
收藏 人收藏

    评论

    相关推荐

    开关语句循环语句

    switch/case开关 语句种多分支选择 语句,是用来 实现多方向 条件分支的 语句。虽然从理论上
    发表于07-15 14:26 18次下载

    C语言入门教程-if语句和while循环

    if 语句和while 循环C语言中,if 语句和while 循环都会用到布尔表达式。下面是 个使用if 语句
    发表于07-29 10:48 8438次阅读

    Java的循环语句的详细资料说明

    本文档的主要内容详细介绍的是Java的 循环 语句的详细资料说明包括了:1、while 循环 语句,2、do…while 循环
    发表于03-22 08:00 0次下载
    Java的<b class='flag-5'>循环</b><b class='flag-5'>语句</b>的详细资料说明

    C语言的for循环语句的程序和电路图免费下载

    1、在许多实际问题中,需要程序进行有规律的重复执行,这时可以用 循环 语句实现。在c语言中。用来 实现 循环
    发表于08-20 17:31 1次下载
    C语言的for<b class='flag-5'>循环</b><b class='flag-5'>语句</b>的程序和电路图免费下载

    Verilog可综合的循环语句

    Verilog中提供了四种 循环 语句,可用于控制 语句的执行次数,分别为:for,while,repeat,forever。其中,for,while,repeat是可综合的,但 循环的次数需
    发表于10-13 12:23 1.9w次阅读

    条件判断语句(if语句

    条件判断 语句,作为任何编程语言都不可缺少的内容,在C语言中也不例外。 条件判断 语句可以让程序的功能更加复杂,从而 实现各种各样的功能。
    的头像 发表于02-21 15:24 3003次阅读
    <b class='flag-5'>条件</b>判断<b class='flag-5'>语句</b>(if<b class='flag-5'>语句</b>)

    什么是python break语句-终止循环

    循环的过程中如果要退出 循环,我们可以用break 语句和continue 语句
    的头像 发表于02-23 11:17 2250次阅读

    C语言for语句介绍

    除了可以用while 语句和do...while 语句 实现 循环外,C语言还提供for 语句 实现
    的头像 发表于03-09 11:14 1004次阅读

    详解Python条件语句

    在 Python 中,if...else 是 条件 语句,可以根据给定的 条件执行不同的操作。这个 语句通常用于控制程序的流程。
    的头像 发表于04-19 15:39 682次阅读

    Python的循环语句介绍

    哈喽大家好,我是知道。今天带大家了解下Python的 循环 语句定义 循环 语句允许我们执行 语句
    的头像 发表于05-11 17:39 762次阅读

    Verilog常用的循环语句及用途

    本文主要介绍verilog常用的 循环 语句循环 语句的用途,主要是可以多次执行相同的代码或逻辑。
    的头像 发表于05-12 18:26 1685次阅读

    MATLAB中条件语句循环结构的使用方式

    MATLAB提供了多种 条件 语句循环结构。
    的头像 发表于07-05 09:41 3434次阅读

    条件语句/循环语句simulink实现方法(二)

    for 循环是 Python 中用于遍历序列(如列表、元组、字符串等)的迭代结构。for 循环的本质是按照序列中的元素顺序执行代码块,并在每次迭代中获取序列的下 个元素。
    的头像 发表于07-21 16:51 5682次阅读
    <b class='flag-5'>条件</b><b class='flag-5'>语句</b>/<b class='flag-5'>循环</b><b class='flag-5'>语句</b><b class='flag-5'>simulink</b>的<b class='flag-5'>实现</b><b class='flag-5'>方法</b>(二)

    Python中什么是语句

    条件判断 语句块 什么是 语句块呢? 语句块是在 条件为真( 条件
    的头像 发表于09-12 16:41 811次阅读

    Python条件条件语句

    if 语句对于if 语句,若 条件判定为真,那么后面的 语句块就会被执行。若 条件判定为假, 语句块就会被
    的头像 发表于09-12 16:45 464次阅读