Storing variables from an array loop
Ältere Kommentare anzeigen
Hello,
I'm coding to import several .txt files in matlab and create as many matrix as the number of file. I created the basic loop but I get stuck when it comes to store my dataArray without keeping overwriting it during the loop.
Here the code that I'm trying to work on to obtain new matrix in the workspace for each loop.
delimiter = '\t';
startRow = 2;
formatSpec = '%f%f%f%f%f%f%[^\n\r]';
for k = 1:3
% Read the file.
textFileName = ['SJ' num2str(k) '.txt'];
if exist(textFileName, 'file')
fid = fopen(textFileName, 'rt');
dataArray = textscan(fid, formatSpec, 'Delimiter', delimiter, 'EmptyValue' ,NaN,'HeaderLines' ,startRow-1, 'ReturnOnError', false);
fclose(fid);
else
fprintf('File %s does not exist.\n', textFileName);
end
%Create matrix
GRFdata = [dataArray{1:end-1}];
end
The issue is that GRFdata keeps overwriting whilst I would obtain GRFdata1, GRFdata2, etc.
Anyone could point me out the right way to proceed, please? Thanks
4 Kommentare
per isakson
am 16 Jan. 2015
See 'CollectOutput' of textscan
Giuseppe
am 16 Jan. 2015
Stephen23
am 17 Jan. 2015
Basically you should not do this. Using dynamically defined variable names or encoding data within the variable name is a pretty bad idea in MATLAB, as is described on many threads on MATLAB Answers:
The first of these links gives an excellent alternative, which is what you should probably be using for your data: structures . In particular you can dynamically assign the field names, which is a much neater solution than dynamically defining variable names.
Giuseppe
am 17 Jan. 2015
Akzeptierte Antwort
Weitere Antworten (1)
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!