低级文件I/O功能允许最直接的控制读取或将数据写入文件。但是,这些函数要求您指定关于您的文件的更多详细信息,而不是更容易使用高级功能.有关他们支持的最高级别函数的完整列表和他们支持的文件格式,请参阅万博1manbetx万博1manbetx支持的文件格式的导入和导出.
如果高级函数无法导入数据,请使用以下之一:
fscanf
,它以文本或ASCII文件读取格式化数据;也就是说,您可以在文本编辑器中查看的文件。有关更多信息,请参见以格式化模式读取数据.
fgetl
和函数可以
,它一次读取一行文件,其中换行符分隔每行。有关更多信息,请参见逐行读取数据.
吓唬
,它在字节或位级别读取数据流。有关更多信息,请参见在文件中读取二进制数据.
请注意
低级文件I / O功能基于ANSI中的函数®标准C库。然而,MATLAB®包括矢量化版本的函数,以最小的控制循环读写数组中的数据。
与任何低级I / O函数一样,在导入之前,打开文件打开外部文件
,获取文件标识符。当您完成一个文件的处理时,用文件关闭
(
.fileid.
)
默认情况下,吓唬
每次读取一个文件1个字节,并将每个字节解释为8位无符号整数(uint8
).吓唬
创建列向量,文件中的每个字节都有一个元素。列向量中的值属于类双倍的
.
例如,考虑这个文件九
,创建如下:
fid = fopen (' nine.bin ', ' w ');写入文件(fid, [1:9]);文件关闭(fid);
将文件中的所有数据读入到一个类的9×1列向量双倍的
:
fid = fopen(“nine.bin”);col9 =从文件中读(fid);文件关闭(fid);
默认情况下,吓唬
将文件中的所有值读入列向量。但是,您可以指定要读取的值的数量,或者描述一个二维输出矩阵。
例如,阅读九
,在前面的示例中描述:
fid = fopen(“nine.bin”);%只读第一个六个值Col6 = fread(fid,6);%返回文件Frewwind(FID)的开头;%读取前四个值进入2×2矩阵Frewind(FID);两个_dim4 = fread(fid,[2,2]);%读成具有3行和%未指定的列Frewind(FID)的%未指定数量的矩阵;两个_dim9 = fread(fid,[3,inf]);%关闭文件fclose(fid);
如果文件中的值不是8位无符号整数,请指定值的大小。
例如,考虑这个文件fpoint.bin
,用双精度值创建如下:
[圆周率,42,1 /3];fid = fopen (' fpoint.bin ', ' w ');写入文件(fid, myvals,“双”);文件关闭(fid);
要读取文件:
FID = fopen('fpoint.bin');%读取,旋转SO SEAVALS = MYVALS = MYVALS = FREAD(FID,'双')';文件关闭(fid);
有关精度描述的完整列表,请参见吓唬
函数引用页面。
默认情况下,吓唬
创建类的数组双倍的
.在数组中存储双精度值比存储字符、整数或单精度值需要更多的内存。
为了减少存储数据所需的内存量,使用以下方法之一指定数组的类:
将输入值的类与星号匹配('*'
).例如,将单精度值读入类的数组单
,使用命令:
mydata.=从文件中读(支撑材,'*单身的')
将输入值映射到新类' = > '
的象征。例如,阅读uint8
值到一个uint16
数组,使用命令:
mydata.=从文件中读(支撑材,'uint8 => uint16')
有关精度描述的完整列表,请参见吓唬
函数引用页面。
MATLAB低级函数包括用于在文件中读取二进制数据的部分的多个选项:
打开文件时,MATLAB会创建指针以指示文件中的当前位置。
请注意
打开一个空文件就可以了不将文件位置指示灯移动到文件的末尾。读取操作,和fseek
和frewind
函数,移动文件位置指示器。
使用feof
函数检查您是否已到达文件的末尾。feof
返回值为1
当文件指针位于文件末尾时。否则,它将返回0
.
例如,读取一个大文件的部分:
filename ='larledata.dat';%假设文件segsize = 10000;fid = fopen(文件名);〜〜Feof(FID)Currdata = Fread(FID,SEGSize);如果〜isempty(currdata)disp('当前数据:');DISP(CURRDATA);结束末端FCLOSE(FID);
要读取或写入所选数据部分,将文件位置指示灯移动到文件中的任何位置。例如,呼叫fseek
用语法
fseek (支撑材,抵消,起源);
地点:
或者,方便地移动到文件的开头:
frewind (支撑材);
用ftell
查找给定文件中的当前位置。ftell
返回从文件开头开始的字节数。
例如,创建一个文件five.bin
:
a = 1:5;FID = FOPEN('FIVE.BIN','W');fwrite(fid,a,'short');文件关闭(fid);
因为召唤FWRITE.
指定了短
格式,每个元素一个
使用两个存储字节five.bin
.
重开five.bin
阅读:
fid = fopen(‘five.bin’,‘r’);
将文件位置指示器从文件开头向前移动6个字节:
状态= fseek(支撑材6“转炉”);
阅读下一个元素:
4 =从文件中读(fid, 1,“短”);
阅读的行为使文件位置指示器推进。确定当前文件位置指示灯,调用ftell:
位置= ftell(fid)位置= 8
要将文件位置指示器移回4个字节,调用fseek
再次:
status = fseek(fid,-4,'cof');
阅读下一个值:
三=欺诈(FID,1,'短');
不同的操作系统在字节或位级存储信息的方式不同:
大端法系统从内存中最大的地址开始存储字节(也就是说,它们从大的端开始)。
小endian.系统存储字节以最小的地址(小端)开始。
视窗®系统使用Little-Endian字节订购和UNIX®系统使用大端字节排序。
要读取在对侧系统上创建的文件,请指定用于创建文件的字节排序。您可以在呼叫中指定订购以打开文件,或在呼叫中读取该文件。
例如,考虑一个具有双精度值的文件little.bin.
,在一个小endian系统上创建。要在Big-Endian系统上读取此文件,请使用以下命令(或两者):
使用以下命令打开文件
支撑材= fopen('little.bin', 'r', 'l')
阅读文件
mydata.=从文件中读(支撑材、“双”、“l”)
在哪里'L'
表明低位优先排序。
如果您不确定订购系统使用哪个字节,请调用计算机
功能:
[cinfo,最大限度,订购] =计算机
订购
是'L'
对于小端系统,或者“B”
大端法系统。