Variable in a string name

조회 수: 9 (최근 30일)
Andrew
Andrew 2014년 9월 23일
댓글: Andrew 2014년 9월 23일
I am reading columns of binary files to plot. I have all my files in one folder and I want to plot them and pull out certain data. How can I set up a loop that will go through all the files?
My idea so far:
1) Use D= dir('W:\Folder')
to retrieve the names of all the files
2) for i= 1:70
str = ('W:\Folder\D(i)\Data')
fid = fopen(str);
How can I insert the different names in the array D from step 1?
I tried sprintf but I believe there is a problem because it's a path.
Thank you for your help

채택된 답변

Geoff Hayes
Geoff Hayes 2014년 9월 23일
Andrew - try using fullfile instead
foldername = 'W:\folder';
files = dir(foldername);
for k=1:length(files)
% ignore directories
if ~files(k).isdir
% build the file name
filename = fullfile(foldername,files(k).name);
% open the file
fid = fopen(filename);
if fid>0
% do stuff with file contents
% close the file
fclose(fid);
end
end
end
You can use sprintf as well (something like str = sprintf('W:\folder\%s\,files(k).name)' but the above should work just as well.
  댓글 수: 2
Image Analyst
Image Analyst 2014년 9월 23일
Very robust. But after looking at his question again, I think he want to use dir() to get directories rather than files . Why do I think that? Because D(i) is in the middle of "W:\Folder\D(i)\Data" so he intends D(i) to be a folder name. So I think he wants all the subfolders of "Folder" and Data are files inside the subfolders, and unfortunately Data may not have any extension to the filename. SO maybe "if ~files(k).isdir" should actually be "if files(k).isdir"
Andrew
Andrew 2014년 9월 23일
Thank you, I was able to work it out using fullfile

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2014년 9월 23일
Use sprintf() to construct the filename from i.
filename = sprintf('W:/Folder/%s/Data.dat', D(i).name);

카테고리

Help CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by