MATLAB学习笔记【1】读取纯文本txtloadtest.txt【2】读取中英文混合txt[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。这里%s的个数和[a1,a2,a3,a4]对应。【3】读取中英文混乱txtfidin=fopen('test.txt');%打开test2.txt文件fidout=fopen('mkmatlab.txt','w');%创建MKMATLAB.txt文件while~feof(fidin)%判断是否为文件末尾tline=fgetl(fidin);%从文件读行ifdouble(tline(1))=48&&double(tline(1))=57%判断首字符是否是数值fprintf(fidout,'%s\n\n',tline);%如果是数字行,把此行数据写入文件MKMATLAB.txtcontinue%如果是非数字继续下一次循环endendfclose(fidout);MK=importdata('MKMATLAB.txt');%将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来【4】读取同一路径下所有txtfunctiondata=readall_txt(path)%READALL_TXT读取所有文件%DATA=READALL_TXT(PATH)读取路径PATH下的所有txt文件中的数据赋给data%txt文件中含有一个数据项%输出cell格式以免各txt中数据长度不同%%原始版本:V1.0作者:李鹏A=dir(fullfile(path,'*.txt'));%读取后A的格式为%name--filename%date--modificationdate%bytes--numberofbytesallocatedtothefile%isdir--1ifnameisadirectoryand0ifnotA=struct2cell(A);num=size(A);fork=0:num(2)-1x(k+1)=A(4*k+1);%找出name序列endfork=1:num(2)newpath=strcat(path,'\',x(k));data{k}=load(char(newpath));end%[EOF]readall_txt.m下面用这个函数做一个小实验:比如,我有三个txt文档,在路径E:\shuju下:名字分别为123.txt,456.txt,789.txt在MATLAB命令窗口输入:data=readall_txt(‘E:\shuju’);我们可以检验结果,分别输入data{1},data{2},data{3}可以看到已经把所有的数据都读出了,并且,虽然里面的数据长度不同,也没有任何问题!【5】读取同一路径下所有matfunctiondata=read_mat(path)%READ_MAT读取所有文件%DATA=READ_MAT(PATH)读取路径PATH下的所有mat文件中的数据赋给data%前提是每个MAT文件只含有一个变量,如果含有多个,则使用READ_MAT%输出cell格式以免各mat中数据长度不同%输出data后,如要使用请用格式data{index}访问各数据项%原始版本:V1.0作者:李鹏时间:2009.04.04%修改版本:V1.1修改内容:适应mat文件只有一个变量的情况时间:2009.04.05%A=dir(fullfile(path,'*.mat'));%读取后A的格式为%name--filename%date--modificationdate%bytes--numberofbytesallocatedtothefile%isdir--1ifnameisadirectoryand0ifnotA=struct2cell(A);num=size(A);fork=0:num(2)-1x(k+1)=A(4*k+1);%找出name序列,x存储内容为*.matendfork=1:num(2)newpath=strcat(path,'\',x(k));temp=load(char(newpath));matname=char(fieldnames(temp));%获取结构成员名称data{k}=getfield(temp,matname);%获取该名称下的成员内容end%[EOF]read_mat.m下面用这个文件做一个小的实验:假如我有两个mat文件在路径E:\shuju下,则输入:data=read_mat('E:\shuju');检验结果可以看出是正确的,但是我想下面用debug来显示一下其中变量的变化情况,自己感觉是比较复杂的,因为从结构体,cell等数据变来变去的,可能我的程序把原来简单的问题复杂化了,但是的确没有找到更好的办法。