matlab 按位操作,关于C代码中的特殊运算按位操作的介绍和应用

C代码中有一种特殊的运算,即按位操作。那么,

在Simulink模型里可以实现按位来操作吗?

能继而生成按位操作的代码吗?

位操作

要得到:

y1=(uint8_T)(u1&217)

或者

y1=(uint8_T)(u1&0xD9)

怎么做:

在Simulink框图模型里使用BitwiseOperator系列的模块;

在Stateflow里则直接使用按位操作符,比如&,|;

在MATLABFunction的m脚本里则使用bitor(bitxx)系列的命令。

实例四

1.新建一个简单的Simulink模型

这三个模块都只实现了一个简单的运算:对输入u1执行按位运算。

1171096b642b5088a7e4465d2713230d.png

双击上图中BitwiseOperator模块,设置如下图:

e4a49bf5ee8cc4dfd30ad50d1ab3fc90.png

Chart里则直接写单个&符号表示“按位与”,同时需要注意EnableC-bitoperations勾选,不然会计算出错。它默认是勾选上的。

50ec1f12c86d0ead6e66c306b048ceda.png

MATLABFunction里的语句,直接使用bitxx系列的命令。点击EditData,也可以手动设置输入输出口的数据类型。

d99c7fabe2919aa6a3a192f07bd6d661.png

2.代码生成基本配置

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

系统目标文件:ert.tlc

3.新建数据对象

打开ModelExplorer,点击菜单的Add,在BaseWorkspace里定义输入输出信号的数据对象,数据对象类型为Simulink.Signal,并如图设置输入输出均为uint8类型,StorageClass设置为ExportedGlobal:

3fee5ebfb8fac8c10613675d2a1da87d.png

4.信号关联

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

e77dd3597c9c898ab3cdf9af62a1d42d.png

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

5.生成代码

Ctrl+B,生成代码。

如前面所设置的,得到这三个按位操作的代码:

f74b7f168e76812a17b5422f6a02cb2d.png

所以说,在Simulink建模也可以实现按位运算:

在Simulink框图模型里使用BitwiseOperator模块;

在Stateflow里则直接使用按位操作符,比如&,|;

在脚本里则使用bitor(bitxx)系列的命令。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值