2011-08-26 12 views
5

में सभी ऑब्जेक्ट्स के माध्यम से पुनरावृत्ति कैसे करें मेरे पास एक matlab वर्कस्पेस है जहां लोड चर का उपयोग कर सभी चर को .mat फ़ाइल से लोड किया जाता है। अब, मैं इन सभी वस्तुओं के माध्यम से पुन: प्रयास करना चाहता हूं और उन पर संचालन करना चाहता हूं।matlab वर्कस्पेस

क्या उनके नाम स्पष्ट रूप से बताए बिना वस्तुओं तक पहुंचने के लिए कोई रास्ता है? उदाहरण के लिए वर्कस्पेस (1)?

उत्तर

8

आप who का उपयोग कर स्ट्रिंग के रूप में सभी चर की सूची प्राप्त कर सकते हैं: फिर अगर आप चर की सामग्री के साथ कुछ करना चाहता हूँ

myvars = who; 

(who केवल चर नाम देता है), तो आप कुछ कर सकते हैं इस तरह:

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

मैं साथ @ साइमन का जवाब इस बात से सहमत है, तो तुम सब में रुचि रखते हैं चर है कि एक ही .mat फ़ाइल से लोड कर रहे हैं, तो आप लोड की struct-असाइनमेंट प्रपत्र का उपयोग कर बंद बेहतर हो सकता है:

S = load('myfile.mat') 

अब बजाय अपने कार्यक्षेत्र में 'एक्स', 'y', 'z' होने का, तो आप S.x, S.y और S.z है।

तो आप के साथ struct के सभी क्षेत्रों पुनरावृति कर सकते हैं:

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