Matlab, как перебрать все объекты в рабочей области - PullRequest
6 голосов
/ 26 августа 2011

У меня есть рабочая область matlab, где все переменные загружаются из файла .mat с помощью команды load. Теперь я хочу перебрать все эти объекты и выполнить над ними операции.

Есть ли какой-нибудь способ доступа к объектам без явного указания их имен? Например рабочее пространство (1)?

Ответы [ 2 ]

10 голосов
/ 26 августа 2011

Я согласен с ответом @ Simon, однако, если все, что вас интересует, это переменные, которые загружаются из одного файла .mat, вам может быть лучше использовать форму загрузки struct-assignment:

S = load('myfile.mat')

Теперь вместо того, чтобы получить 'x', 'y', 'z' в вашей рабочей области, у вас есть S.x, S.y и S.z.

Затем вы можете выполнить итерацию всех полейструктура с:

for f = fieldnames(S)'
   disp(['Field named: ' f{1} ]);
   disp('Has value ')
   disp(S.(f{1}));
end
9 голосов
/ 26 августа 2011

Вы можете получить список всех переменных в виде строки, используя who:

myvars = who;

, тогда если вы хотите что-то сделать с содержимым переменных (who дает только имена переменных), вы можете сделать что-то вроде этого:

for i=1:length(myvars)
    myfunction(eval(myvars(i)))
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...