2011-11-04 14 views
5

मैंने in the documentation पढ़ा है कि मैं MATLAB प्रिंट करने वाले बयान प्रिंट करने के लिए echo on; कथन का उपयोग कर सकता हूं। हालांकि, मुझे इस काम को एक समारोह में बनाने में कठिनाई हो रही है।MATLAB "गूंज"। क्या यह संभव है?

उदाहरण के लिए:

function do_something(foo) 

a = 2; 
echo on; 
foo = foo+1; 
disp('This is a test'); 
foo = foo+3; 

end 

अगर मैं कमांड विंडो से do_something(foo) कहते हैं, मैं की तरह कुछ देखने के लिए उम्मीद कर रहा था:

foo = foo+1; 
disp('This is a test'); 
This is a test 
foo = foo+3; 

हालांकि, ऊपर के उदाहरण में, सभी MATLAB प्रिंट है:

this is a test 

जो मैं अपेक्षा नहीं कर रहा था।

अद्यतन

@Phonon नीचे बताते हैं, echo on (खेद है कि मैं याद किया!) लिपियों के लिए ही है। हालांकि, मैं दस्तावेज में पढ़ा है कि मैं इस प्रकार किसी दिए गए कार्य के लिए echo सक्रिय कर सकते हैं:

echo fcnname on 

तो मेरे सवाल का अब है, वहाँ एक समारोह के लिए गूंज सक्रिय करने के लिए एक तरह से इतना ऊपर वाक्य रचना के कुछ बदलाव उपयोग कर रहा है कि मैं यह करता हूं (echo पर कॉल करें) फ़ंक्शन के अंदर? (चर कि इस मामले में समारोह नाम धारण mfilename द्वारा प्रदान की जायेंगी)

अद्यतन 2:

जहां तक ​​मैं समझता हूँ कि यह नहीं संभव वास्तविक समारोह के अंदर एक विशेष कार्य के लिए echo सक्रिय करने के लिए है । अन्य चीजों के अलावा, ऐसा लगता है कि JIT का उपयोग करने से बचने के लिए फ़ंक्शन को "गूंज मोड" में चलाने के लिए MATLAB को पहले से पता होना चाहिए।

+0

मैंने अपना जवाब अपडेट किया। – Phonon

उत्तर

6

मैटलैब प्रलेखन के अनुसार, अर्थात help echo,

ECHO ON अंदर स्क्रिप्ट-फ़ाइलें आदेशों की झलक पर बदल जाता है।

यह कार्यों के अंदर काम नहीं करेगा। यह कार्यों के लिए काम करते हैं, कि एक ही मदद फ़ाइल के अनुसार बनाने के लिए,

ECHO ON ALL किसी भी समारोह-फ़ाइलों को स्मृति में हैं अंदर आदेशों की झलक चालू हो जाती है (जैसे कि, कार्यों INMEM द्वारा दिया)।

ECHO OFF ALL उन्हें बंद कर देता है।

अद्यतन:

आदेश में जो कार्य करते हैं आप अभी हैं, लगता है, सबसे अच्छा तरीका है इसे करने में मुझे के देखने के dbstack फोन करके है।हो जाता है कुछ हद तक इस प्रकार है:

[S,I] = dbstack; 
funcName = S.name; 
+0

धन्यवाद फोनन। क्या आप जानते हैं कि मैं सामान्य विवरण (गैर-funcion विशिष्ट कथन) का उपयोग कर फ़ंक्शन के अंदर "गूंज" कैसे सक्रिय कर सकता हूं, उदा। शायद 'mfilename' का उपयोग कर? –

+0

मुझे यकीन नहीं है कि मैं आपका प्रश्न समझता हूं। 'सभी पर गूंज' सबकुछ के लिए काम करेगा, यह किसी दिए गए फ़ंक्शन के लिए विशिष्ट नहीं है। यदि आप केवल एक निश्चित फ़ंक्शन के लिए काम करना चाहते हैं, लेकिन दूसरों को नहीं, तो आपको अपने फ़ंक्शन से कुछ भी कॉल करने से पहले इसे बंद करना होगा। – Phonon

+0

धन्यवाद @ फोनोन। मैंने मूल प्रश्न को एक अद्यतन खंड के साथ अद्यतन किया है जो बताता है कि मैं क्या करने की कोशिश कर रहा हूं। –

1
echo fcnname on 

echo('fcnname','on'); 

समारोह कॉल वाक्य रचना का उपयोग के रूप में ही है, आप के बजाय एक चर पारित कर सकते हैं:

echo(found_found, 'on'); 
0

मुझे नहीं पता एक समारोह के अंदर काम पर गूंज लगता है। तुम हमेशा के लिए निम्न विधि का उपयोग कर, हालांकि समारोह की गूंज के बाहर चालू कर सकते हैं:

foo = 1; 
echo do_something on; 
do_something(foo); 
echo do_something off; 

कि उपयोग करने के लिए न केवल कारण है अगर तुम और प्रदर्शित करने के लिए अपने कार्य का सिर्फ एक हिस्सा चाहते हैं नहीं सभी लाइनों। आप लाइन और अपने समारोह के एक विशिष्ट भाग का परिणाम है, एक कच्चे रास्ते देखकर पर जोर देते हैं, तो लाइनों की एक सीमित संख्या के लिए ऐसा करने का होगा:

s = {'foo = 1;' 
    'foo = foo+1;' 
    'disp(''This is a test'');' 
    'foo = foo+3;' 
    'foo' 
    }; 
for i = 1:numel(s) 
    disp(s{i}); eval(s{i}); 
end 

विल प्रदर्शन:

foo = 1; 
foo = foo+1; 
disp('This is a test'); 
This is a test 
foo = foo+3; 
foo 

foo = 

    5  

मुझे यह भी जोड़ना होगा कि मैं शायद इस तरह की विधि डीबगिंग के लिए उपयोग नहीं करूंगा। फ़ंक्शन के अंदर क्या हो रहा है यह जानने के बेहतर तरीके हैं।

संबंधित मुद्दे