2016-12-02 8 views
5

बिना एक गुमनाम समारोह मैं इस तरह एक गुमनाम समारोह संभाल बनाया। यह काम करने के लिए के बाद से मैं की तरहप्लॉट स्पष्ट चर नाम

f(2,3) 

कुछ कॉल कर सकते हैं लगता है और MATLAB मुझे सही परिणाम ans = 13 देता है।

अंतिम चरण में मुझे लगता है कि समारोह साजिश x और y दोनों के लिए चलो कहना -7 से 7 से चाहते हैं। तो मैं

fmesh(f,[-7 7]) 

और सही आंकड़ा पॉप अप करता है। अब तक सब ठीक है.

कुछ कारणों, जिसे मैंने यहां निर्दिष्ट नहीं करते हैं चाहता हूँ के लिए

, अब मैं यह करने के लिए समारोह संभाल संपादित करना चाहते हैं:

f = @(x)sqr(x(1))+sqr(x(2)) 

यह वही क्षेत्र है, लेकिन 2 चर के साथ इस समय होना चाहिए x(1) और x(2)। समारोह अब एक सरणी तर्क के रूप में मैं परीक्षण कॉल

f([2,3]) 

संपादित करना चाहता है और यह अभी भी मुझे सही परिणाम ans = 13 देता है के बाद से।

लेकिन यहां समस्या है: आप उस फ़ंक्शन को कैसे प्लॉट करते हैं जो सरणी को तर्क के रूप में चाहता है? वही जाल कमांड निश्चित रूप से विफल रहता है, क्योंकि [-7,7] में गलत आयाम है। यह [[-7 7] [-7 7]] और [[-7 7];[-7 7]] के लिए जाता है।

मैं उस नए फ़ंक्शन हैंडल से एक कार्यशील साजिश कैसे प्राप्त कर सकता हूं? अग्रिम धन्यवाद!

+1

आप वास्तव में ऐसा नहीं कर सकते हो जाएगा। आप किसी अन्य अज्ञात फ़ंक्शन के अंदर 'f' को लपेट सकते हैं जो दो इनपुट स्वीकार करता है और एक बनाता है: 'g = @ (x, y) f ([x, y])' – Suever

उत्तर

4

आपको fmeshx और y मानों को प्राप्त करने के लिए आपको जितनी उम्मीद हो उतनी सरणी के रूप में नहीं मिल सकती है। आप कर सकते हैं अपने अज्ञात फ़ंक्शन f को किसी अन्य अज्ञात फ़ंक्शन के भीतर लपेटना है जो इनपुट को फिर से व्यवस्थित करता है।

g = @(x,y)f([x, y]); 
fmesh(g, [-7 7]) 

एक अधिक सामान्य समाधान है जो सभी आदानों लेता है और उन्हें एक सरणी में डालता है

g = @(varargin)f([varargin{:}]) 
संबंधित मुद्दे