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

13 次查看(过去 30 天)
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

采纳的回答

KSSV
KSSV 2021-6-10
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 个评论
Ebtesam Farid
Ebtesam Farid 2021-6-10
编辑:Ebtesam Farid 2021-6-10
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 2021-6-10
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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by