matlab批处理,读取文件#Matlab

说下背景,师姐扔给我一堆数据,让我以科学进制的方式整理到word中。

每个文件的数据是这个样子的。

之前师姐是一个个手敲进去的,那我可受不了~~~

按照道理说,直接复制到xls中,但是复制只能放在一个单元格中,没有进行处理,然后再转复制到word中。

好吧,那就读进matlab中,然后再写入xls中。

但是,难道真的让我一个个文件的load,然后写入xls,每次写入xls的时候还要变化写入文件的文件名。

 

这么多数据,DOS啥的可以批处理,难道matlab不行吗?

我先将属于同一类的数据放在对应的文件夹中。

 

查了下手册和百度

List = dir();
[Row Colunm] = size(List);
FileNameStore = cell(Row,1);
FileNameStoreIndex=1;
for ii=1:1:Row
if(List(ii).isdir == 1)
if(List(ii).name(1,1) ~= '.')
FileNameStore(FileNameStoreIndex,1) = cellstr(List(ii).name);
FileNameStoreIndex =FileNameStoreIndex+1;
end
end
end
FileNameStore(FileNameStoreIndex:Row)=[];

使用dir读取所有文件,然后判断下文件的属性,将不是文件夹的家伙踢出去~~~

 

知道了文件夹,然后把name转换为字符串类型,然后读取这个文件夹中的文件,load,然后写入xls

[Row Colunm] = size(FileNameStore);
for ii=1:1:Row
  PathName = ['./' char(FileNameStore(ii)) './*.dat'];%%choose the data file in the Folder
  ListInFile = dir(PathName);
  [RowInFile ColunmInFile] = size(ListInFile);
  XLSName = ['./' char(FileNameStore(ii)) './' char(FileNameStore(ii)) '.xls'];
  Place = 'B2';
  for jj=1:1:RowInFile
  DataFilePath = ['./' char(FileNameStore(ii)) './' char(ListInFile(jj).name)];
  DataFromFile = load(DataFilePath);
  xlswrite(XLSName,DataFromFile,char(ListInFile(jj).name),Place);
end
end

 

OK了,所有的子文件夹中都有了对应的xls了。

把所有的xls的数据都处理成科学进制(保留3位小数点)的形式,

然后复制到word中。

 

虽然还有些东西可以自动化,但是已经进步了一点,mark一下

 

posted on 2014-06-07 22:03  依风152  阅读(1384)  评论(0)    收藏  举报