How to define a vector for multiple files
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a series of .txt tiles that all contain 3 columns; depth, temperature and salinity. I want to create a vector for depth, temperature and salinity for all of these files without individually writing out the names of each as there is a lot.
I tried to use the following script to accomplish this but get the error message 'index exceeds Matrix Dimensions'. Any help would be greatly appreciated.
files=dir('*.txt');
for i=1:length(files)
eval(['load ' files(i).name ' -ascii']);
end
Depth(:,1)=files(:,1);
Temp(:,1)=files(:,2);
Sal(:,1)=files(:,3);
1 commentaire
Jos (10584)
le 19 Fév 2014
files is a variable holding the names of the text files, not the contents of it. This is causing the error message.
Réponse acceptée
Jos (10584)
le 19 Fév 2014
Do not use eval!
files=dir('*.txt');
for i=1:length(files)
tempdata = load(files(i).name, '-ascii')
% now tempdata *only* holds the values from the last file.
% You want to store them for use, outside the for-loop.
% A convenient way is to use structures:
data(i).depth = tempdata(:,1) ;
data(i).temp = tempdata(:,2) ;
data(i).sal = tempdata(:,3)
end
Now, for instance,
allsal = cat(1,data(:).sal)
will give you all the salinity values of all files concatenated into a single vector
3 commentaires
Anthony
le 19 Fév 2014
At the end of the loop, i==length(files). If you want to plot the data of a all files, do:
for k=1:length(files)
figure(k)
plot(data(k).temp,data(k).depth); %kth file
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Tables dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!