繁体   English   中英

Matlab:将多个数字csv .txt文件导入单个单元格数组

[英]Matlab: Import multiple numeric csv .txt files into single cell array

我有多个(例如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中写'%d'100次,但是必须有更好的方法吗?

这似乎是一个简单的问题,但是我对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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM