Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 将函数应用于文件夹中格式不同的文件_Matlab_If Statement_File Io_Formatting - Fatal编程技术网

Matlab 将函数应用于文件夹中格式不同的文件

Matlab 将函数应用于文件夹中格式不同的文件,matlab,if-statement,file-io,formatting,Matlab,If Statement,File Io,Formatting,我有一个装满文件的文件夹。每个文件最左边的一列是日期。一些文件具有yyyymmdd日期,而其他文件具有mm/dd/yyyy日期。我想将函数minutebars1()应用于yyyymmdd类型,将函数minutebars2()应用于mm/dd/yyyyy类型。我试图用if语句来实现这一点,试图说,在遍历所有文件的for循环中,如果textscan以给定的格式成功读取,则应用正确的函数。但是,下面发布的代码不起作用,这给了我一个错误,文本扫描行的格式字符串格式错误。如何正确地做到这一点 % read

我有一个装满文件的文件夹。每个文件最左边的一列是日期。一些文件具有
yyyymmdd
日期,而其他文件具有
mm/dd/yyyy
日期。我想将函数
minutebars1()
应用于
yyyymmdd
类型,将函数
minutebars2()
应用于
mm/dd/yyyyy
类型。我试图用if语句来实现这一点,试图说,在遍历所有文件的for循环中,如果textscan以给定的格式成功读取,则应用正确的函数。但是,下面发布的代码不起作用,这给了我一个错误,文本扫描行的格式字符串格式错误。如何正确地做到这一点

% reads all file names
fPath = uigetdir('.', 'Select directory containing CSV files');
if fPath==0, error('no folder selected'), end
fNames = dir( fullfile(fPath,'*.csv') );
fNames = strcat(fPath, filesep, {fNames.name});

% process each file
for i=1:length(fNames)

    fid = fopen(fNames{i},'rt');

    if   textscan(fid, '%i,%d:%d:%*d.%*d,%f,%d,%*c') % minutebars1() for format 1
    minutebars1(fNames{i});
    end

    if   textscan(fid, '%d/%d/%d,%d:%d:%d,%f,%d,%*c') % minutebars2() for format 2
    minutebars2t(fNames{i});
    end

    fclose(fid);

end

以字符串形式读取第一行,并测试其格式
fgetl
用于读取单行,而
regexp
用于模式测试

% Get first line of file
fid = fopen(fnames{i}, 'rt');
str = fgetl(fid);
fclose(fid);

% test for pattern mm/dd/yyyy
if(regexp(str, '\d\d/\d\d/\d\d\d\d'))
    minutebars2(fNames{i});
else
    minutebars1(fNames{i});
end