函数描述
导入文件夹下所有指定类型的文件。
里面用的是importdata
函数,该函数能导入的类型都可以导入。
导入的文件将以文件名命名,存在输出结果的结构体中。
使用示例
"C:\Users\Administrator\Desktop\"
下存在testA.csv
和testB.csv
InputData = ImportTypeFilesFromForder("C:\Users\Administrator\Desktop\","*.csv");
调用后将得到InputData
结构体,其中包含testA
和testB
两个元素。
函数源码
% *************************************************************************
% @brief 导入文件夹下的指定类型的所有文件
% @param string FolderPath 文件目录 eg:"C:\Users\Administrator\Desktop\"
% @param string Type 文件类型 eg:"*.txt" "*.csv"
% @return struct InputData 导入后的数据,以文件名称命名
% *************************************************************************
%% function
function InputData = ImportTypeFilesFromForder( FolderPath, Type )
% 输入合法性检查
if ( (length(FolderPath)~=1) || ~isstring(FolderPath) )
error( 'ImportCsvFileFromForder: 输入参数 "FolderPath" 不是string类型,或不是单独的一个字符串' );
elseif ( (length(Type)~=1) || ~isstring(Type) )
error( 'ImportCsvFileFromForder: 输入参数 "Type" 不是string类型,或不是单独的一个字符串' );
end
% 在FolderPath目录下寻找Type类型的文件
files = dir( fullfile(FolderPath, Type) );
% 文件存在判断
if( isempty( files ) )
error( ['ImportCsvFileFromForder: ' char(FolderPath) '目录下没有' char(Type) '类型的文件'] );
end
% 将文件导入Matlab
for i = 1:length( files )
filePath = fullfile( FolderPath, files(i).name ); % 对应文件的地址
fileName = regexprep( files(i).name, '\.[^.]*$','' ); % 提取文件名,作为变量名称
eval( ['InputData.' fileName '=' 'importdata(''' char(filePath) ''');'] );
end
return;
end