- no one uses this syntax
- it causes far more bugs than it being used as intended,
- TMW have broken other fairly fundamental syntaxes (e.g. input/output argument order of some basic functions, changed default first/last value returned, changes to scoping rules, etc. etc.) without causing the end of the world.
for loop value array must be a row vector(?)
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi all,
The next-to-simplest matlab code is approximately:
idxs = [1,2,3];
for k = idxs
k
end
But if the idxs array is a column vector, the results are rather different:
idxs = [1;2;3];
for k = idxs
k
end
That is, you get one value of k equal to the whole column vector. I did not know that. I've been using Matlab for almost 30 years. How did I miss that?
2 Commenti
Stephen23
il 17 Mag 2023
Modificato: Stephen23
il 17 Mag 2023
This is an ancient MATLAB feature that no one uses, no one likes, and only causes bugs:
I for one would love to be able to write:
for k = find(..)
without the ugly rigmarole and obfuscation that is currently required.
No doubt some at TMW worry about "breaking existing code", but that argument does not hold much water:
Just like IF accepting non-scalar values, this is something that should have been retired a long time ago.
Walter Roberson
il 17 Mag 2023
I have occasionally taken advantage of this aspect of for. Not very much at all.
Risposta accettata
Cris LaPierre
il 17 Mag 2023
Spostato: Matt J
il 18 Mag 2023
I didn't realize that either. It does appear to be documented.
- valArray — Create a column vector, index, from subsequent columns of array valArray on each iteration. For example, on the first iteration, index = valArray(:,1). The loop executes a maximum of n times, where n is the number of columns of valArray, given by numel(valArray(1,:)). The input valArray can be of any MATLAB® data type, including a character vector, cell array, or struct.
So it is the number of columns that determines how many times your loop runs, and index is all values in the nth column.
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Get Started with MATLAB 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!