2011-08-26 560 views
5

我有一個matlab工作區,其中所有變量都使用load命令從.mat文件加載。現在,我想遍歷所有這些對象並對它們執行操作。matlab如何遍歷工作區中的所有對象

有沒有辦法訪問這些對象而沒有明確說明他們的名字?例如工作區(1)?

回答

8

可以使用who得到所有的變量作爲字符串列表:

myvars = who; 

然後如果你想要做的變量內容的東西(who只給出變量名),你可以這樣做像這樣:

for i=1:length(myvars) 
    myfunction(eval(myvars(i))) 
end 
10

我@西門的答案達成一致,但是如果你有興趣的是從單個.MAT文件加載的變量,你可能會更好使用負荷的結構,分配形式:

S = load('myfile.mat') 

現在不是在你的工作區使用 'X', 'Y', 'Z',你有S.xS.yS.z

然後可以遍歷該結構的所有領域:

for f = fieldnames(S)' 
    disp(['Field named: ' f{1} ]); 
    disp('Has value ') 
    disp(S.(f{1})); 
end