导入二进制数据底层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创建一个指针指示文件中的当前位置。
请注意
打开一个空文件不移动文件位置指示器到文件的末尾。读操作,fseek
和frewind
功能,移动文件位置指示器。
使用feof
函数来检查你是否已达到文件的结束。feof
返回一个值1
当文件指针在文件的末尾。否则,它将返回0
。
例如,读一个大文件部分:
文件名=“largedata.dat”;%假设文件segsize = 10000;fid = fopen(文件名);虽然~ feof (fid) currData =从文件中读(fid, segsize);如果~ isempty (currData) disp(“当前数据:”);disp (currData);结束结束文件关闭(fid);
移动在一个文件
读或写所选部分的数据,文件位置指示器移到文件中的任何位置。例如,调用fseek
与语法
fseek (支撑材,抵消,起源);
地点:
另外,轻松地移动到文件的开始:
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打开外部文件
参考页面。