【问题标题】:Access data in different files stored in different folders访问存储在不同文件夹中的不同文件中的数据
【发布时间】:2018-11-11 12:41:03
【问题描述】:

我四处搜索并找到了一些解决我的问题的潜在解决方案,但无法实现代码。

基本上,我有一个包含 32 个子文件夹 的目录。 32 个子文件夹中的每一个都有 4 个文件(.mat,每个文件有 1 行和几百万列)。我感兴趣的变量称为 data(请参见下面的代码)。

我需要访问子文件夹子集中的所有 4 个 .mat 文件,并将它们附加/连接到一个大矩阵中。此外,每个子文件夹中的每组 4 个文件在结束矩阵中应彼此相邻。

此外,子文件夹的名称和其中的文件是已知的:

文件夹 = TT1、TT2、

文件 = TT1ch1、TT1ch2、TT1ch3、TT1ch4; TT2ch1、TT2ch2、TT2ch3、TT2ch4、

我还需要在代码中指定实际打开和读取 4 个文件的子文件夹。并非所有内容都需要始终阅读。到目前为止,我有这个:

TTs  = [1,2,3,4,5]; % List of sub-folders to use.

for i = TTs; 

    addpath(strcat('TT',num2str(i))); 
    cd (strcat('TT',num2str(i)));     

        for w = 1:4;  %get data from the 4 files
            load(strcat('TT',num2str(i),'ch', num2str(w), '.mat')); 
            allChs(w,:) = data(1,:);  %concatenate into one matrix
        end

    cd ..
    rmpath(strcat('TT',num2str(i)));
end

使用此代码,我可以从给定子文件夹的 4 个文件中读取数据并将其复制到新矩阵 (allChs)。然而,当我尝试添加代码以遍历所有文件夹时,我只是覆盖了我拥有的内容......

我尝试了不同的方法,但在这个阶段非常卡住。任何帮助都将受到热烈欢迎。

干杯, 爱子

【问题讨论】:

  • 那里不需要addpathrmpath。您总是从当前文件夹读取,路径未使用。
  • 谢谢克里斯。只需从代码中删除这些行,因为它们是不必要的。干杯

标签: matlab for-loop signal-processing


【解决方案1】:

正如@Cris Luengo 所说,您不需要在路径中添加一个文件夹来读取它。

另外,你不需要cd,你最好明确你想读取的路径:

parentPath = <your-main-folder>;
TTs  = [1,2,3,4,5]; % List of sub-folders to use.

现在,您只需在继续使用文件夹时继续使用行,这样它就不会覆盖下一个子文件夹:

for k = TTs; 
   for w = 1:4;  %get data from the 4 files
       load(fullfile(parentPath ,strcat('TT',num2str(i),'ch', num2str(w), '.mat'))); 
       allChs(4*(k-1)+w,:) = data(1,:);  %concatenate into one matrix
   end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    相关资源
    最近更新 更多