Matlab在数学运算方面有着强大的功能,同时在程序编写方面也有一定的优势。Matlab可用作函数、脚本、封装成类,同时提供了与常用编程语言的接口。这时,matlab对文件目录和文件的操作有着重要的作用。
一、 matlab对路径的操作
1、 filesep
用于返回当前平台的目录分隔符,Windows是反斜杠(\),Linux是斜杠(/)。 2、
fullfile
用于将若干字符串连接成一个完整的路径。例如:
>> f=fullfile('D:','Matlab','example.txt')
f=D:\Matlab\example.txt
(在Windows中,“D:\”表示D盘,“D:”表示目录)
3、
fileparts
用于将一个完整的文件名分割成4部分:路径,文件名,扩展名,版本号。例如: >>
f=fullfile('D:','Matlab','example.txt');
>>[pathstr,name,ext,versn]=fileparts(f)
pathstr=D:\Matlab
name=example
ext=.txt
versn=’’
4、 pathsep
返回当前平台的路径分隔符。Windows是分号(;),Linux是冒号(:)。
5、 exist
可以用于判断目录或者文件是否存在,同时不同的返回值有不同的含义。例如: >>
f=fullfile('D:','Matlab','example.txt');
>>exist(f)
ans=2
>> exist('D:\Matlab') ans
=7
6、 which
可以通过一个函数或脚本名称得到它的完整路径,同时还能处理函数重载的情况,例如: >>
which
abs(0)
C:\MATLAB7\toolbox\matlab\elfun\@double\abs.bi
%
double
method
>>
which
abs(single(0))
C:\MATLAB7\toolbox\matlab\elfun\@single\abs.bi
%
single
method
7、
isdir
判断一个路径是否代表了一个目录,例如: >>
p='D:\Matlab';
>> f=fullfile(p,'example.txt');
>>
isp=isdir(p)
isp=1
>> isf=isdir(f)
isf=0
8、 dir
用于列出一个目录的内容,返回值为结构体数组类型,包含如下部分:name:文件或目录的名称;date:修改日期;bytes:文件大小;isdir:是否是目录。例如:
>> p='D:\Matlab';
>>files=dir(p)
files
=
8x1 struct
array
with
fields:
name
date
bytes
isdir
9、
cd
用于切换当前工作目录。例如:
>> cd('c:/toolbox/matlab/demos') %切换当前工作目录到demos
>>cd
..
%切换当前工作目录到matlab
10、
pwd
用于当前工作目录的路径。例如: >>
pwd
ans
=C:\MATLAB7\work
11、
path
用于对搜索路径的操作。例如:
<< path %查询当前所有的搜索路径(MATLABPATH)
<<p=path
%把当前的搜索路径存在字符串变量p中
<<path(‘newpath’)
%将当前搜索路径设置为newpath
<<path(path,’newpath’)
%向路径添加一个新目录newpath
<<path(’newpath’,
path)
%向当前搜索路径预加一个新目录nespath
12、 addpath和rmpath
用于对matlab搜索路径的添加和删除。例如:
<< addpath(‘directory’) %将完整路径directory加入到当前搜索路径的最顶端
<<rmpath
13、 what
用于显示出某目录下存在哪些matlab文件;若输入完整路径,可列出指定目录下的文件。例如:
<< what
<< what dirname
<<what(‘dirname’)
其中dirname是要查找的路径的名字,路径在matlab的搜索路径内时,没有必要输入全名,只输入最后或最后两级就够了。 14、
path2rc
保存当前matlab的搜索路径到pathdef.m文件中。
二、 matlab对文件的操作
1、 fopen
打开文件或者得到文件打开的信息。例如: >>
f=fullfile('D:','Matlab','example.txt');
>> fid=fopen(f); %打开文件,fid=-1表示打开文件失败;fid=1表示输出stdout;fid=2
表示错误信息文件;fid=其他正数表示文件打开成功,并返回文件编号。(fid=1,2不需打开)
>> fid
=
fopen(f,’r’);
%以读(r)的方式打开文件;打开方式有:r,
w,
a,
r+,
w+,
a+,
A,
W
>> [fid,message] =
fopen(filename,
mode,
machineformat)
2、
fclose
关闭一个或者多个文件。例如: >>fclose(fid)
>> fclose(‘all’) 3、
load
可用于读数值型文件,并且无须打开文件,但是要求文件中的内容所有行的列数相同。例如:
>> f=fullfile('D:','Matlab','example.txt');
>>A=load(f)
%返回以f为路径的文件的内容
4、
fread
用于读取文件中的内容,需要和fopen, fclose配合使用,返回的是ASCII码,可以指定返回字节数和返回的格式。例如:
>> f=fullfile('D:','Matlab','example.txt');
>>
fid
=
fopen(f,
'r');
>>a=fread(fid);
%读取文件全部内容,返回的是每个字节的ASCII码
>> b=fread(fid,5); %读取文件中的前5个字符返回的是这5个字节的ASCII码
>>c=fread(fid,5,
'uint8=>char');
%读取文件中前5个字符并以字符char格式返回
>>d=fread(fid,’*char’);
%读取文件中全部内容并以字符串的格式返回
(a,b,c,d每句是一个单独语句与其他语句无关)
>> e1=fread(fid,5,’*char’); %读取文件中前5个字符并以字符串的格式返回
>> e2=fread(fid,8,’*char’); %读取fid指向位置开始后面的8个字符并以字符串的格式返回(e2与e1一起使用时)
>> fclose(fid)
5、 fscanf
用于读取文件中指定格式的内容,需要和fopen, fclose配合使用,可以指定读取的字节数,返回的内容存放到一个一维数组中。例如:
>> f=fullfile('D:','Matlab','example.txt');
>>
fid
=
fopen(f,
'r');
>> a=fscanf(fid,’%d’); %读取文件中的所有数字,返回到数组a中
>> [a,count]=fscanf(fid,’%d’,5); %读取文件中fid指向位置开始后面的5个数字,返回到数组a中,count返回a的大小,count<=5(返回的数字个数可能小于要求读取的个数)
>> fclose(fid)
6、 fgetl
用于读取文件中一行内容,不包括换行符,需要和fopen, fclose配合使用。例如:
>>
f=fullfile('D:','Matlab','example.txt');
>>
fid
=
fopen(f,
'r');
>>tline=fgetl(fid);
%从文件中读取fid指向的一行内容
>> fclose(fid) 7、
fgets
用于读取文件中一行内容,包括换行符,需要和fopen,fclose配合使用。(只能用于文本
文件)例如:
>> f=fullfile('D:','Matlab','example.txt');
>>
fid
=
fopen(f,
'r');
>>tline=fgets(fid);
%返回文件标识符指向的一行
>>tline=fgets(fid,nchar);
%返回文件标识符指向的一行的最多nchar个任何字符
>>fclose(fid)
8、 fwrite
用于将二进制数据写入文件中,需要和fopen,fclose配合使用。例如: >>
f=fullfile('D:','Matlab','example.txt');
>>
fid
=
fopen(f,
'wb');
>> fwrite(fid,magic(5),'integer*4');
%创建一个二进制文件,由25个4位integer类型
的元素组成的5*5的矩阵
>> fclose(fid) 9、
fprintf
用于将指定格式数据写入到文件中,需要和fopen,fclose配合使用。例如: >>x
=
0:.1:1;
%从0到1以0.1为单位建立一个矩阵
>> y =
[x;
exp(x)];
>> f=fullfile('D:','Matlab','example.txt');
>>fid
=
fopen(f,'w');
>> fprintf(fid,'%6.2f .8f\n',y);
%将矩阵y写入文件中,规定了写入格式
>>fclose(fid)
10、
fseek
用于对文件指针位置的设定,需要和fopen,fclose配合使用。例如: >>
f=fullfile('D:','Matlab','example.txt');
>>fid
=
fopen(f,'r');
>>fseek(fid,
19,
'bof');
>>A
=
fscanf(fid,’%d’,5);
>> fclose(fid) 11、
ftell
用于得到文件指针位置,需要和fopen,fclose配合使用。例如: >>
f=fullfile('D:','Matlab','example.txt');
>>fid
=
fopen(f,'r');
>>fseek(fid,0,’eof’);
>>position=ftell(fid);
>>fclose(fid)
12、 ferror
用于查询关于文件错误的输入或者输出,需要和fopen,fclose配合使用。例如: >>
f=fullfile('D:','Matlab','example.txt');
>>fid
=
fopen(f,'r');
>> message1=ferror(fid);
%返回错误信息
>> message2=ferror(fid,’clear’)
%返回错误信息并清空
>> fclose(fid) 13、
feof
用于判断是不是文件末尾,需要和fopen,fclose配合使用。例如: >>
f=fullfile('D:','Matlab','example.txt');
>>fid
=
fopen(f,'r');
>>while
~feof(fid)
>>tline=fgetl(fid);
>>printf(tline);
>>end
>> fclose(fid) 三、
。。
四、
一、
1、
用于返回当前平台的目录分隔符,Windows是反斜杠(\),Linux是斜杠(/)。
用于将若干字符串连接成一个完整的路径。例如:
>>
用于将一个完整的文件名分割成4部分:路径,文件名,扩展名,版本号。例如:
4、
返回当前平台的路径分隔符。Windows是分号(;),Linux是冒号(:)。
5、
可以用于判断目录或者文件是否存在,同时不同的返回值有不同的含义。例如:
ans=2
>> exist('D:\Matlab')
6、
可以通过一个函数或脚本名称得到它的完整路径,同时还能处理函数重载的情况,例如:
判断一个路径是否代表了一个目录,例如:
>>
>>
8、
用于列出一个目录的内容,返回值为结构体数组类型,包含如下部分:name:文件或目录的名称;date:修改日期;bytes:文件大小;isdir:是否是目录。例如:
>>
8x1
用于切换当前工作目录。例如:
>> cd('c:/toolbox/matlab/demos')
用于当前工作目录的路径。例如:
用于对搜索路径的操作。例如:
<< path
12、
用于对matlab搜索路径的添加和删除。例如:
<< addpath(‘directory’)
13、
用于显示出某目录下存在哪些matlab文件;若输入完整路径,可列出指定目录下的文件。例如:
<< what
<< what
其中dirname是要查找的路径的名字,路径在matlab的搜索路径内时,没有必要输入全名,只输入最后或最后两级就够了。
保存当前matlab的搜索路径到pathdef.m文件中。
二、
1、
打开文件或者得到文件打开的信息。例如:
>> fid=fopen(f);
表示错误信息文件;fid=其他正数表示文件打开成功,并返回文件编号。(fid=1,2不需打开)
>>
>> [fid,message]
关闭一个或者多个文件。例如:
>> fclose(‘all’)
可用于读数值型文件,并且无须打开文件,但是要求文件中的内容所有行的列数相同。例如:
>>
用于读取文件中的内容,需要和fopen,
>>
>> b=fread(fid,5);
>> e1=fread(fid,5,’*char’);
>> e2=fread(fid,8,’*char’);
>> fclose(fid)
5、
用于读取文件中指定格式的内容,需要和fopen,
>>
>> a=fscanf(fid,’%d’);
>> [a,count]=fscanf(fid,’%d’,5);
>> fclose(fid)
6、
用于读取文件中一行内容,不包括换行符,需要和fopen,
%从文件中读取fid指向的一行内容
>> fclose(fid)
用于读取文件中一行内容,包括换行符,需要和fopen,fclose配合使用。(只能用于文本
文件)例如:
>>
8、
用于将二进制数据写入文件中,需要和fopen,fclose配合使用。例如:
>> fwrite(fid,magic(5),'integer*4');
的元素组成的5*5的矩阵
>> fclose(fid)
用于将指定格式数据写入到文件中,需要和fopen,fclose配合使用。例如:
>> y
>>
>> fprintf(fid,'%6.2f
fseek
用于对文件指针位置的设定,需要和fopen,fclose配合使用。例如:
>> fclose(fid)
用于得到文件指针位置,需要和fopen,fclose配合使用。例如:
12、
用于查询关于文件错误的输入或者输出,需要和fopen,fclose配合使用。例如:
>> message1=ferror(fid);
>> message2=ferror(fid,’clear’)
%返回错误信息并清空
>> fclose(fid)
用于判断是不是文件末尾,需要和fopen,fclose配合使用。例如:
>> fclose(fid)