2012-05-28 8 views
5

मेरे पास एक ऐसा फ़ंक्शन है जो एक छवि को तर्क के रूप में लेता है और परिणामस्वरूप एक लेबल और स्कोर उत्पन्न करता है। मैं कभी-कभी छवियों की एक (सेल) सरणी पर परीक्षण करना चाहता हूं, और मुझे यह करने का सबसे सुविधाजनक तरीका arrayfun का उपयोग करना है। यह मेरे काम के लेबल को प्राप्त करने के लिए ठीक काम करता है, लेकिन मुझे वास्तव में आउटपुट [label score] कोशिकाओं की सूची होना पसंद है।MATLAB के arrayfun पर कॉल में एकाधिक रिटर्न मान कैप्चर कैसे कर सकता हूं?

मैं अपने फ़ंक्शन के चारों ओर एक रैपर लिख सकता हूं जो दोनों मानों को कैप्चर करता है और उन्हें सेल मैट्रिक्स के रूप में लौटाता है, और फिर arrayfun के भीतर उस रैपर को कॉल करता है, लेकिन ऐसा लगता है कि यह एक सामान्य पर्याप्त मुहावरे है कि काम करने का एक तरीका होना चाहिए कई वापसी मूल्यों के साथ अधिक आसानी से। है? (शायद एक मानक सुविधा समारोह पहले से मौजूद है कि यह कर सकते हैं की क्रमबद्ध deal के विपरीत की तरह ...?)

+0

आप prov कर सके क्या कुछ छद्म कोड वास्तव में उस व्यवहार का प्रदर्शन करते हैं जिसकी आप उम्मीद कर रहे हैं? – tmpearce

उत्तर

9

आप का उपयोग करके दो मैट्रिक्स के रूप में अपने उत्पादन प्राप्त कर सकते हैं में निर्मित वाक्य रचना:

[A, B, ...] = arrayfun(fun, S, ...); 

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

function [y,z]=foo(x) 
    y= x*x; 
    z = x + 10; 
end 

और फिर समारोह चलाएँ:

[A,B] = arrayfun(@foo, magic(5)) 
संबंधित मुद्दे