文档

导入二进制数据底层I / O

低级功能导入数据

低级文件I / O函数允许大多数直接控制读或写数据到一个文件。然而,这些功能要求您指定比更便捷更详细的信息关于你的文件高级功能。高级功能的完整列表和他们支持的文件格式,看看万博1manbetx万博1manbetx支持文件格式导入和导出

如果高级功能不能导入数据,使用下列之一:

  • fscanf,它读取文本或ASCII格式的数据文件;也就是说,一个文件您可以在一个文本编辑器视图。有关更多信息,请参见读取数据的格式化的模式

  • fgetl函数可以,这一次读取一行一个文件,一个换行符分隔每一行。有关更多信息,请参见逐行读取数据

  • 从文件中读读取的数据的字节或位的水平。有关更多信息,请参见读二进制数据文件中

请注意

底层文件I / O函数是基于函数ANSI®标准C库。然而,MATLAB®包括矢量化版本的函数,数组中读取和写入数据以最小的控制回路。

读二进制数据文件中

与任何底层I / O功能,在进口之前,打开文件打开外部文件,并获得一个文件标识符。当你处理完一个文件,关闭它文件关闭(文件标识)

默认情况下,从文件中读一次读取一个文件1个字节,并解释每个字节为一个8位无符号整数(uint8)。从文件中读使用一个元素创建一个列向量,每个字节的文件。列向量中的值的类

例如,考虑该文件nine.bin创建如下:

fid = fopen (' nine.bin ', ' w ');写入文件(fid, [1:9]);文件关闭(fid);

所有的数据文件中读入一个9-by-1列向量的类:

fid = fopen (“nine.bin”);col9 =从文件中读(fid);文件关闭(fid);

改变数组的维度

默认情况下,从文件中读文件中的所有值读入一个列向量。不过,您可以指定阅读的数量值,或描述一个二维输出矩阵。

例如,阅读nine.bin前面的示例中描述:

fid = fopen (“nine.bin”);%只读前六值col6 = fread (fid, 6);%返回文件的开头frewind (fid);%前四值读入一个2×2的矩阵frewind (fid);two_dim4 =从文件中读(支撑材,(2,2));%与3行读入一个矩阵和%未指定的列数frewind (fid);two_dim9 =从文件中读(fid,[3,正]);%关闭文件文件关闭(fid);

描述输入值

如果您的文件中的值不8位无符号整数,指定值的大小。

例如,考虑该文件fpoint.bin,创造了用双精度值如下:

myvals =(π,42岁的1/3);fid = fopen (' fpoint.bin ', ' w ');写入文件(fid, myvals,“双”);文件关闭(fid);

阅读文件:

fid = fopen (“fpoint.bin”);%读和转置所以samevals = myvals samevals =从文件中读(fid,“双”)';文件关闭(fid);

为精确描述的完整列表,请参阅从文件中读函数引用页面。

节省内存

默认情况下,从文件中读创建一个数组的类。将双精度值存储在一个数组需要更多的内存比存储字符,整数,或单精度值。

减少所需的内存来存储您的数据,指定数组的类使用下列方法之一:

  • 用星号匹配输入值的类(‘*’)。例如,单精度值读入一个数组的类使用命令:

    mydata=从文件中读(支撑材、“*单”)
  • 输入值映射到一个新类' = > '的象征。例如,阅读uint8值到一个uint16数组,使用命令:

    mydata=从文件中读(支撑材,' uint8 = > uint16 ')

为精确描述的完整列表,请参阅从文件中读函数引用页面。

阅读文件的一部分

MATLAB的低级功能包括几个选择阅读部分的二进制数据文件:

测试文件的结束

当你打开一个文件,MATLAB创建一个指针指示文件中的当前位置。

请注意

打开一个空文件移动文件位置指示器到文件的末尾。读操作,fseekfrewind功能,移动文件位置指示器。

使用feof函数来检查你是否已达到文件的结束。feof返回一个值1当文件指针在文件的末尾。否则,它将返回0

例如,读一个大文件部分:

文件名=“largedata.dat”;%假设文件segsize = 10000;fid = fopen(文件名);虽然~ feof (fid) currData =从文件中读(fid, segsize);如果~ isempty (currData) disp(“当前数据:”);disp (currData);结束结束文件关闭(fid);

移动在一个文件

读或写所选部分的数据,文件位置指示器移到文件中的任何位置。例如,调用fseek与语法

fseek (支撑材,抵消,起源);

地点:

  • 支撑材文件标识符获得来自哪里打开外部文件

  • 抵消是一个积极或消极的偏移值,指定字节。

  • 起源指定的位置来计算位置:

    “转炉”

    开头的文件

    “咖啡”

    当前位置的文件

    eof的

    文件结束

另外,轻松地移动到文件的开始:

frewind (支撑材);

使用ftell找到当前位置在一个给定的文件。ftell返回的字节数从一开始的文件。

例如,创建一个文件five.bin:

一个= 1:5;fid = fopen (' five.bin ', ' w ');写入文件(fid,“短”);文件关闭(fid);

因为电话写入文件指定了格式,的每个元素一个使用两个存储字节five.bin

重开five.bin阅读:

fid = fopen (‘five.bin’,‘r’);

向前移动文件位置指示器6字节从一开始的文件:

状态= fseek(支撑材6“转炉”);

读下一个元素:

4 =从文件中读(fid, 1,“短”);

文件位置指示器的阅读进步。确定当前文件位置指示器,电话ftell:

位置= ftell (fid)位置= 8

移动文件位置指示器4字节,电话fseek再次:

状态= fseek(支撑材4“咖啡”);

读下一个值:

3 =从文件中读(fid, 1,“短”);

阅读在其他系统上创建的文件

不同操作系统存储信息的字节或位级别:

  • 大端法系统在内存中存储字节从最大的开始地址(也就是说,他们开始与结束)。

  • 低位优先系统存储字节从最小的开始地址(小端)。

窗户®系统使用little - endian字节次序和UNIX®系统使用大端字节顺序。

读取一个文件上创建一个opposite-endian系统,指定字节命令用于创建该文件。您可以指定的顺序调用打开文件,或在调用读取文件。

例如,考虑一个文件名为双精度值little.bin,在低位优先的系统上创建的。阅读这个文件在高位优先系统上,用以下命令(或两者)之一:

  • 打开文件,

    支撑材= fopen(“小。本”、“r”、“l”)
  • 读取文件

    mydata=从文件中读(支撑材、“双”、“l”)

在哪里“l”表明低位优先排序。

如果你不确定该系统使用字节次序,调用电脑功能:

(cinfo,最大尺寸,订购]=电脑
返回的订购“L”为低位优先的系统,或“B”大端法系统。

打开文件与不同的字符编码

编码方案万博1manbetx支持字符所需的特定的字母,比如日本或欧洲语言。常见的编码方案包括us - ascii或utf - 8。

编码方案决定了所需要的字节数读或写字符值。例如,us - ascii字符总是用1个字节,但是utf - 8字符用4个字节。MATLAB自动为每个流程所需的字节数字符基于指定的编码方案的价值。然而,如果你指定一个uchar精度、MATLAB处理每个字节uint8,无论指定的编码。

如果你不指定一个编码方案,打开外部文件打开文件处理系统使用的默认编码。确定默认,打开一个文件,并调用打开外部文件的语法:

(文件名,许可,machineformat,编码]= fopen (支撑材);

如果你指定一个编码方案当你打开一个文件,以下功能应用方案:fscanf,,fgetl,函数可以,从文件中读,写入文件

支持的编码方案的完整列表,指定的语法编码,看到万博1manbetx打开外部文件参考页面。

这个主题有帮助吗?