Why can't the index variable of a for loop be stored in a structure or other array?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
status.loop1 = 0;
for status.loop1 = 1:10
%do something
end
returns the error "Invalid use of operator." pointing to the dot.
Similarly,
status = [0 0 0];
for status(1) = 1:10
%do something
end
returns "Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters."
Same for cell array.
Why?
More broadly, is there some way to store index variables together? (to keep workspace neat, have access to all status variables in one place, etc)
0 Kommentare
Antworten (3)
Fangjun Jiang
am 23 Mär. 2023
Bearbeitet: Fangjun Jiang
am 23 Mär. 2023
There is no mention of any requirement on the name of the index varialbe, here in the document for "for",
My explaination is this:
for index = values
statements
end
"index" needs to be a valid variable name, but "status.loop1" or "status(1)" is not a valid variable name.
You could do things like this:
status=[ 0 1 -1];
for k=status
disp(k);
end
3 Kommentare
Steven Lord
am 24 Mär. 2023
status = struct('index', {1, 2, 3})
If that syntax worked, what would you expect this code segment to do? What would the variable status be after it executed? Be specific.
% for status.loop = 4:6
% disp(sum([status.loop])
% end
Note that if I write the expression:
status.index
I get three outputs from this comma-separated list.
John D'Errico
am 23 Mär. 2023
Surely this is not a big problem?
for ind = 1:10
status.ind = ind;
% do Stuff
end
2 Kommentare
Stephen23
am 26 Mär. 2023
"The main question is still why this is necessary at all."
Because there are many cases to consider, e.g. non-scalar structures:
Siehe auch
Kategorien
Find more on Loops and Conditional Statements 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!