Possible combinations of numbers with variables sizes in matlab -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 3 जवाब
Iam matlab में एक शुरुआत मेरे पास संख्याओं की एक सरणी है 5 (4,2,1,4,3) कहें, जो चर 1 का मान 0 से 1 तक ले जा सकते हैं, चर 2 वैल्यू ले सकता है वैल्यू 1,2 वैरिएबल 3 0 और 1 ले सकता है, वैरिएबल 4 0 से ले सकता है 4 से, वैरिएबल 5 में 0 से 0 टी 0 ले सकते हैं।
मैंने "कम्फेंन्टेंस" का प्रयोग करके मैटलब में किया, लेकिन यह एक विशिष्ट है और मेरे मामले की तरह नहीं है, जहां प्रत्येक चर की संख्या निर्धारित संख्याओं का निर्धारण हो रहा है। मुझे सभी संयोजनों की आवश्यकता है मैं = I1 के लिए लूप
का उपयोग करने की कोशिश की: = i1: -1: 0 for b = i2: -1: 0 के लिए c = i3: -1: 0 d = i4: -1: 0 के लिए ई = i5: -1: 0 कॉम (जे, 1) = ए; कॉम (जे, 2) बी =; कॉम (जे, 3) = सी; कॉम (जे, 4) डी =; कॉम (जे, 5) = ई; j = j + 1; एंड एंड एंड एंड एंड
मैं लूप के लिए इन सभी का उपयोग नहीं करना चाहता। अगर मेरे सरणी का आकार 100 संख्या तक बढ़ जाता है, तो यह लूप के लिए 100 लिखने के लिए बहुत बड़ा काम है। क्या किसी ने मुझे एक कोड के साथ सुझाव दिया है?
मैं निम्न प्रकार से अपनी समस्या को लगातार हल करने में कामयाब रहा हूँ: < / P>
ए = [0 1 1 2 0 1 0 4 0 3]; % // & lt; = यह वह उदाहरण है जिसे आपने दिया था। आउट = रिकर्सिव प्रारुपमेंट्स (ए, []);
फ़ंक्शन recursivePermutations
है:
फ़ंक्शन आउट = रिकर्सिव पैरामीटर (सीमाएं, पिछले कॉम्बोस) यदि आकार (सीमाएं, 1) = = 0 बाहर = पिछले कॉम्बोस; वापसी; और कम बाउंड = बाउंडमैट (अंत, 1); Upp बाउंड = बाउंडमैट (अंत, 2); टीएमपी = (कम बाउंड: अपप बाउंड) '; यदि ~ isempty (previousCombos) tmp = [repmat (पिछले कॉम्बोस, [लंबाई (टीएमपी), 1]), ... फिर से दिखाना (repmat (tmp ', [लंबाई (पिछले कॉम्बोस), 1]), ... लंबाई (पिछलेकॉम्बोस) * लंबाई (tMP), 1)]; अंत = रिकर्सिव प्रारुपमेंट्स (सीमाएंमाट (1: एंड -1, :), टीएमपी); अंत
परिणाम 160 * 5 आकार का एक सदिश है यह आपको इस उदाहरण (2 * 2 * 2 * 5 * 4) में मिलना चाहिए संभावनाओं की संख्या से मेल खाती है।
Comments
Post a Comment