matlab读int16读文件,读取及写入/在Matlab中的二进制文件

My knowledge of matlab is merely on a need to know basis, so this is probably an elementary question. Nevertheless here it comes:

I have got a file containing data (16-bit integers) stored in binary format. How do I read it into a vector /an array in matlab? How do I write this data to a file in matlab? Is there any smart tweak to increase the performance speed when reading/writing a huge amount of data (gigabytes)?

解决方案

As Bill the Lizard wrote you can use fread to load the data into a vector. I just want to expand a little on his answer.

Reading Data

>> fid=fopen('data.bin','rb') % opens the file for reading

>> A = fread(fid, count, 'int16') % reads _count_ elements and stores them in A.

The commands fopen and fread default to Little-endian[1] encoding for the integers. If your file is Big-endian encoded you will need to change the fread to

>> A = fread(fid, count, 'int16', 'ieee-be');

Also, if you want to read the whole file set

>> count=inf;

and if you want to read the data into matrix with n columns use

>> count=[n inf];

Writing Data

As for witting the data to a file. The command, fwrite, in Bill's answer will write to a binary file. If you want to write the data to a text file you can use dlmwrite

>> dlmwrite('data.csv',A,',');

References

Update

The machine format (IE, ieee-be,

ieee-le, vaxd etc.) of the binary data can be specified in either the

fopen or the fread commands in Matlab. Details of the supported

machine format can be found in

Matlab's documentation of fopen.

Scott French's comment to Bill's

answer

suggests reading the data into an

int16 variable. To do this use

>> A = int16(fread(fid,count,precision,machineFormat));

where count is the size/shape of

the data to be read, precision is

the data format, and machineformat

is the encoding of each byte.

See commands fseek to move around the file. For example,

>> fseek(fid,0,'bof');

will rewind the file to the beginning where bof stands for beginning of file.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值