-
文件的打开
fopen函数的调用格式为:
fid= fopen(文件名,打开方式)
其中文件名用字符串形式,表示待打开的数据文件。常见的打开方式有:‘r’表示对打开的文件读数据,‘w’表示对打开的文件写数据,‘a’表示在打开的文件末尾添加数据。fid用于存储文件句柄值,句柄值用来标识该数据文件,其他函数可以利用它对该数据文件进行操作。
例:fid=fopen(‘magic5.dat’,‘w’);
2、文件的关闭
文件在进行完读、写等操作后,应及时关闭。关闭文件用fclose函数,调用格式为:sta=fclose(fid)
该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回–1.
3、文件的读写操作
3.1、读二进制文件
fread 函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:
[A,COUNT]=fread(fid,size, precision)
其中A用于存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列值:
- N表示读取 N个元素到一个列向量。
(2) Inf表示读取整个文件。
(3) [M,N]表示读数据到M×N的矩阵中,数据按列存放。
precision代表读写数据的类型
【例一】:
fid = fopen('E:\\1.txt','r');
[A,count] = fread(fid,Inf,'int8=>char');
Count %输出文件中内容的长度
fclose('all'); %关闭打开的所有文件
【例二】
fid = fopen('E:\\1.txt','r');
A = fread(fid,Inf,'int8=>char'); %将读取的数据变为字符型
size(A) %输出数据的长度
A' %横向输出文本内容
fclose(fid);
【例三】
fid = fopen('E:\\2.jpg','r');
A = fread(fid,Inf,'int8');
size(A)
A'
fclose(fid);
3.2、写二进制文件
fwrite 函数按照指定的数据类型将矩阵中的元素写入到文件中。其调用格式为:
COUNT=fwrite (fid, A, precision)
其中COUNT返回所写的数据元素个数,fid为文件句柄,A用来存放写入文件的数据,precision用于控制所写数据的类型,其形式与fread函数相同。
【例】:
例4-1 建立一数据文件magic5.dat,用于存放5阶魔方阵。
程序如下:
fid=fopen(‘magic5.dat’,‘w’);
cnt=fwrite(fid,magic(5),‘int32’);
fclose(fid);
3.3、读取文本文件(一)
fscanf 函数的调用格式为:
[A,COUNT]= fscanf (fid, format, size)
其中A用以存放读取的数据,COUNT返回所读取的数据元素个数。fid为文件句柄。format用以控制读取的数据格式,由%加上格式符组成,常见的格式符有d,f,c,s。
size为可选项,决定矩阵A中数据的排列形式。
3.5、读取文本文件(二)
fid = fopen('result.txt','r');
data = textscan(fid,'%s %s \r\n');
data
此时会将文件中的所有数据一次性读取到一个二维cell型数组中.如果想一次只读一行可以用如果方法:
fid = fopen('result.txt','r');
data = textscan(fid,'%s %s \r\n',1);
data
3.6、读取文本文件(三)
一次读取一行还可以用如下办法:
fid = fopen('result.txt','r');
while ~feof(fid)%判断是否达到文件尾部
aline = fgetl(fid) ;
end
data = aline(3)%取出该行的第3个字符
3.7、读取文本文件(四)
如果文本文件中内容格式如下:
此时用如下方式读取较好:
fid = fopen('result.txt','r');
data = textscan(fid,'%s %s \r\n',1);%读取标题行
index = 1 ;
while ~feof(fid)
data{index} = textscan(fid,'%s%s \r\n',1);%读取第(index+1)行
index = index + 1 ;
end
此时读取的内容存储在cell型数组data中。
例如:
>> data{1}{1}
ans =
'10110111'
>> data{1}{2}
ans =
'10'
其它元素也可以依次访问.
3.8、写文本文件
fprintf 函数的调用格式为:
COUNT= fprintf(fid, format, A)
其中A存放要写入文件的数据。先按format指定的格式将数据矩阵A格式化,然后写入到fid所指定的文件。格式符与fscanf函数相同。
4、数据文件定位
MATLAB提供了与文件定位操作有关的函数fseek和ftell。fseek函数用于定位文件位置指针,其调用格式为:
status=fseek(fid, offset, origin)
其中fid为文件句柄,offset表示位置指针相对移动的字节数,origin表示位置指针移动的参照位置。若定位成功,status返回值为0,否则返回值为–1。
ftell函数返回文件指针的当前位置,其调用格式为:
position=ftell (fid)
返回值为从文件开始到指针当前位置的字节数。若返回值为–1表示获取文件当前位置失败。
【例】:
fid = fopen('E:\\1.txt','r');
A = fread(fid,Inf,'int8=>char');
size(A)
A'
status=fseek(fid, 5, 'bof')
position = ftell(fid)
fclose(fid);
5、在编辑窗口直接打开文件
在Command窗口输入命令:
>>open E:\\txt.m
则可直接打开文件.
6、其它文件操作函数
fclose :关闭文件
fopen :打开文件
fread :从文件中读入二进制数据
fwrite :把二进制数据写入文件
fgetl :逐行从文件中读取数据并放弃换行符
fgets :从文件中读取行,保留换行符并把行作为字符串返回
fprintf:把格式化数据写入文件
fscanf :从文件中读取格式化数据
feof :测试文件是否结束
ferror:测试文件输入输出错误信息
frewind:文件指针归零
fseek :设置文件位置指针
ftell :获取文件位置指针
csvread :读取逗号分隔格式的数据文件到矩阵
csvwrite:写矩阵到逗号分隔格式的数据文件
dlmread :把一个ASCII限定文件(数据文件)读入矩阵
dlmwrite:把矩阵写入到ASCII限定文件(数据文件)
textread:从文本文件读取格式化数据(important)
wk1read :把Lotus123电子表格读入矩阵
wk1write:把矩阵写入Lotus123wk1电子表格
xlsread :读取excel表格
7、excel文件操作
7.1获取文件信息
status = xlsfinfo(filename)
[status,sheets] = xlsfinfo(filename)
[status,sheets,format] = xlsfinfo(filename)
status为目标excel可读属性,sheets为目标excel中所有工作表,format返回excel文件的描述信息。
【例】
[typ, desc, fmt] = xlsfinfo('myaccount.xlsx')
This code returns:
typ =
Microsoft Excel Spreadsheet
desc =
'Sheet1' 'Income' 'Expenses'
fmt =
xlOpenXMLWorkbook
system('taskkill /F /IM EXCEL.EXE');%杀死excel进程,对于高版本matlab会自动释放资源。
7.2读取excel文件内容
可以使用matlab的导入数据直接将excel中的数据导入到matlab中。
使用xlsread函数读取excel文件内容
【例1】读取第一张工作表内容
A = xlsread('myExample.xls')
xlsread returns:
A =
1 2 3
4 5 NaN
7 8 9
【例2】读取第一张工作表的B2:C3区域内容
subsetA = xlsread('myExample.xls', 1, 'B2:C3')
xlsread returns:
subsetA =
2 3
5 NaN
【例3】假设excel文件内容如下
[ndata, text, alldata] = xlsread('myExample.xls')
xlsread returns:
ndata =
1 2 3
4 5 NaN
7 8 9
text =
'First' 'Second' 'Third'
'' '' ''
'' '' 'x'
alldata =
'First' 'Second' 'Third'
[ 1] [ 2] [ 3]
[ 4] [ 5] 'x'
[ 7] [ 8] [ 9]
7.4写入数据到excel文件
单击“工具”菜单,选择“加载宏”选项,在弹出的加载宏界面中单击“浏览”按钮,通过浏览界面在路径“matlab 的安装路径\toolbox\exlink\” 下找到excllink.xla 文件,双击打开此文件则回到加载宏界面,在 Excel link2.3 for use with matlab 选项前打勾,点击“确定”按钮即可完成加载。加载 Excel-link 宏成功后会在 Excel 工具栏的下方出现“startmatlab、putmatrix、getmatrix、evalstring” 等选项,通过这些选项可以实现 Matlab 与 Excel 之间的数据交互。
使用函数xlswrite写入数据到excel文件。语法如下:
xlswrite(filename,A)
xlswrite(filename,A,sheet)
xlswrite(filename,A,range)
xlswrite(filename,A,sheet,range)
status = xlswrite(filename,A,sheet,range)
[status,msg] = xlswrite(filename,A,sheet,range)
【例】