2010-01-20 11 views
12

मैंने पहले केवल MATLAB 6.5 का उपयोग किया है। मुझे कुछ प्रोग्राम मिल गए हैं जो '@' का उपयोग कर रहे हैं। क्या कोई मुझे बता सकता है कि यह क्या है?MATLAB में @ ऑपरेटर क्या है?

वैसे, MATLAB 6.5 इस ऑपरेटर का समर्थन करता है?

उत्तर

17

@ ऑपरेटर एक फ़ंक्शन हैंडल बनाता है, जो आपको आसानी से एक चर जैसे फ़ंक्शन कॉल को बनाने और पास करने की अनुमति देता है। इसमें कई अच्छी सुविधाएं हैं, जिनमें से कोई भी दुर्भाग्य से आपके लिए उपलब्ध नहीं है। ऐसा इसलिए है क्योंकि आपको संदेह है कि इसे संस्करण 7 तक मैटलैब में पेश नहीं किया गया था, तुरंत आपके रिलीज़ के बाद।

7

यह मैटलैब में Anonymous Functions घोषित करता था।

मुझे लगता है कि शर्तें "Function Handle" हैं।

व्यावहारिक रूप से यह किसी भी एम फ़ाइल में किसी भी स्थान पर फ़ंक्शन घोषित करने के लिए मैटलैब की अक्षमता को शामिल करता है।

आप इसे यहाँ देख सकते हैं: What is your favourite MATLAB/Octave programming trick?

मैं इसे "blockproc" कमांड के साथ छवि प्रसंस्करण में उपयोगी पाया।

+0

दरअसल, इसे समान नामकरण सम्मेलन का उपयोग करके फ़ंक्शन हैंडल (हैंडलर नहीं) कहा जाता है क्योंकि ग्राफिक्स ऑब्जेक्ट्स में 'हैंडल' भी होता है। – MatlabDoug

+0

इसे फिक्स्ड, धन्यवाद। – Royi

1

function_handle (@) संभाल = @functionname संभाल = @ (arglist) anonymous_function

विवरण

संभाल = @functionname रिटर्न पेज में indirectlyexpand सभी कार्यों बुला सिंटेक्स में इस्तेमाल

हैंडल निर्दिष्ट MATLAB® फ़ंक्शन के लिए एक हैंडल।

फ़ंक्शन हैंडल एक MATLAB मान है जो अप्रत्यक्ष रूप से फ़ंक्शन को कॉल करने का माध्यम प्रदान करता है। आप अन्य फ़ंक्शंस (जिसे फ़ंक्शन फ़ंक्शंस कहा जाता है) पर कॉल में फ़ंक्शन हैंडल पास कर सकते हैं। आप बाद में उपयोग के लिए डेटा संरचनाओं में फ़ंक्शन हैंडल भी संग्रहीत कर सकते हैं (उदाहरण के लिए, हैंडल ग्राफिक्स कॉलबैक के रूप में)। फ़ंक्शन हैंडल मानक MATLAB डेटा प्रकारों में से एक है।

जब आप फ़ंक्शन हैंडल बनाते हैं, तो आपके द्वारा निर्दिष्ट फ़ंक्शन MATLAB पथ और हैंडल बनाने वाले कोड के वर्तमान दायरे में होना चाहिए। उदाहरण के लिए, जब तक आप स्थानीय फ़ंक्शन को परिभाषित करने वाली फ़ाइल के भीतर ऐसा करते हैं, तब तक आप स्थानीय फ़ंक्शन में एक हैंडल बना सकते हैं। जब आप फ़ंक्शन हैंडल का मूल्यांकन करते हैं तो यह स्थिति लागू नहीं होती है। उदाहरण के लिए, आप फ़ंक्शन हैंडल का उपयोग करके एक अलग (आउट-ऑफ-स्कोप) फ़ाइल से स्थानीय फ़ंक्शन निष्पादित कर सकते हैं। इसके लिए यह आवश्यक है कि हैंडल स्थानीय फ़ंक्शन (इन-स्कोप) द्वारा बनाया गया था।

संभाल = @ (arglist) अनाम_फंक्शन एक अज्ञात फ़ंक्शन बनाता है और उस फ़ंक्शन पर एक हैंडल देता है। फ़ंक्शन का बॉडी, कोष्ठक के दाईं ओर, एक MATLAB स्टेटमेंट या कमांड है। arglist इनपुट तर्कों की एक अल्पविराम से अलग सूची है। फ़ंक्शन हैंडल के माध्यम से इसे कॉल करके फ़ंक्शन निष्पादित करें, हैंडल करें।

उदाहरण

उदाहरण 1 - एक नाम समारोह निम्न उदाहरण के लिए एक हैंडल निर्माण कूबड़ समारोह के लिए एक समारोह संभाल बनाता है और चर fhandle करने के लिए इसे प्रदान करती है।

fhandle = @humps; उसी तरह से किसी अन्य फ़ंक्शन को हैंडल पास करें, जिस तरह से आप कोई तर्क पारित करेंगे। यह उदाहरण फ़ंक्शन हैंडल को केवल fminbnd में बनाया गया है, जो अंतराल [0.3, 1] पर कम करता है।

एक्स = fminbnd (fhandle, 0.3, 1) एक्स = 0.6370 fminbnd समारोह का मूल्यांकन करता है @humps समारोह संभाल। Fminbnd फ़ाइल का एक छोटा सा हिस्सा नीचे दिखाया गया है। लाइन 1 में, funfcn इनपुट पैरामीटर फ़ंक्शन हैंडल @ हंप प्राप्त करता है जो पास किया गया था। कथन, पंक्ति 113 में, हैंडल का मूल्यांकन करता है।

1 फ़ंक्शन [xf, fval, exitflag, output] = ... fminbnd (funfcn, ax, bx, विकल्प, varargin) । । । 113 एफएक्स = funfcn (एक्स, varargin {:});

+0

मुझे लगता है कि एक अद्यतन लिंक सिर्फ इसकी प्रतिलिपि बनाने से बेहतर होगा। कम से कम आप "सभी का विस्तार करें ...", "सिंटेक्स", आदि को हटा सकते हैं, और इसे पृष्ठ पर व्यवस्थित करने के लिए व्यवस्थित कर सकते हैं – Adiel

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