Updating variables as they go through a loop

In summary: However, if there are spaces in your filename, they will cause problems. In summary, the code should make filename1, filename2, filename3 and so on from the loop instead of just one filename which is constantly overwritten.
  • #1
Larry Gopnik
Gold Member
34
19
Hi all,

This might be a simple question but I cannot seem to find any solution online

I'm currently building a MatLab code for my project which involves in the ageing of certain artefacts and paintings, I've got most of it built but can't solve the simplest of problems of the start of the code

It requires loading a certain number of .txt files (the number of which the user specifies) into my code. So far I have for this particular part of the code:

j=input('Please input the number of data files');
lw = [400,450,500,550,600,650,700,750,800,880];

for i = 1:j

[filename,path]= uigetfile('*.txt','open .txt file');


end

How do I get it so that there are multiple filenames saved and so that the previous filename isn't overwritten by the new filename?

Basically, the code should make filename1, filename2, filename3 and so on from the loop instead of just one filename which is constantly overwritten...

Thank you

Larry
 
Physics news on Phys.org
  • #2
concatenate the file names into an array...
 
  • Like
Likes jim mcnamara and Larry Gopnik
  • #3
Dr Transport said:
concatenate the file names into an array...

My goodness of course, It's so simple but I missed it! Thank you! What an idiot I am

Quick question, I'm trying to store the filenames into the array and get errors

n = 10; %Number of slices
j=input('Please input the number of data files ');
lw = [400,450,500,550,600,650,700,750,800,880]; %slices in nm
z = zeros(n,j);
pathA = zeros(j);

for i = 1:j

[filename,path]= uigetfile('*.txt','open .txt file');
pathA{i} = (filename);
end

disp(z);
disp(pathA);

I get the error:

"Cell contents assignment to a non-cell array
object.

Error in Build_1 (line 14)
pathA{i} = (filename);
"

I'm very thankful for the help - up to now I've only used Matlab for pure maths, so I'm finding the more "practical" sides of the code quite difficult and new

Larry
 
  • #4
Try leaving out the parenthesis in line 14... also, if there is a \ in the path, that causes problems also
 
  • #5
Larry, the reason why you're getting the error is that you initially created pathA as a 2-D array of doubles with this line:

pathA = zeros(j);

Then you triedto index it with braces, which means that you expect it to be a cell array. But it's NOT, hence the error. You should initialize pathA like this:

pathA = cell(j, 1);

Then use it like this:

pathA{i} = filename;

No parentheses needed. The FAQ will explain it all: http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F

You might also like this FAQ on how to process a sequence of files: http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F

Finally having slashes, forward or backward, in your filename string will NOT be a problem.
 
  • Like
Likes Larry Gopnik

FAQ: Updating variables as they go through a loop

How do you update variables as they go through a loop?

In order to update variables as they go through a loop, you need to first initialize the variable outside of the loop. Then, inside the loop, you can use an assignment statement to update the variable with a new value. This will allow the variable to be updated and used in subsequent iterations of the loop.

Can you provide an example of updating variables in a loop?

Sure, here is an example of updating a variable in a for loop in Python:

for i in range(1, 5):
    count = count + i
print(count)

In this example, the variable "count" is initialized outside of the loop and then updated with the value of i in each iteration.

What happens if you don't update the variable in a loop?

If you do not update a variable in a loop, it will retain its initial value and will not reflect any changes made during the loop. This can result in unexpected or incorrect outputs.

Can you update multiple variables in a loop?

Yes, you can update multiple variables in a loop by using multiple assignment statements. For example:

for i in range(1, 5):
    count = count + i
    total = total + count
print(total)

In this example, both the variables "count" and "total" are updated in each iteration of the loop.

Are there any best practices for updating variables in a loop?

Yes, it is best practice to use descriptive variable names and to update variables in a way that is clear and easy to understand. It is also important to avoid infinite loops by ensuring that the loop will eventually end and the variable will be updated with a new value.

Similar threads

Replies
3
Views
1K
Replies
2
Views
1K
Replies
5
Views
9K
2
Replies
52
Views
12K
Replies
1
Views
1K
Back
Top