Read in matrix for multiple steps while changing string

3 views (last 30 days)
Hi, I want to read in multiple temperature files at different time steps. For instance I have array:
time = [0, 10, 20];
And I need to read in:
temp0 = "temperature_0.txt"
temp1 = "temperature_10.txt"
temp2 = "temperature_20.txt"
So I can compile them all into:
temp = [temp0;temp1;temp2]
How can I handle changing the string names "temp0" and "temperature_0.txt" based on the value in time? I know I will have a for loop such as follows, but I am unsure of how to make the variable input into the name as a string
for k = 1:length(time)
...
end

Accepted Answer

Steven Lord
Steven Lord on 24 May 2023
time = [0, 10, 20];
files = "temperature_" + time + ".txt"
files = 1×3 string array
"temperature_0.txt" "temperature_10.txt" "temperature_20.txt"
Now you could iterate over the elements of the files string array.
  3 Comments
Alexandra Vest
Alexandra Vest on 24 May 2023
A follow-up question, if I have a bunch of file, let's say "log_0.txt", "log_10.txt" "log_20.txt" and I wanted to read in the numbers on the latter end of the file name to create the array time=[0,10,20] is there a way to do that? I don't need to read in those files, just take the number following log_. Thank you!
Steven Lord
Steven Lord on 24 May 2023
If the only digits in the names are in the numbers you want to extract, use digitsPattern to extract that data from the string array.
time = [0, 10, 20];
files = "temperature_" + time + ".txt"
files = 1×3 string array
"temperature_0.txt" "temperature_10.txt" "temperature_20.txt"
numbersAsText = extract(files, digitsPattern)
numbersAsText = 1×3 string array
"0" "10" "20"
numbers = double(numbersAsText)
numbers = 1×3
0 10 20
isequal(time, numbers)
ans = logical
1

Sign in to comment.

More Answers (0)

Categories

Find more on Cell Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!