Index with for loop variable name and definition

137 visualizaciones (últimos 30 días)
Stef
Stef el 28 de Jun. de 2018
Editada: Stephen23 el 29 de Jun. de 2018
I have a matrix A and avector y. I want to create a loop which names and defines them the matrix A from A1,...,A10.
for i = 1:10
A{i} = X(y==i)
end
Unfortunately this code does not work. It would be nice to end up with a double and not a cell
  1 comentario
Stephen23
Stephen23 el 29 de Jun. de 2018
Editada: Stephen23 el 29 de Jun. de 2018
"I want to create a loop which names and defines them the matrix A from A1,...,A10."
Dynamically accessing variable names is one way that beginners force themselves into writing slow, complex buggy, code. Read this to know why:
Using a cell array with indexing is simple, neat, and very efficient. You should use a cell array with indexing.
Note that when you put a number into the variable name like that then you are using it as pseudo-indexing: note that processing pseudo-indexing is complex and slow. In contrast, real indexing of a cell array (as your question shows) is extremely fast, efficient, and easy to debug.
So far you have not provided any reason why you need to write much slower, more complex, buggier code. Cell arrays are designed to efficiently hold data arrays, exactly like you want to now.

Iniciar sesión para comentar.

Respuesta aceptada

D. Plotnick
D. Plotnick el 29 de Jun. de 2018
If I understand your question, it is parallel to the one here, which as Stephen Cobeldick points out is a bad idea.
There is sort of a way around this using a structure.
for i = 1:10
fname = ['A',num2str(i)];
B.(fname) = y(i);
end
  5 comentarios
Stef
Stef el 29 de Jun. de 2018
Thanks, it worked!
Stephen23
Stephen23 el 29 de Jun. de 2018
Editada: Stephen23 el 29 de Jun. de 2018
@Stef: note that your original code, using a cell array and indexing, is faster and simpler than this answer.
You might also find this to be of interest:

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by