2012-10-07 19 views
5

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

सबसे पहले मैं एक फ़ंक्शन का उपयोग करता हूं जो उदाहरण के लिए, 50 2x2 matrices बनाता है। और जब मुझे इस अन्य फ़ंक्शन का उपयोग करना है, तो मुझे एक-एक करके कॉल करना होगा, उदाहरण के लिए: rich(A(:,:,1), A(:,:,2), (...), A(:,:,50))

क्या इन मैट्रिक्स को एक-एक करके टाइप करने की आवश्यकता के बिना कॉल करने का सबसे आसान तरीका है? कुछ rich(A(:,:,1:50) or rich(A(:,:,1):A(:,:,50)) की तरह (मैं जानता हूँ कि यह संभव नहीं है, लेकिन मैं कुछ इस तरह के लिए देख रहा था ...)

उत्तर

5

इस प्रयास करें:

%# random matrix of size 2x2x50 
A = rand(2,2,50); 

%# split by slices along the third dimension: AA = {A(:,:,1); ...; A(:,:,50)} 
AA = mat2cell(A, 2, 2, ones(1,size(A,3))); 
AA = AA(:); 

%# call function, expanding into a comma-separated list 
rich(AA{:}) 
+0

यहाँ प्रासंगिक डॉक्स के लिए एक लिंक है: [अल्पविराम से अलग किया सूचियाँ] (http://www.mathworks.com/help/matlab/matlab_prog/comma-separated-lists.html) – Amro