modify all vectors in workspace

8 visualizaciones (últimos 30 días)
Joel Rovner
Joel Rovner el 18 de Abr. de 2016
Editada: Stephen23 el 19 de Jun. de 2019
I want to perform the same operation namely reshape() on all the arrays stored in the workspace, but there are a lot of arrays present and it would be tedious to do them individually. Is there any way to iterate through all of the arrays. For example I know if I type myvars=who; and then myvars(1) it will display the first array in the workspace. But how would you use myvars(i) in say reshape()?

Respuestas (2)

Stephen23
Stephen23 el 19 de Abr. de 2016
Editada: Stephen23 el 19 de Jun. de 2019

Kirby Fears
Kirby Fears el 18 de Abr. de 2016
Joel,
I will preface this by saying you really shouldn't have variables floating around your workspace without knowing their names at all times. The best practice would be to store all variables inside a cell array or struct which you can easily iterate over.
Nonetheless, here's a way it can be done with 'who'.
vars = who;
for i = 1:numel(vars),
tempvar = eval(vars{i});
if isnumeric(tempvar),
% perform manipulations of tempvar, like reshaping
end
eval(sprintf('%s = tempvar;',vars{i}));
end
I strongly suggest you revisit the process that generated all these variables and store them in a struct or cell array instead.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by