【问题标题】:Importing multiple files at once in matlabmatlab一次导入多个文件
【发布时间】:2019-10-06 21:20:59
【问题描述】:

非常感谢您阅读本文;

问题:我有一个关于在 Matlab 中导入的问题。我正在尝试设计一个风力涡轮机。为此,我需要阅读许多不同的文本文件,其中包含定义翼型形状的 x 和 y 坐标(所有文本文件都放在一个文件夹中)并依次分析每个文件。

我的第一次尝试是

%% Reading the datafile 
%Opening the filename in the format given to us by UIUC 
fid=fopen('Filename',r);

%Skipping over the first lines (asterisk)
fscanf(fid,'%*s %*s %*s \n %*s %*s ',[1,5]);

%Reading over the Values of the columns
data=fscanf(fid,'%f %f  \n',[2, inf]);

%Extracting the different types of data from the datafile
x=data(1,:);
y=data(2,:); 

这样的代码有两个问题:

第一个问题是我需要在第一列中删除可变数量的单词

问题 1:有没有办法只从数据库中删除第一列数据,还是必须删除所有值?

第二个问题是我要查看 1550 个表,更改文件名 1550 次将非常繁琐且耗时。

问题 2:有没有办法一次打开文件夹中的所有文件?

【问题讨论】:

  • 您能否在一个文件中添加几行,并显示您需要删除和保留的内容?
  • 你的文件名不是都像 table_num_1234 吗?然后你可以自动构建它们......
  • 请在每个问题中提出一个问题。见How to Ask

标签: matlab import


【解决方案1】:

读取表格文件的一种简单方法是使用readtable。例如,如果您知道您的文件有 2 个要跳过的标题行,那么您可以简单地运行

t = readtable('my_file', 'HeaderLines', 2);

但是,这确实意味着您使用的是表而不是 MATLAB 数组。如果您更喜欢保留一个数组,您可以简单地通过table2array 传递表格(示例如下)。

在处理大量文件方面,假设您的工作目录有以下文件:

a1.txt   a3.txt   b1.txt   ...
a2.txt   a4.txt   b2.txt

你应该首先得到一个包含所有文件名的数组,然后遍历这个数组。一种方法如下。

all_files = dir('*.txt') % Use a suitable glob to match your filenames
for i = 1:length(all_files)
    data = table2array(readtable(all_files(i).name, 'HeaderLines', 2);
    % do stuff
end

或者,如果您想手动读取文件:

all_files = dir('*.txt') % Use a suitable glob to match your filenames
for i = 1:length(all_files)
    fid = fopen(all_files(i).name, 'r');
    % do stuff
    fclose(fid);
end

请注意,代码假定所有数据文件具有相同的格式。

【讨论】:

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