【问题标题】:Loop through files in a folder in matlab循环遍历matlab文件夹中的文件
【发布时间】:2012-07-23 23:10:01
【问题描述】:

我有一组日志文件需要在 matlab 中解析和查看。

日志文件如下所示:

LOG_20120509_120002_002.csv
(year)(month)(day)_(hour)(minute)(second)_(log part number)

日志每小时递增,但有时秒数会减少一到两秒(每小时),这意味着我需要忽略他们所说的 loadcsv。

我还有另一个文件:

LOG_DATA_20120509_120002.csv

其中包含整个小时的数据(不同的数据)。

总体目标是:

 loop through each day 
     loop through each hour
         read in LOG_DATA for whole hour
         loop through each segment
             read in LOG for each segment
                 compile a table of all the data

我想问题是,如果它们不同,我如何忽略一天中的分钟?我怀疑这将是通过遍历文件夹中的所有文件,在这种情况下我该怎么做?

【问题讨论】:

    标签: matlab loops file-io csv


    【解决方案1】:

    遍历文件夹中的所有文件相对容易:

    files = dir('*.csv');
    for file = files'
        csv = load(file.name);
        % Do some stuff
    end
    

    【讨论】:

    • 嗯这对我不起作用...文件=文件只是将文件复制到文件中:(
    • 试试file = files';它可能要求files 是一个行数组。
    • @Isaac 请记住,load 设计用于仅包含 MATLAB 变量的文件,因此即使它适用于完全数字的 CSV 文件,如果标题行包含变量名称或数据比较复杂,使用textscan或csvread可能会更好。
    • 当我这样做时,我收到一个错误提示 Unable to read file 'abcdef.csv' : ': no such file or directory. 这是为什么?
    • @vigamage,您的目标是当前目录吗?或者您使用的是dir('some/path/*.csv')?
    【解决方案2】:

    首先,你必须指定你的路径,你的*.csv文件所在的路径

    path = 'f:\project\dataset'
    

    您可以根据您的系统进行更改。

    那么,

    使用dir函数:

    files = dir (strcat(path,'\*.csv'))
    
    L = length (files);
    
    for i=1:L
       image{i}=csvread(strcat(path,'\',file(i).name));   
       % process the image in here
    end
    

    pwd也可以使用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多