我有多个(假设有N个).txt文件,由矩阵形式的数字csv数据组成。我想将这些数据文件中的每一个导入到一个(1 x N)单元数组中,同时保留原始矩阵形式。如果原始数据很小,比如3x3,那么textscan可以按照以下方式完成这项工作:
fileId = fopen('data1.txt');
A{1} = textscan(fileID, '%d %d %d', 'delimiter',',','CollectOutput',1);
(这将是函数的一部分。)但如果我的。txt文件有100列数据呢?我可以在formatSpec中写100次'%d',但一定有更好的方法吗?
这似乎是一个容易的问题,但我对Matlab很陌生,不知道如何进行。任何建议将非常感激,谢谢!!
对于这些文本文件中数据一致的情况,您可以使用 importdata
,而不必担心格式说明符。在此基础上讨论了两种方法。
方法1
filenames = {'data1.txt' 'data2.txt' 'data3.txt'}; %// cell array of filenames
A = cell(1,numel(filenames)); %// Pre-allocation
for k = 1:numel(filenames)
imported_data = importdata(char(filenames(k)));
formatted_data = cellfun(@str2num, imported_data, 'uni', 0);
A{k} = vertcat(formatted_data{:})
end
方法2
假设这些文本文件是当前工作目录中唯一的.txt文件,您可以直接获取文件名并使用它们将其中的数据存储到单元格数组中,如下所示-
files = dir('*.txt');
A = cell(1,numel(files)); %// Pre-allocation
for k = 1:numel(files)
imported_data = importdata(files(k).name);
formatted_data = cellfun(@str2num, imported_data, 'uni', 0)
A{k} = vertcat(formatted_data{:})
end