For loop to read in sequentially named .txt files

5 次查看(过去 30 天)
I have a batch of txt files named "0, 2, 4, 6, 8".txt and wondered if there was a way for me to read them all in as one batch using a for loop, maybe something like:
txtFiles = dir('*.txt') ;
N = length(txtFiles) ;
iwant = cell(1,N) ;
for i = 1:N
iwant{i} = importdata(txtFiles(i).name) ;
end
% works if all cells are of same size
M = cell2mat(iwant) ;
pcolor(M) ;
shading interp

回答(1 个)

Alagu Sankar Esakkiappan
编辑:Alagu Sankar Esakkiappan 2021-12-9
I gather that you're trying to convert numerical data from many text files into a single matrix. The Code given in question's reference would work fine with a slight catch. I presume that you're trying to concatenate data from all text file sources in a Row-by-Row manner. But with the above code, cell2mat function appends in a columnwise manner. i.e, cell2mat combines three 5*3 cell arrays into a single 5*9 array instead of 15*3 array. To resolve this, You may try transposing the cell array before matrix conversion according to the following reference:
M = cell2mat(iwant') ; % Transpose Cell Array before conversion
You might also run into another problem for matrix conversion if the text files also have a Column text header in each file. In this case, cell2mat will not return a numerical matrix as expected but instead returns a structure. You may extract data in such case using the following reference:
for i = 1:N
iwant{i} = importdata(txtFiles(i).name) ; % iwant now contains Column header text data as well
end
iwantStruct = cell2mat(iwant'); % Returns a Structure instead of a matrix
matrixData = vertcat(iwantStruct(1:N).data); % Perform Columnwise concatenation to extract data from Stucture for each file
  2 个评论
Rik
Rik 2021-12-9
The second loop can be replaced by this:
matrixData=vertcat(iwantStruct(1:N).data);
That avoids the iterative growing of the array as well.
Alagu Sankar Esakkiappan
Good catch! Thanks for the improvement. I have integrated this in my answer as well

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by