matlab十进制的负数小数转二进制,如何用matlab实现将正负小数矩阵转为二进制比特流...

共回答了20个问题采纳率:100%

8位二进制最多表示256种数据

显然不能使用浮点数来储存

看你的数据格式都是0.00xx的小数形式,那么我们可以用定点数来表示

一种比较简单的办法就是将原来的数乘上10000倍

那么都会变成整数,由于8位有符号整数的表达范围是-128~127

我们可以用8位有符号整数来表示你的数据,默认其表示的是小数点后4为的数

这样就可以获得-0.0128~0.0127范围以内的小数

解码也比较简单,每8位二进制数一起看成是一个8位有符号数

将获得的数除以10000,得到浮点数就是原来的小数了.

%编码

x=[-0.0039;-0.0071;-0.0071;-0.0011;0.0043;0.0034;0.0029;];

a=int8(x*10000);

fid=fopen('dat.bin','w');

fwrite(fid,a,'int8');%转化为进制流,写入文件

fclose(fid);

%解码

fid=fopen('dat.bin','r');

b=fread(fid,inf,'int8');%读出二进制流文件中的数据

fclose(fid);

y=b/10000;%还原数据

1年前

追问

9

191421551

我用txt形式打开都是一堆乱码,而且你写入文件的不只是乘完10000后的正负整数࿰

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值