即使很多科目都有相同的主题,我也找不到答案。
我在文件夹中有30个.txt文件(名称不同),我想在MATLAB中导入所有这些文件。从每个文件中取一列,并生成包含所有这些列的向量。
Bombo30m1.txt
Bombo30m2.txt
Bovolon30m2.txt
Rigutti30m4.txt
每个.txt文件有45列数字,以逗号分隔。 我的文本文件中的所有数字都是整数。
所有文件的列数相同,但行数不同(每行大约4000个)。
对于所有文件,我想取40列并用它制作一个向量。所以我会得到一个很大的载体。
答案 0 :(得分: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
为您提供第一个文件的名称,&#34; Bombo30m1.txt&#34;。
遍历所有文件,并获取值: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