matlab操作(小总结1)
一、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和结构struct1、单元数组(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)时得到[1x4 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方面的知识。然后结合字符串处理的知识,即可很好的操作。 |