Reading text file with variable name

4 views (last 30 days)
Dear all
I wanted to read a text file with variable names in a loop. file names are 1.txt, 2.txt, 3.txt, and 4.txt. The files will be called during iteration repeatedly. I have an array that has the pattern of how the files should be called say: file_number=[1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 ..]. I wonder if there is a way to call the files following this pattern.
Thanks

Accepted Answer

Voss
Voss on 17 Jun 2022
One way, using file_number in the file name:
file_number=[1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4];
for ii = 1:numel(file_number)
current_file_name = sprintf('%d.txt',file_number(ii))
% read the file current_file_name
end
current_file_name = '1.txt'
current_file_name = '1.txt'
current_file_name = '1.txt'
current_file_name = '2.txt'
current_file_name = '2.txt'
current_file_name = '2.txt'
current_file_name = '3.txt'
current_file_name = '3.txt'
current_file_name = '3.txt'
current_file_name = '4.txt'
current_file_name = '4.txt'
current_file_name = '4.txt'
current_file_name = '1.txt'
current_file_name = '1.txt'
current_file_name = '1.txt'
current_file_name = '2.txt'
current_file_name = '2.txt'
current_file_name = '2.txt'
current_file_name = '3.txt'
current_file_name = '3.txt'
current_file_name = '3.txt'
current_file_name = '4.txt'
current_file_name = '4.txt'
current_file_name = '4.txt'
Another way, which works for any set of file names:
file_number=[1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4];
file_names = {'a_file.txt' 'another_file.txt' 'yet_another_file.txt' 'you_guessed_it_another_file.txt'};
for ii = 1:numel(file_number)
current_file_name = sprintf('%s',file_names{file_number(ii)})
% read the file current_file_name
end
current_file_name = 'a_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
  2 Comments
Abdulaziz Abutunis
Abdulaziz Abutunis on 17 Jun 2022
Thank you very much
I found this works also
[num2str(file_number(i)),'.txt']
Voss
Voss on 17 Jun 2022
Edited: Voss on 17 Jun 2022
You're welcome! That's right, num2str also works!
As an alternative to all of these approaches, which create one file name at a time, it may be convenient to create all the file names at once, before the loop:
file_number=[1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4];
all_file_names = sprintfc('%d.txt',file_number)
all_file_names = 1×24 cell array
{'1.txt'} {'1.txt'} {'1.txt'} {'2.txt'} {'2.txt'} {'2.txt'} {'3.txt'} {'3.txt'} {'3.txt'} {'4.txt'} {'4.txt'} {'4.txt'} {'1.txt'} {'1.txt'} {'1.txt'} {'2.txt'} {'2.txt'} {'2.txt'} {'3.txt'} {'3.txt'} {'3.txt'} {'4.txt'} {'4.txt'} {'4.txt'}
for ii = 1:numel(file_number)
current_file_name = all_file_names{ii}
end
current_file_name = '1.txt'
current_file_name = '1.txt'
current_file_name = '1.txt'
current_file_name = '2.txt'
current_file_name = '2.txt'
current_file_name = '2.txt'
current_file_name = '3.txt'
current_file_name = '3.txt'
current_file_name = '3.txt'
current_file_name = '4.txt'
current_file_name = '4.txt'
current_file_name = '4.txt'
current_file_name = '1.txt'
current_file_name = '1.txt'
current_file_name = '1.txt'
current_file_name = '2.txt'
current_file_name = '2.txt'
current_file_name = '2.txt'
current_file_name = '3.txt'
current_file_name = '3.txt'
current_file_name = '3.txt'
current_file_name = '4.txt'
current_file_name = '4.txt'
current_file_name = '4.txt'
file_number=[1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4];
file_names = {'a_file.txt' 'another_file.txt' 'yet_another_file.txt' 'you_guessed_it_another_file.txt'};
all_file_names = file_names(file_number)
all_file_names = 1×24 cell array
{'a_file.txt'} {'a_file.txt'} {'a_file.txt'} {'another_file.txt'} {'another_file.txt'} {'another_file.txt'} {'yet_another_file.txt'} {'yet_another_file.txt'} {'yet_another_file.txt'} {'you_guessed_it_another_file.txt'} {'you_guessed_it_another_file.txt'} {'you_guessed_it_another_file.txt'} {'a_file.txt'} {'a_file.txt'} {'a_file.txt'} {'another_file.txt'} {'another_file.txt'} {'another_file.txt'} {'yet_another_file.txt'} {'yet_another_file.txt'} {'yet_another_file.txt'} {'you_guessed_it_another_file.txt'} {'you_guessed_it_another_file.txt'} {'you_guessed_it_another_file.txt'}
for ii = 1:numel(file_number)
current_file_name = all_file_names{ii}
end
current_file_name = 'a_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'a_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'yet_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'
current_file_name = 'you_guessed_it_another_file.txt'

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!