一、Matlab文件处理 1
1、打开关闭文件 1
2、读取文件 1
3、移动文件指针 2
4、文件操作的一个例子 2
二、Matlab字符文件处理 2
1、txt文件读写 2
三、Matlab字符串处理 2
1、获取字符串长度 2
2、连接字符串 2
3、字符串替换查找 3
4、字符串转换 3
5、字符串排序 3
四、元组cell和结构struct 3
1、单元数组(cell array) 3
2、结构数组(struct array) 3
五、Matlab目录操作 4
一、Matlab文件处理
1、打开关闭文件
fid=fopen(文件名,打开方式)
打开方式有:r(读),w(写),a(追加到文件末尾)
返回的是文件句柄。
sta=fclose(fid)
通过文件句柄关闭文件。关闭成功返回0,否则返回-1
feof(fid)
判断是否到达文件末尾。是则返回true。
2、读取文件
(注:以下的fid都表示文件句柄)
(1) 以二进制形式读写:(二进制文件的读写)
[a,count]=fread(fid, size, pre) —具体的查看帮助。读取的数据在a中,count存储读取数据的个数。size为可选项,不写时默认读取整个文件。
count=fwrite(fid,a,pre ) —具体的查看帮助。a中存放所需写的数据,count返回成功写入的个数。
(2) 格式化读写:(文本文件的读写)
[a,count]=fscanf(fid,format,size) —具体的查看帮助。读取的数据在a中,count存储读取数据的个数(count可以省略,也可以写成a=fscanf(fid,format,size)),size为可选项,不写时默认读取整个文件。格式有%s, %c, %d, %f等。
count=fprintf(fid, format, a) —具体的查看帮助。a中存放所需写的数据,count返回成功写入的个数。
(3) 其他的读写方式
读取一行:fgetl(fid)
3、移动文件指针
status=fseek(fid, offset, origin) —具体的查看帮助。Offset表示性对移动位置, origin表示原位置。
4、文件操作的一个例子
fid = fopen(infile,\’r\’); %打开文件
while ~feof(fid)
str = fgetl(fid); %读取一行
%判断一行的开头是否是数字,是的话才操作
if length(str)>=1 && double(str(1))>=48 && double(str(1))<=57
fprintf(foutfile,\’%s\n\’,str); %将一行数据写入文件
end
end
tempData = importdata(outfile);
%将写入到txt文件中的数据读取出来,此时格式很好
二、Matlab字符文件处理
1、txt文件读写
importdata(filename)
三、Matlab字符串处理
1、获取字符串长度
length(str)
2、连接字符串
连接连个字符串:每个字符串最右边的空格被裁切,结果是一个字符串。
strcat(a,b)。
如:a=”qwe”; b=”a”; c=”etret”; d= strcat(a,b)的结果是:qwea
连接多个字符串:结果是一个二维字符串数组形式,会将短的字符串后面自动补空使之长度与最长的字符相同。
strvcat(a,b,c)。
如:a=”qwe”; b=”a”; c=”etret”; d= strvcat(a,b,c)的结果是:
qwe
a
etret
3、字符串替换查找
strrep(str,str2,str3)。将str中的str1替换为str2。
strfind(str,str1)。在str中查找str1。返回位置数组。
4、字符串转换
数字转换为字符串:num2str()
字符串转换为数字:str2num()
将字符串中的字母转换为小写:lower()
将字符串中的字母转换为小写:upper()
5、字符串排序
按照字符串的ascii码排序:sort()
四、元组cell和结构struct
1、单元数组(cell array)
其中的每个元素为(cell)。cell可以包含任何类型的matlab数据。
一个单元数组中可以包含不同的cell。
(1)创建cell数组
利用cell函数,如:cell(2,3) 生成一个2*3的cell数组。或者直接等于一个元组,如:c={[1 2 3 4]}。
(2)访问单元数组:两种方法
使用括号,使用花括号。
使用括号得到的是那个单元(cell)。使用花括号得到的是那个单元的具体内容。
如:b=cell(1); b{1}=[1 2 3 4]。当显示b(1)时得到[1×4 double]。而使用b{1}得到1 2 3 4。
(3)赋值:有了前面访问的方法即可明白,要赋值也有两种方法。
使用括号时,须将一个cell赋给左边。使用花括号时可以直接将值赋给左边。
2、结构数组(struct array)
(1)创建结构及结构元组
使用struct创建,struct(\’fieldname1\’,value1,\’field2\’,value2,….); 另外创建结构可以直接如右方式:g.a=1;g.b=2
创建struct数组:直接使用结构生成数组即可:[a b c…] 其中a,b,c都是相同的结构。
(2)访问结构元组
使用括号访问其中的结构。对于结构的访问使用点运算。
(3)赋值
根据前面的基础操作,结合点操作与括号操作即可。
典型的应用如:目录的操作。
files=dir(‘path’); 得到的是目录下的文件列表,即一个struct的数组。n*1的struct数组。
访问时:files(1).name 第一个文件的名字。
五、Matlab目录操作
dir(dirname) 读取某个目录下的文件列表。返回值是一个struct的列向量。
所以此处涉及到struct方面的知识。然后结合字符串处理的知识,即可很好的操作。