【问题标题】:Import many .txt files from a folder in MATLAB and process them从 MATLAB 的一个文件夹中导入许多 .txt 文件并进行处理
【发布时间】:2016-06-30 12:13:02
【问题描述】:

即使许多科目都有相同的主题,我也找不到我的答案。

我在一个文件夹中有 30 个 .txt 文件(名称不同),我想将它们全部导入 MATLAB。从每个文件中取出一列,并用所有这些列制作一个向量。

Bombo30m1.txt
Bombo30m2.txt
Bovolon30m2.txt
Rigutti30m4.txt

每个 .txt 文件都有 45 列数字,以逗号分隔。 我的文本文件中的所有数字都是整数。

所有文件的列数相同,但行数不同(每个文件大约 4000 个)。

对于所有文件,我想使用第 40 列并用它制作一个向量。所以我会得到一个大向量。

【问题讨论】:

标签: matlab import


【解决方案1】:

首先,创建一个包含所有文件信息的struct

dir('*.txt') 为您提供包含文件所有信息的结构:

4x1 struct array with fields:    
    name
    date
    bytes
    isdir
    datenum

定义一个变量,您将在其中放置第一列的值

使用number_of_files = numel(filenames) 获取文件数。 col_values 是将值放入的向量。注意,您应该尝试预先分配内存。

Load the files

filenames(1).name 为您提供第一个文件的名称,“Bombo30m1.txt”。 遍历所有文件,并获取值:load(filenames(ii).name)

最后将新值放在col_values 中之前的值之后。

总结一下:

filenames = dir('*.txt');
number_of_files = numel(filenames);
col_values = [];

for ii = 1:number_of_files
    all_values = load(filenames(ii).name);
    col_values = [col_values; all_values(:,1)];
end

注意!! 此代码包含一些次优代码,因为我在循环内创建了一个不断增长的向量。如果这是一个将执行多次的过程,那么您应该稍微重写它。 Relevant

【讨论】:

    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多