how to concatenate multiple columns in one column of cell array?

16 views (last 30 days)
Hi guys,
I have text files that have numeric data only, I wrote a loop that read all the text file in my folder and get the data and put them in one column ... but my problem is this code escape some files and hence don't give me the correct numbers of the rows
here is my code, could you tell me, where is the wrong in it?
files = dir('*.txt') ; % you are in the folder of files
N = length(files) ;
T = [];
for i = 1:N
try
filename = files(i).name ;
fid = fopen(filename, 'r');
ZWD = fscanf(fid, '%f');
T = [T; ZWD];
catch ME
disp('An error occurred while processing the files.');
disp('Execution will continue.');
continue
end
end

Accepted Answer

KSSV
KSSV on 10 Jun 2021
files = dir('*.txt') ; % you are in the folder of files
N = length(files) ;
T = cell(N,1);
for i = 1:N
filename = files(i).name ;
fid = fopen(filename, 'r');
data = fscanf(fid, '%f');
T{i} = data ;
end
iwant = cell2mat(T) ;
  4 Comments
Ebtesam Farid
Ebtesam Farid on 10 Jun 2021
Edited: Ebtesam Farid on 10 Jun 2021
the file names are like 'eur001.txt': the first three characters are the GNSS station's name and the other three digits are Day of year (1:365)
I sometimes use (sprintf) to read them, looping on the three digits in it
Ebtesam Farid
Ebtesam Farid on 10 Jun 2021
Hi again,
I am sorry, I have a problem in the code above, with the line
iwant = cell2mat(T) ;
there are some cells contain data (don't have the same length), and therefore when converting into mat, "mat format" escape such cells and give me wrong output
for e.g.
N(lenght of the files) = 365, so I have T (cell array) with size (365 x 1), each cell contains (24 point -- hourly data) ... some cells don't have 24 points, therefore the final (iwant) variable is not 8760 point, it escapes all the different lenght cells and gave me wrong output

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!