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

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

3天内不再提示

关于数据类型强制转换的分析和应用

MATLAB 来源:djl 作者:柚籽 2019-09-17 15:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

C代码中经常会写到数据类型强制转换的语句,那么,

Simulink模型里如何表达?

又如何配置,才能生成强制数据类型转换代码?

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

数据类型转换

要得到:

y1 = (double)u1;

怎么做:

Simulink模型里有三种建模元素:Simulink框图、Stateflow流程图以及MATLAB Function模块里的m脚本。

在Simulink框图模型里使用Data Type Conversion模块来实现强制数据类型转换;在后两种则使用强制类型转换语句:out1 = double(in1)。

实例三

1. 建一个简单的Simulink模型

关于数据类型强制转换的分析和应用

双击上图中Data Type Conversion模块设置输出数据类型为double。MATLAB Function以及Chart里的内容如下图:

关于数据类型强制转换的分析和应用

2. 代码生成基本配置

求解器:定步长—离散求解器

系统目标文件:ert.tlc

3. 新建数据对象

打开Model Explorer,点击菜单的Add,在Base Workspace里定义输入输出信号的数据对象,如图设置输入为single类型,输出为dobule类型:

关于数据类型强制转换的分析和应用

4. 信号关联

在信号线上右键,将信号与Base Workspace的数据对象关联在一起。鼠标操作的方式,可以参考之前的帖子里的菜单截图。因为这里的信号略多,所以可以使用命令的方式来实现:

关于数据类型强制转换的分析和应用

此时,第一张模型截图中信号名前方的蓝色小叉子就会出现。

5. 生成代码

Ctrl+B,生成代码。

如前面所设置的,输入为real32,输出为real类型:

关于数据类型强制转换的分析和应用

但此时从上图可以看到,由于是single转double,隐式转换,并没有想要的显示转换的代码。

在代码配置页面里,配置代码风格,Casting modes为Standards,符合MISRA的风格:Generate code that casts data types to conform to MISRAstandards

关于数据类型强制转换的分析和应用

再次生成代码,得到如图:

关于数据类型强制转换的分析和应用

总结

所以说,在Simulink框图模型里使用Data Type Conversion模块来实现强制数据类型转换;在后两种则使用强制类型转换语句:out1 = double(in1)。

Tips:可以使用Model Advisor ,来检查模型的配置,以便生成的代码符合MISRA C的风格。

其它:保持y1信号名不变,数据类型设置为整形,并相应的设置Data Type Convers输出为整形。生成代码,会看到比较有意思的错误提示。

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

    关注

    30

    文章

    4942

    浏览量

    73163
  • 数据类型
    +关注

    关注

    0

    文章

    237

    浏览量

    14108
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    枚举类型的讲解

    枚举是一个基本的数据类型,它可以让数据更简洁。 如果写一个判断星期的文章,我们当然可以使用宏定义来使代码更加易懂,不过: #define MON 1 #define TUE 2
    发表于 12-08 08:14

    电能质量在线监测装置的监测数据如何存储和分析

    19862-2016、IEC 61000-4-30 等标准要求,兼顾数据完整性与分析专业性。 一、监测数据的存储机制 数据存储按存储位置分为本地存储和远程存储,按
    的头像 发表于 12-05 17:58 3092次阅读
    电能质量在线监测装置的监测<b class='flag-5'>数据</b>如何存储和<b class='flag-5'>分析</b>?

    电能质量在线监测装置支持的数据推送频率是多少?

    电能质量在线监测装置的数据推送频率 可灵活配置 ,根据数据类型(稳态 / 暂态 / 事件)和应用场景(电网关口 / 工业用户 / 新能源并网)的不同, 覆盖从毫秒级到小时级的广泛范围 ,主流装置支持
    的头像 发表于 12-05 15:07 119次阅读
    电能质量在线监测装置支持的<b class='flag-5'>数据</b>推送频率是多少?

    C语言自动类型转换

    是通过定义类型转换运算来实现的。其一般形式为: (数据类型) (表达式) 其作用是把表达式的运算结果强制转换
    发表于 11-25 08:04

    C语言强制类型转换

    强制类型转换是通过定义类型转换运算来实现的。其一般形式为: (数据类型) (表达式) 其作用
    发表于 11-24 06:32

    汇编程序段的定义介绍

    操作数不能同时是存储器操作数,也不能同时是段寄存器; 目的操作数不能是立即数; 代码段基址寄存器CS不能作目的操作数; 使用立即数作为源操作数时,立即数会按照目的操作数的类型进行扩展。 强制类型
    发表于 11-21 08:19

    SQL 通用数据类型

    SQL 通用数据类型 数据库表中的每个列都要求有名称和数据类型。Each column in a database table is required to have a name and a
    的头像 发表于 08-18 09:46 579次阅读

    IEC101协议可以传输什么类型数据

    IEC101协议作为电力系统远动通信的核心标准,其核心能力在于支持多种类型数据的传输,满足调度端与场站端(如变电站、发电厂)的实时监控、控制及状态感知需求。以下从数据类型、传输模式及典型应用场景三个
    的头像 发表于 05-21 11:37 711次阅读

    VirtualLab Fusion应用:不规则孔径光阑的仿真

    导入 导入之后的数据还需要转换为Transmission透过率函数格式,通过菜单栏Manipulations下的Conversion功能进行数据类型转换,先
    发表于 05-15 10:42

    详解Prometheus的数据类型

    对于 Prometheus 生态的监控系统,PromQL 是必备技能,本文着重点讲解这个查询语言,掺杂一些生产实践场景,希望对你有所帮助。
    的头像 发表于 05-13 09:50 1260次阅读
    详解Prometheus的<b class='flag-5'>数据类型</b>

    labview数据类型与PLC 数据类型之间的转换(来自于写入浮点数到汇川 PLC中的数据转换关键的修改)

    单、双精度浮点数强制转换成U32,结果是不一样的。所以labview在强制转换前,必须将数据类型设置为单精度浮点数,就可以了 概述1:
    发表于 02-24 19:01

    数据采集模块类型与应用

    、控制器和数模转换器(ADC)等组件,将外部物理世界的各种参数(如流量、光强、姿态、加速度、距离、温度、压力等)转换为数字信号,以供后续处理器或其他数字电路进行数据处理与分析。 一、
    的头像 发表于 02-14 16:36 745次阅读

    VirtualLab Fusion应用:不规则孔径光阑的仿真

    导入 导入之后的数据还需要转换为Transmission透过率函数格式,通过菜单栏Manipulations下的Conversion功能进行数据类型转换,先
    发表于 02-05 09:26

    传感器数据采集网关支持接入哪些数据类型

    在智能制造和工业物联网蓬勃发展的时代背景下,以“数据采集+管理+分析”为特点的生产管理模式,成为企业数字化转型的关键推动力。其中传感器数据采集系统发挥着重要作用。。传感器能够捕捉设备运行
    的头像 发表于 01-23 13:34 818次阅读
    传感器<b class='flag-5'>数据</b>采集网关支持接入哪些<b class='flag-5'>数据类型</b>

    请问ADS1299使用Test Signals ,获取到的数据类型是什么?

    请问ADS1299使用Test Signals ,获取到的数据类型是什么?使用什么公式可以还原?据了解,外部信号转换完成后是浮点型的,但是没有看到这块的说明。
    发表于 01-06 07:14