我是靠谱客的博主 快乐篮球,最近开发中收集的这篇文章主要介绍matlab 类型强制转换,关于数据类型强制转换的分析和应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

描述

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

在Simulink模型里如何表达?

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

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

数据类型转换

要得到:

y1 = (double)u1;

怎么做:

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

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

实例三

1. 建一个简单的Simulink模型

fc8df366163b67eda5425db65b23442e.png

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

c6c5e2fc6fb622ff4371463222120ab6.png

2. 代码生成基本配置

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

系统目标文件:ert.tlc

3. 新建数据对象

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

e9c84655486ab8ceca46aa883b144eee.png

4. 信号关联

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

e77dd3597c9c898ab3cdf9af62a1d42d.png

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

5. 生成代码

Ctrl+B,生成代码。

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

9a5f7e8cab3dceb7046859810803b090.png

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

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

0ba6789eaf2c64d46f99960d9c786a5e.png

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

f74b7f168e76812a17b5422f6a02cb2d.png

总结

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

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

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

打开APP阅读更多精彩内容

点击阅读全文

最后

以上就是快乐篮球为你收集整理的matlab 类型强制转换,关于数据类型强制转换的分析和应用的全部内容,希望文章能够帮你解决matlab 类型强制转换,关于数据类型强制转换的分析和应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部