很奇怪,总是忘记更C#,主要平时还是用Matlab的比较多
这次又更新了一个项目,这个小项目主要设计到一些数据的整理,数据(尤其是excel)的奇怪的读取方式,最主要的是时间的处理,以及又设计了个Matlab app、大概就是这么奇怪的东西的融合。
数据的读取和处理
本次主要涉及到的数据读取,一个是读取整个文件夹下面的数据,一个是读取文件夹下面的子文件夹中的数据。而读取的类型主要涉及到的有excel,txt,和csv。
Matlab读取文件夹下面的文件
这种就是打开就是文件,可能会有别的后缀啊啥的
Dir = dir(filepath); % 遍历所有文件
k = 0;
for i = 1:length(Dir)
if(isequal(Dir(i).name,'.')||isequal(Dir(i).name,'..')) % 去除遍历是隐藏文件夹的
continue;
end
k = k+1;
file_name{k} = [filepath '\' Dir(i).name];
end
这个就是遍历所有文件的实现代码,这样只能读取所有的文件,需要注意的是,因为系统有两个隐藏文件夹,所以专门设计了新的k参数用于标记这个文件的位置
file=dir(fullfile(filepath,'*.mat')); %用于识别某种特定后缀的文件
k = 0;
for i = 1:length(file)
if(isequal(file(i).name,'.')||isequal(file(i).name,'..')) % 去除遍历是隐藏文件夹的
continue;
end
k = k+1;
file_name{k} = [filepath '\' file(i).name];
end
Matlab读取文件夹下面的子文件夹
这种就是打开的是文件夹下面的子文件夹,然后需要读取的是子文件夹下面的数据
kjzxDir = dir(kjzxPath); % 遍历所有文件
k = 0;
for i = 1:length(kjzxDir)
if(isequal(kjzxDir(i).name,'.')||isequal(kjzxDir(i).name,'..')||...% 去除系统自带的两个隐文件夹
~kjzxDir(i).isdir) % 去除遍历中不是文件夹的
continue;
end
k = k+1;
imgDir = dir([kjzxPath '\' kjzxDir(i).name '/*.txt']);
for j =1:length(imgDir) % 遍历所有文件
if imgDir(j).name(4)=='p' && imgDir(j).name(8)=='s' %仅读取风速
data_temp_u = importdata([kjzxPath '\' kjzxDir(i).name '\' imgDir(j).name]);%不能直接放入cell中,先改写
position_temp = regexp(imgDir(j).name, '_', 'split');%读取时间,这个也是非UTC格式
elseif imgDir(j).name(4)=='p' && imgDir(j).name(8)=='v' && imgDir(j).name(9)=='e' %仅读取风向
data_temp_v = importdata([kjzxPath '\' kjzxDir(i).name '\' imgDir(j).name]);%不能直接放入cell中,先改写
end
end
data_vel{k} = [data_temp_u.data];
data_dir{k} = [data_temp_v.data];
end
这个就是需要遍历文件夹下面的子文件夹并读取其中的数据,最大的不同是需要屏蔽掉文件夹下面的非文件夹内容,所以判定语句不同