概述
C代码中有一种特殊的运算,即按位操作。那么,
在Simulink模型里可以实现按位来操作吗?
能继而生成按位操作的代码吗?
位操作
要得到:
y1=(uint8_T)(u1&217)
或者
y1=(uint8_T)(u1&0xD9)
怎么做:
在Simulink框图模型里使用BitwiseOperator系列的模块;
在Stateflow里则直接使用按位操作符,比如&,|;
在MATLABFunction的m脚本里则使用bitor(bitxx)系列的命令。
实例四
1.新建一个简单的Simulink模型
这三个模块都只实现了一个简单的运算:对输入u1执行按位运算。
双击上图中BitwiseOperator模块,设置如下图:
Chart里则直接写单个&符号表示“按位与”,同时需要注意EnableC-bitoperations勾选,不然会计算出错。它默认是勾选上的。
MATLABFunction里的语句,直接使用bitxx系列的命令。点击EditData,也可以手动设置输入输出口的数据类型。
2.代码生成基本配置
求解器:定步长—离散求解器
系统目标文件:ert.tlc
3.新建数据对象
打开ModelExplorer,点击菜单的Add,在BaseWorkspace里定义输入输出信号的数据对象,数据对象类型为Simulink.Signal,并如图设置输入输出均为uint8类型,StorageClass设置为ExportedGlobal:
4.信号关联
在信号线上右键,将信号与BaseWorkspace的数据对象关联在一起。鼠标操作的方式,可以参考之前的帖子里的菜单截图。因为这里的信号略多,所以可以使用命令的方式来实现:
此时,第一张模型截图中信号名前方的蓝色小叉子就会出现。
5.生成代码
Ctrl+B,生成代码。
如前面所设置的,得到这三个按位操作的代码:
所以说,在Simulink建模也可以实现按位运算:
在Simulink框图模型里使用BitwiseOperator模块;
在Stateflow里则直接使用按位操作符,比如&,|;
在脚本里则使用bitor(bitxx)系列的命令。
最后
以上就是魁梧朋友为你收集整理的matlab 按位操作,关于C代码中的特殊运算按位操作的介绍和应用的全部内容,希望文章能够帮你解决matlab 按位操作,关于C代码中的特殊运算按位操作的介绍和应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复