- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) N表示读取 N个元素到一个列向量。 (2) Inf表示读取整个文件。 (3) [M,N]表示读数据到M×N的矩阵中,数据按列存放。
precision代表读写数据的类型(见下表)
张卫华 MATLAB课堂
4
4.2文件的读写操作
1 二进制文件的读写操作
MATLAB C or Fortran Description 'uchar' 'unsigned char' unsigned character, 8 bits. 'schar' 'signed char' signed character, 8 bits. 'int8' 'integer*1' integer, 8 bits. 'int16' 'integer*2' integer, 16 bits. 'int32' 'integer*4' integer, 32 bits. 'int64' 'integer*8' integer, 64 bits. 'uint8' 'integer*1' unsigned integer, 8 bits. 'uint16' 'integer*2' unsigned integer, 16 bits. 'uint32' 'integer*4' unsigned integer, 32 bits. 'uint64' 'integer*8' unsigned integer, 64 bits. 'single' 'real*4' floating point, 32 bits. 'float32' 'real*4' floating point, 32 bits. 'double' 'real*8' floating point, 64 bits. 'float64' 'real*8' floating point, 64 bits.
张卫华 MATLAB课堂
11
4.3 数据文件定位
例:下列程序执行后, four position three的 值是多少
a=1:5; fid=fopen('fdat.bin','w'); %以写方式打开文件fdat.bin fwrite(fid,a,'int16'); %将a的元素以双字节整型写入文件fdat.bin status=fclose(fid); fid=fopen('fdat.bin','r'); %以读数据方式打开文件fdat.bin status=fseek(fid,6,'bof'); %将文件指针从开始位置向尾部移动6 个字节 four=fread(fid,1,'int16'); %读取第4个数据,并移动指针到下一 个数据 position=ftell(fid); %ftell的返回值为8 status=fseek(fid,-4,'cof'); %将文件指针从当前位置往前移动4个 字节 three=fread(fid,1,'int16'); %读取第3个数据 status=fclose(fid);
x=0:0.1:1; y=[x;exp(x)]; fid=fopen(‘exp.txt’,’w’;); fprintf(fid,’%6.2f %12.8f’,y); fclose(fid); 在命令窗口用type可以显示文本文件 type exp.txt
张卫华 MATLAB课堂
8
4.2文件的读写操作 例:
fgetl和fgets 也可以读取文本文件,他们是读取一行 数据当字符串处理,fgetl不包含文本的结束符, fgets包含。
张卫华 MATLAB课堂
7
4.2文件的读写操作
2文本文件的读写操作
例: X=fscanf(fid,’%5d’,100) X=fscanf(fid,’%5d’,[10,10])
张卫华 MATLAB课堂
6
4.2文件的读写操作
2文本文件的读写操作
fscanf(读): [A,COUNT]= fscanf (fid, format, size) fprintf (写)COUNT= fprintf(fid, format, A)
其中A用以存放读取(写入)的数据, COUNT返回所读取(写入)的数据元素个数。 fid为文件句柄。 format用以控制读取(写入)的数据格式,由%加上格式 符组成,常见的格式符有d,f,c,s,和数据宽度。 size为可选项,决定矩阵A中数据的排列形式
张卫华 MATLAB课堂
13
Thank you!
MATLAB
c
matlab
ቤተ መጻሕፍቲ ባይዱ电子工程学院
张卫华 MATLAB课堂
12
复习
打开文件: fid= fopen(文件名,打开方式) 关闭文件: sta=fclose(fid) 读二进制文件:[A,COUNT]=fread(fid,size, precision) 写二进制文件:COUNT=fwrite (fid, A, precision) 读文本文件:[A,COUNT]= fscanf (fid, format, size) 写文本文件:COUNT= fprintf(fid, format, A) 定位: status=fseek(fid, offset, origin) 返回位置:position=ftell (fid) 读取整行:fgetl fgets
ftell函数返回文件指针的当前位置, position=ftell (fid) 返回值为从文件开始到指针当前位置的字节数。若 返回值为–1表示获取文件当前位置失败。
张卫华 MATLAB课堂
10
4.3 数据文件定位
例:下列程序执行后, four position three的 值是多少
a=1:5; fid=fopen('fdat.bin','w'); fwrite(fid,a,'int16'); status=fclose(fid); fid=fopen('fdat.bin','r'); status=fseek(fid,6,'bof'); four=fread(fid,1,'int16'); position=ftell(fid); status=fseek(fid,-4,'cof'); three=fread(fid,1,'int16'); status=fclose(fid);
fid用于存储文件句柄值,
关闭文件:sta=fclose(fid) sta表示关闭文件操作的返回代码, 若关闭成功,返回0,否则返回–1。
例: Sta=fclose(fid2)
张卫华 MATLAB课堂
3
4.2文件的读写操作
1 二进制文件的读写操作
fread (读): [A,COUNT]=fread(fid,size, precision) fwrite (写): COUNT=fwrite (fid, A, precision) 其中A用于存放读取(写入)的数据, COUNT返回所读取(写入)的数据元素个数, fid为文件句柄, size为可选项,若不选用则读取整个文件内容,若选用 则它的值可以是下列值:
张卫华 MATLAB课堂
5
4.2文件的读写操作
1 二进制文件的读写操作
例 建立一数据文件magic5.dat,用于存放5阶魔方阵。 程序如下: fid=fopen(‘magic5.dat’,‘w’); cnt=fwrite(fid,magic(5),‘int32’); fclose(fid);
例 从数据文件magic5.dat,中读取5阶魔方阵。 程序如下: fid=fopen(‘magic5.dat’,‘r’); [b,cnt]=fread(fid,[5,inf],‘int32’); fclose(fid);
2文本文件的读写操作
一个文本文件包含若干道是非问题,从键盘输入该文件的名 字,然后依次显示每一道题目并提示用户回答,保存用户 的答案。
张卫华 MATLAB课堂
9
4.3 数据文件定位
fseek和ftell。fseek函数用于定位文件位置指针, status=fseek(fid, offset, origin) 其中fid为文件句柄, offset表示位置指针相对移动的字节数, origin表示位置指针移动的参照位置。若定位成 功,status返回值为0,否则返回值为–1。
MATLAB
c
第4章 文件操作
指导教师:张卫华
Contents
1
2 3
文件的打开与关闭 文件的读写操作
数据文件定 位
张卫华 MATLAB课堂
2
4.1文件的打开与关闭 开文件: fid= fopen(文件名,打开方式) 文件名用字符串形式, 常见的打开方式有:
例: ‘r’表示对打开的文件读数据,’r+’ Fid=fopen(‘std.dat’,’ r’) ‘w’表示对打开的文件写数据,’w+’ Fid2=fopen(‘std.dat’,’ wb+’) ‘a’表示在打开的文件末尾添加数据。’a+’ ‘t’表示打开的是文本文件 ‘b’表示打开的是二进制文件(默认打开方式)