How to define a vector for multiple files
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
Jos (10584)
2014-2-19
files is a variable holding the names of the text files, not the contents of it. This is causing the error message.
采纳的回答
Jos (10584)
2014-2-19
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 个评论
Anthony
2014-2-19
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Oceanography and Hydrology 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!