Using a variable in fopen

11 visualizzazioni (ultimi 30 giorni)
Andrew
Andrew il 11 Set 2014
Commentato: Andrew il 23 Set 2014
I want to run a loop that will access files from multiple folders
I used dir to retrieve the names of the folders and I want to be able to feed the names into fopen.
ex:
folder = dir('W:\Examples')
#_of_folders = numel(folder)
for i=1:#_of_folders
fid = fopen('W:\Examples\folder([i])')
...
end
How can I enter that variable into fopen? Is there a better way of achieving this?
I did take a look at this thread, but I am still having trouble.
Thank you
  1 Commento
Stephen23
Stephen23 il 11 Set 2014
Don't forget to use fclose after you have read the file data! This will save a lot of bug-finding nightmares later...

Accedi per commentare.

Risposta accettata

Iain
Iain il 11 Set 2014
init = 'W:\Examples';
folder = dir(init)
for i = 1:numel(folder)
% do something with folder(i) to figure out if it's a file you want to open, or a folder you want to search, and if so:
filename = [init '\' folder(i).name]; % or filename = [init '\' folder(i).name '\' folder(i).name '.abc']; if you know that the folders contain files with the same name as the folder and a fixed extension...
% do something with filename
fid = fopen(filename,'r');
end

Più risposte (1)

Ken Atwell
Ken Atwell il 11 Set 2014
You can use fullfile as a convenient way to create a full path from parts. 'folder' as returned by dir will be an array of structs -- you are interested in the 'name' field.
(Note you can't use "#" as part of a MATLAB variable name, so I've use "num_files" instead)
folder = dir('W:\Examples')
num_files = numel(folder)
for i=1:num_files
fid = fopen(fullfile('W:\Examples', folder(i).name))
...
end
  3 Commenti
Ken Atwell
Ken Atwell il 12 Set 2014
I'm not quite following, but you can pass an arbitrary number of pieces to fullpath:
fid = fopen(fullpath('W:\Examples', folder(i).name, 'folder', 'file'))
Andrew
Andrew il 23 Set 2014
Thank you, this worked perfectly

Accedi per commentare.

Categorie

Scopri di più su File Operations in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by