matlab读取二进制文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
% deal data from specified data file
clear ;
data_fname = 'data.dat' ; % 这里是文件名
jump_distance = 2048 ; % 这里是跳过的字节数
% 打开方式为二进制打开,其实'r'就行,matlab是默认二进制形式打开文件的
file_id = fopen(data_fname, 'rb');
% 从文件开始跳过jump_distance个字节
fseek(file_id, jump_distance, 'bof');
% 先手工构造一个1x512大小的矩阵
raw_data = [1:1:512] ;
while feof(file_id) == 0
% 这就是大名顶顶的fread了,数据类型是int16,每次读入512个数
% raw_array每次都是512x1的矩阵,ele_count为读入的数的个数(正常情况下应为512)
[row_array, ele_count] = fread(file_id, 512, 'int16') ;
if ele_count < 512 % elecount < 512代表数据不够,已经到了文件的结尾
break ;
else
% 将512x1的row_array转置一下,变为1x512的矩阵
row_array = row_array' ;
% 然后,将row_array追加到raw_data中
raw_data = [raw_data; row_array] ;
end
end
% get off the first line [1:1:512]
% 这里就是要把raw_data的第一行数据手工构造的那行数据给去掉,剩下的就都是文件中的数据了
raw_data(1,:)=[] ;
% 关闭文件
fclose(file_id);
% delete other usless vars
% 这里是把用过的变量都删除掉,免得workspace里面乱七八糟的什么都有,这是个好习惯,呵呵。
clear data_fname jump_distance file_id fid ele_count i m n row_array ans;