Matlab从txt第二行开始读,matlab读取二进制数据文件的方法

北京理工大学  20981  陈罡

matlab可以直接读取二进制数据文件,并且可以将其加入到矩阵中。

如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof

这些函数非常熟悉了,幸运的是在matlab中仍然可以使用这些函数来读入实验数据。

现在假定有一个数据文件叫data.dat,它的前面2k是存放参数的,我们做数据处理的时候

需要跳过去,后面的数据是16位整数类型的,每组数据有512个。现在要把该数据文件的

所有数据读入一个nx512的矩阵中,n的个数不定,根据数据文件中的数据而定。

用.m脚本的方式编写如下:

% 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;

好了,得到这些数据以后,就可以做一些常规的数据处理了。其它算法部分,就不多说了让人乏味。

贴几张图show一下,matlab真的是挺强大的事后数据分析、建模软件啊。

071201001345.jpg

(这是原始数据中,一组数据)

071201001428.jpg

(这是卷积处理后的数据)

matlab7.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值