Matlab 读取多个文本文件并将其作为列导入

Matlab 读取多个文本文件并将其作为列导入,matlab,Matlab,我有一个代码,但我不知道如何将每个文本文件作为矩阵中的不同列放置 例如,我有5个文本文件,它们都只有一列。如何将它们的每一列放入一个矩阵中?我写的代码如下,但它不起作用: for k = 1:5 textFilename = ['file' num2str(k) '.txt']; fid = fopen(textFilename, 'rt'); textData = fread(fid); fclose(fid); end 我假设从所有文本文件中读取的数据长度相同。如果是这样,那么您所

我有一个代码,但我不知道如何将每个文本文件作为矩阵中的不同列放置

例如,我有5个文本文件,它们都只有一列。如何将它们的每一列放入一个矩阵中?我写的代码如下,但它不起作用:

for k = 1:5
 textFilename = ['file' num2str(k) '.txt'];
 fid = fopen(textFilename, 'rt');
 textData = fread(fid);
 fclose(fid);
end

我假设从所有文本文件中读取的数据长度相同。如果是这样,那么您所要做的就是创建一个空矩阵,然后逐列连接结果。您只需添加两行即可

 % Store the text data here
 textDataMatrix = [];
 for k = 1:5
  textFilename = ['file' num2str(k) '.txt'];
  fid = fopen(textFilename, 'rt');
  textData = fread(fid);
  % Concatenate text file data by column
  textDataMatrix = [textDataMatrix textData];
  fclose(fid);
 end
在这个脚本的末尾,
textDataMatrix
将包含您想要的文本数据,并根据需要放置在单独的列中


NB:创建一个空矩阵并在之后填充项目通常是不好的做法,因为这被认为是缓慢的。如果您在运行此代码之前确实知道单个数据文件中有多少个字符/字节/数字,这将有所帮助。执行此操作时,可以在运行
for
循环之前预先分配所需的适当内存量。在MATLAB中,在填充矩阵之前创建适当的空间比连接元素更有效。如果要这样做,假设数据文件中的元素数称为
numElements
。您可以按照以下方式重写我上面编写的代码:

 % Store the text data here
 textDataMatrix = zeros(numElements, 5);
 for k = 1:5
  textFilename = ['file' num2str(k) '.txt'];
  fid = fopen(textFilename, 'rt');
  textData = fread(fid);
  % Place the k'th text data in the k'th column
  textDataMatrix(:,k) = textData;
  fclose(fid);
 end

但是,如果一个特定的文本文件中没有那么多的元素,那么我上面的代码的第一个版本就可以了。

谢谢。。。因此,如果我想存储每个文件的第二列,只需像这样存储它:x=txtData(:,2);和disp(x)来查看valuessorry我在尝试时遇到了这个错误:找不到“numElements”的精确(区分大小写)匹配最接近的匹配是:C:\Program Files\MATLAB\R2013a\toolbox\nnet\nnet\nndatafun\numElements.m项目中的错误(第2行)textDataMatrix=0(numElements,5);如果你仔细阅读我的文章,那是假设你已经知道文件中元素的数量。如果没有,则只能使用代码的第一个版本。您别无选择,只能按照第一个版本连接每列。元素数您是指文件中的列?元素数表示每个文件中存在多少行数据。例如,如果一个文本文件的每个文件中有10个数字,那么
numElements=10
。。。。但是如果您不知道这一点,那么使用代码的第一个版本。它将在不知道一个文件有多少数据元素的情况下工作。