标签:
引用请注明出处杂谈 |
分类: MATLAB编程篇 |
1.入门:
(1)创建M文件:
function fileinfo(file)
[pathstr,name,ext,versn] = fileparts(file);
if name=='fileinfo'
disp('This is the target file')
else
disp('This is not the target file')
end
if ext==strcat('.','xls')
disp('This is a excel file')
else
disp('This is not a excel file')
end
(2)应用上面的M文件:
>>
file='\home\smartchen\matlab\filenifo.xls';
>> fileinfo(file)
This is not the target file
This is a excel file
>>
file='\home\smartchen\matlab\fileinfo.txt';
>>
This is the target file
This is not a excel file
>>
file='\home\smartchen\matlab\filenifo.xls';
>>
[pathstr,name,ext,versn]=fileparts(file);
%可以用来产生文件部分信息,pathstr文
%件路径,name文件名,ext文件后辍,versn文件版本
>> filecontr=fullfile(pathstr,[name
ext versn]);
%创建文件路径,前面参数是文件的路径,最后一个
参数是文件名称,如果该文件不包含后辍,则创建的完整路径也不包含后辍.
>> pathstr
pathstr =
\home\smartchen\matlab
>> name
name =
filenifo
>> ext
ext =
.xls
>> filecontr
filecontr =
\home\smartchen\matlab\filenifo.xls
2.打开和关闭文件
(1)打开文件
格式:[fid,message]fopen(filename,mode)
[fid,message]fopen(filename,mode,machineformat)
finename表示的是打开文件的名称,mode表示打开文件的方式,具体类型如下:
"r":以只读方式打开文件
"w",以只写方式打开文件,并覆盖原来的内容
"a",增补文件,在文件尾部增加数据
"r+",读写文件
"w+",创建一个新文件或者删除已有的文件内容,并进行读写操作
"a+",读取和增补文件.
例如:[fid,message]=fopen('E:\GUI\文件IO\filename.txt','w')
默认情况下,MATLAB会选择使用二进制的方式打开文件,而在该方式下,字符串不会被特殊处理,
fid被称为文件标识.数值没有太大意义,一般是由系统自动获取的必须仔细查看或者打开进行处理,只需查
看fid数值是否为-1即可,为-1不能打开对应的文件.
(2)关闭文件
>>
[fid,message]=fopen('fget1.m','w');
>> delete fget1.m
Warning: File not found or permission denied
上面结果表明,如果在关闭该文件前,直接删除文件,系统会提示用户删除命令被拒绝
首先应关闭文件,然后删除该文件,例如:
>> status=fclose(fid);
>> delete fget1.m
>>
[fid,message]=fopen('fget1.m','r+')
fid =
message =
No such file or directory
调用格式如下:
status=fclose(fid)
status=fclose('all')
上面的命令,fid表示使用fopen命令得到的文件标识参数,第二个命令表示使用命令删除所有已经打开的文
件.如果使用该命令得到的结果status=0,则表示关闭文件的操作成功;否则得到的结果status=-1.
3.处理二进制文件
(1)读取M文件
常见的二进制文件包括.m、.dat等。
已经有一个ball.m文件
>>
[fid,message]=fopen('ball.m','r+');
>> data=fread(fid);
>> whos data
Grand total is 2479 elements using 19832 bytes
>>
data
data =
>>
disp(char(data'))
% Script file ball.m
% Purpose:
conv=pi/180;
grav=-9.82
(2)读取TXT文件
读取二进制文件的命令fread,调用格式如下:
A=fread(fid,count,precision)
以选取正面三个参数。
应的帮助文件。
>>
fid=fopen('readtxt.txt','r');
>> data=fread(fid)
data =
>>
>> c=fread(fid,5)
c =
其中5表示的是选择前5个数值内容。
>>
>> c=fread(fid,'*char');
>> sprintf(c)
ans =
this is a txt file
>>
>> c1=fread(fid,5,'*char');
>>
>>
>>
>>
>>
sprintf('%c',c1,'*',c2,'*',c3,'*',c4,'*',c5)
ans =
this *is *a *txt *file
(3)写入二进制文件
可以使用fwrite命令来完成这样的任务。
>>
fid=fopen('magic5.txt','wb');
>>
fwrite(fid,magic(5),'int32');
>> fid=fopen('magic5.txt','r');
>>data=fread(fid,[5,5],'int32');
>> A=data';
>> A
A =
>> magic(5)
ans =
可以看出,首先创建一个空白的二进制文件,然后将MATLAB中创建的Magic矩阵读入该文件后,再打开该
文件,阅读该文件的内容。
4.处理文本文件:
(1)使用csvwrite读入文本文件:
a.使用csvwrite命令向文本文件写入MATLAB的数据:
>>
fid=fopen('cavlist.dat','wb');
>> m=[3 6 9 12 15;5 10 15 20 25;7 14
21 28 35;11 22 33 44 55];
>>csvwrite('cavlist.dat',m);
>> type cavlist.dat
3,6,9,12,15
5,10,15,20,25
7,14,21,28,35
11,22,33,44,55
b.将数据写cavlist文本文件中,并在数据列的前侧添加4个数据列,同时在数据列上方添加2个数据行:
>>
csvwrite('cavlist.dat',m,2,4)
>>type cavlist.dat
,,,,,,,,
,,,,,,,,
,,,,3,6,9,12,15
,,,,5,10,15,20,25
,,,,7,14,21,28,35
,,,,11,22,33,44,55
(2)使用dimwrite命令读入文本文件
a.将数据写入myfile文本文件中:
>>
fid=fopen('myfile.txt','wb');
>> m=rand(6);
>>
dlmwrite('myfile.txt',m,'delimiter','\t','precision',5);
>> type myfile.txt
0.84622
0.52515
0.20265
0.67214
0.83812
0.01964
(3)读取文本文件
a.用csvread和dlmread命令来读取文本文件
>> fid=fopen('cavlist.dat','wb');
%建立文本
>> m=[3 6 9 12 15;5 10 15 20 25;7 14
21 28 35;11 22 33 44 55];
>>
csvwrite('cavlist.dat',m);%写入文本
>>
m1=csvread('cavlist.dat');%下面皆是读文本
>>
m2=csvread('cavlist.dat',2,0);
>>
m3=csvread('cavlist.dat',2,0,[2,0,3,3]);
>> m4=dlmread('cavlist.dat');
>> m1
m1 =
>> m2
m2 =
>> m3
m3 =
>> m4
m4 =
b.在MATLAB中使用textread命令来读取文本文件
txtlist2内容:sally level1 12.34 45 yes
>> fid=fopen('txtlist2','r');
>>
[name,types,x,y,answer]=textread('txtlist2.txt','%s %s %f %d
%s',1)
name =
types =
x =
y =
answer =

加载中…