matlab读取二进制数据文件的方法

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;

转载:http://blog.chinaunix.net/uid-8272118-id-2033295.html

时间: 2024-11-10 08:27:41

matlab读取二进制数据文件的方法的相关文章

Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据

PRM 全称为ParnassusData Recovery Manager ,由 诗檀软件自主研发,拥有独立的软件著作权. PRM可以独立于Oracle软件运行,直接从Oracle数据文件中抽取表上的数据. 当以下几种场景中,都可以用上PRM: 无备份或者备份不可用情况下,数据表被意外truncate掉或者DROP掉 由于数据库损坏,导致的数据打不开 无法OPEN 数据块存在损坏,Oracle无法读取出数据 数据文件存在损坏,或者数据文件头信息不一致 等等 以上这些问题中,用户均可以考虑使用PR

matlab读取.mat格式文件

matlab读取.mat格式文件 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开.13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入.保存工作区可以通过菜单进行,也可以通过命令窗口进行. 1. 保存整个工作区 选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件. 2. 保存工作区中的变量 在工作区浏览

移动数据文件的方法

有时某个磁盘的I/0可能过于繁忙,这可能影响到数据库系统的整体效率.此时就应该将一个或几个数据文件移动到其他磁盘上以平衡磁盘的I/O.另外在磁盘损坏的情况下也应该考虑移动数据文件.oracle提供了两条移动数据文件的指令. 一.移动非系统数据文件 alter tablespace tablespace_name rename datafile 'file_name.dbf' to 'file_name.dbf'; 该语句适合于上面没有活动的还原数据或者临时数据段的非系统表空间中的数据文件,要求在

Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法

Base64编码是从二进制到字符的过程. Base64编码主要用在传输.存储.表示二进制等领域,还可以用来加密,但是这种加密比较简单. byte[] byteArray = Encoding.UTF8.GetBytes(content);content = Convert.ToBase64String(byteArray); 开发者对 Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际 上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该.大概介绍一下Bas

SQLServerException:将截断字符串或二进制数据的解决方法

SQLServerException:将截断字符串或二进制数据的解决方法: 最近使用JPA进行保存对象到数据库中怎么也添加不进去,始终报错 主要原因就是你增加的数据字段长度超过数据库中字段所定义长度,去查看一下自己数据库中的字段的长度,一般是误写出来的,查看一下自己数据库中需要自己设置字段类型长度的 字段,修改其字段长度为最大就可以了,Sql server 可以设置其为varchar(max)或者text类型,建议采用varchar(max),便于映射.

(4)cocos2dx读取csv数据文件

cocos2dx中读取数据文件可能有很多种,像读取xml,lua,csv,json等,这些都可以作为配置数据的格式. 最近用到了读取csv数据文件,所以在网上找了一下关于这方面的技术博客.果然,网上各路大神都是不吝啬的, 不说废话了,直接上代码.代码如下(测试通过,可读取数据): .h头文件 // // QLCSVFile.h // // Created by quasi_lee on 15-7-7. // // #ifndef __QLCSVFile__ #define __QLCSVFile

巧用AWK处理二进制数据文件

AWK是Unix下的一款功能强大的文本格式化和抽取工具.利用这个工具,可以对复杂的文本文件进行整理,提取其中的全部或者部分数据,按照需要的格式予以显示.需要说明的是,AWK的强大功能只针对纯文本文件.对于带有很多不可显示字符的二进制数据文件,单凭AWK就无能为力了.这时我们需要其他工具的帮助. 在Unix下,还有一个工具叫做OD,其全称是“display files in octal format”,也就是说它能将各种文件以8进制的方式显示出来.如果设置不同的选项,它还能将文件以16进制方式显示

MATLAB中TXT数据文件读取并写入元胞数组的方法与步骤

一. TXT数据文件读取 Data = load('train.txt');   %简单的文件读取,这时在工作区可以看到导入的大数据变量Data 二.大数据变量Data装入元胞数组中 D = cell(5, 1);   %元胞的定义,定义一个5*1的元胞D D{1, 1} = rand(223, 26);   %初始化第1行第1列的元胞为223*26的一个数组,数组元素为随机值 D{1, 1} = Data(1: 1+222, 1: 1+25);  %将大数据变量的223*26的数值赋值(装入)

Matlab读取音频数据

项目需要,读出识别的车牌,对着图片看看是否识别正确. 有了0到9和A到Z,32个省份的音频,但是如何用matlab读出来,老版本有wavread直接读出,然后waveplay读入的即可.但是现在的是audioplayer了,对应的audiorecorder是录音用的,他是waveread的前身,然而功能却不一样.新的用法 load chirp p=audioplayer(y,44100) play(p) 注意chirp是系统自带声音,加载后包括y文件是个double的行向量,fs是播放频率或者采