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

    文章

    4805

    浏览量

    68784
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13637
收藏 人收藏

    评论

    相关推荐

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

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

    不同类型ACDC转换器优缺点 ACDC转换器负载能力分析

    ACDC转换器是将交流电(AC)转换为直流电(DC)的设备,在电力电子领域具有广泛的应用。以下是不同类型ACDC转换器的优缺点以及ACDC转换
    的头像 发表于 12-09 10:53 525次阅读

    eda分析中的数据清洗步骤

    ,进行彻底的数据清洗是必不可少的。 1. 数据预处理 数据预处理是数据清洗的第一步,它包括数据导入、数据
    的头像 发表于 11-13 11:00 339次阅读

    西门子博途新数据类型之:SINT(8位整数)

    数据类型 SINT (Short INT) 的操作数长度为 8 位,由以下两部分组成:一部分是符号,另一部分是数值。位 0 到 6 的信号状态表示数值。位 7 的信号状态表示符号。符号可以是“0”(正信号状态),或“1”(负信号状态)。
    的头像 发表于 11-09 09:52 1219次阅读
    西门子博途新<b class='flag-5'>数据类型</b>之:SINT(8位整数)

    AIC23采集到的数据是应该用什么数据类型来接收?int还是unsigned int?

    AIC23采集到的数据是应该用什么数据类型来接收,int还是unsigned int? 这个采集到的数字是什么含义呢?代表的是声音信号的幅值? while(!MCBSP_rrdy(hMcbsp
    发表于 10-18 06:56

    鸿蒙原生应用元服务开发-仓颉基础数据类型字符串类型

    将分别被强制转换为 Byte 类型,再进行赋值;如果左操作数的类型是 Rune,并且右操作数是一个单字符的字符串字面量,那么右操作数的字符串将分别被
    发表于 09-18 10:43

    labview数据类型的取值范围是多少

    LabVIEW的数据类型丰富多样,涵盖了整数、小数(浮点数)、复数等多种类型,每种类型都有其特定的取值范围。以下是对LabVIEW中常见数据类型取值范围的说明: 整数
    的头像 发表于 09-04 17:33 1214次阅读

    常见的遥感数据类型有哪些

    遥感技术是一种通过遥感器在远离目标的位置获取目标地物的电磁波信息,并进行分析的技术。遥感数据类型繁多,涵盖了从可见光到红外、微波等多个波段,以及不同的数据格式和分辨率。 光学遥感数据
    的头像 发表于 09-04 14:30 1893次阅读

    技术干货驿站 ▏深入理解C语言:基本数据类型和变量

    在C语言中,数据类型和变量是编程的基础,也是理解更复杂概念的关键。数据类型决定了变量的内存分配、存储范围和操作方式,而变量则是存储数据的容器。本篇文章将从基本数据类型和变量两个方面,带
    的头像 发表于 07-26 17:53 2210次阅读
    技术干货驿站 ▏深入理解C语言:基本<b class='flag-5'>数据类型</b>和变量

    ESP32-S3是否支持修改控制端点数据类型

    ESP32-S3是否支持修改控制端点数据类型(如标准类型,自定义类型); 我需要在控制传输数据阶段的DATA0包改为我的USB设备规定的8个字节的
    发表于 06-07 06:00

    关于stm32 unsigned int转float数据变化问题求解

    Temp的值是2147553344 (0x80011040)数据类型是unsigned int型 Temp_float的值是2.14755328e+009数据类型是float型
    发表于 05-08 06:48

    C语言数据类型有哪些

    在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
    发表于 03-20 10:56 493次阅读
    C语言<b class='flag-5'>数据类型</b>有哪些

    如何才能将adc转换后的数据发送到代码中指定的任何数据类型为uint8的变量中?

    我被卡住了,如何才能将 adc 转换后的数据发送到代码中指定的任何数据类型为 uint8 的变量中? 我正在使用以下 dma 配置,但我没有在 uint8 value2 变量中接收到数据
    发表于 03-04 06:48

    C语言如何掌握强制类型转换的精髓

    强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long
    的头像 发表于 02-26 11:00 537次阅读
    C语言如何掌握<b class='flag-5'>强制</b><b class='flag-5'>类型</b><b class='flag-5'>转换</b>的精髓

    arcgis值类型与字段类型不兼容

    ArcGIS是一个地理信息系统软件,可以用来处理、分析和可视化地理数据。在ArcGIS中,值类型和字段类型之间需要相互匹配,否则会导致不兼容的错误。 在ArcGIS中,值
    的头像 发表于 02-25 11:14 1785次阅读