Matlab提取多个文件夹里同文件名csv文件

我已将文件分享,链接:http://pan.baidu.com/s/1i3Fxjfv密码:yv96。解压即知目录结构。现在,需要提取每一个600000.csv中的第二列数... 我已将文件分享,链接:
http://pan.baidu.com/s/1i3Fxjfv 密码:
yv96。解压即知目录结构。
现在,需要提取每一个600000.csv中的第二列数据,但要从第一列中的0930XX开始(也就是前面的0925XX对应的第二列部分数据要去掉),然后将得到的1xN矩阵保存为2014XXYY这样日期为文件名(所在文件夹即如此命名)的mat文件,其中的变量均命名为Y,保存到m文件所在文件夹,m文件位于2013根目录内或桌面均可。
另,若过于麻烦,则只要按日期循环即可,月份我可手动完成。
若比较简单,则可否把600000.csv作为输入变量?这样我输入文件名之后程序再运行提取数据。
非常感谢您的帮助!
一个小的思路变化,m文件链接:链接:http://pan.baidu.com/s/1dD4FWrv 密码:si2a,非常感谢。
展开
 我来答
jimtien
推荐于2016-01-11 · TA获得超过7656个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1168万
展开全部
clc;clear all;
file = input('要处理的数据文件名:','s');
path = cd();
s1 = dir(path); 
[m,n]=size(s1);
for i = 3:m
   if s1(i).isdir
       s2 = dir([path '/' s1(i).name]);
       [p,q]=size(s2);
       for j = 3:p
           csvfilename = [path '\' s1(i).name '\' s2(j).name '\' file];
           fprintf('%s\n',csvfilename);
           [d1,Y]=textread(csvfilename,'%d%f%*[^\n]','delimiter',',');
           Y(find(d1<93000))=[]; %去掉093000之前的数据
           matfilename = [s2(j).name '.mat'];
           save(matfilename,'Y');
       end
   end
end

 

要处理的数据文件名:SH600000.CSV
D:\MATLAB\working\2013\201301\20130102\SH600000.CSV
D:\MATLAB\working\2013\201301\20130103\SH600000.CSV
D:\MATLAB\working\2013\201301\20130104\SH600000.CSV
D:\MATLAB\working\2013\201301\20130105\SH600000.CSV
D:\MATLAB\working\2013\201301\20130122\SH600000.CSV
D:\MATLAB\working\2013\201301\20130131\SH600000.CSV
D:\MATLAB\working\2013\201302\20130203\SH600000.CSV
D:\MATLAB\working\2013\201302\20130204\SH600000.CSV
D:\MATLAB\working\2013\201302\20130205\SH600000.CSV
D:\MATLAB\working\2013\201303\20130302\SH600000.CSV
D:\MATLAB\working\2013\201303\20130312\SH600000.CSV
D:\MATLAB\working\2013\201303\20130331\SH600000.CSV
D:\MATLAB\working\2013\201304\20130403\SH600000.CSV
D:\MATLAB\working\2013\201304\20130415\SH600000.CSV
D:\MATLAB\working\2013\201305\20130503\SH600000.CSV
D:\MATLAB\working\2013\201305\20130505\SH600000.CSV
D:\MATLAB\working\2013\201306\20130602\SH600000.CSV
D:\MATLAB\working\2013\201306\20130631\SH600000.CSV

 

更多追问追答
追问
实测能运行,非常好!但是,非常抱歉,由于初学matlab,能麻烦稍微逐行解释一下吗?例如,s含义,cd()用法,i为什么从3开始循环(每月日期随机),s2含义。非常感谢!
追答

cd()获得当前路径, s=dir(path)即获得当前路径下的所有文件(包括子目录), s2是第二层目录下的所有文件. i从3开始循环,是因为1,2是当前目录(.)和上层目录名(..) 见下图. 这个和dos命令中的dir得到的结果一致.

 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式