2013-02-08 19 views
6

मैं Matlab 2012a का उपयोग कर रहा हूं।एक सरणी में न्यूनतम मान खोजें

मेरे पास के सेल्स की एक सरणी है (1000 कहें)। मुझे इस सरणी के 5 सबसे कम मूल्यों को खोजने की आवश्यकता है और एक्स और वाई

में उन मानों का औसत करने की आवश्यकता है किसी को भी यह पता है कि यह कैसे करना है?

+1

ऐसा करने के लिए एल्गोरिथ्म के बारे में आपका प्रश्न है? आप किस प्रोग्रामिंग भाषा का उपयोग कर रहे हैं? – Alex

+0

मैंने संपादित किया, मेरा बुरा। मैं Matlab 2012a – Vissenbot

+0

का उपयोग कर रहा हूं आपके डेटा की संरचना क्या है? आप "सरणी" और "कोशिकाओं" और "एक्स" और "वाई" का जिक्र करते हैं। मैंने यह मानते हुए एक जवाब दिया है कि आपके पास एक्स और वाई है - लेकिन आपके प्रश्न को दोबारा पढ़ना मुझे वास्तव में यकीन नहीं है कि आपके पास क्या है ... क्या आप स्पष्टीकरण दे सकते हैं? – Floris

उत्तर

13

मान लें आप सरणियों एक्स और वाई है, और आप पांच सबसे कम Y मूल्यों को खोजने के लिए चाहते हैं:

[m mi] = sort(Y); 
lowest5index = mi(1:5); 
lowest5Y = Y(lowest5index); 
lowest5X = X(lowest5index); 

meanYlowest5 = mean(lowest5Y); 
meanXlowest5 = mean(lowest5X); 

स्पष्टीकरण:

दो उत्पादन मानकों के साथ sort आदेश देता है दोनों क्रमबद्ध सरणी (में m) और मूल सरणी में सूचकांक (mi)। पहले पांच सूचकांक mi(1:5) पांच सबसे कम मूल्यों के अनुरूप हैं। X और Y दोनों के लिए इन मानों के mean को लेना हम जो चाहते हैं वह करेंगे। अगर मुझे आपकी समस्या का विवरण नहीं समझा, तो कृपया अपने प्रश्न को स्पष्ट करें और मैं इसमें एक और शॉट ले जाऊंगा।

+0

आह, मुझे इसे हराया ^^ – Groot

+0

हाँ, क्षमा करें मैं पर्याप्त स्पष्ट नहीं था। मुझे वाई में 5 सबसे कम मूल्यों को खोजने की आवश्यकता है, और फिर इन 5 अंकों के एक्स और वाई दोनों का औसत बनाएं! आपकी तकनीक काफी दिलचस्प थी हालांकि! अगर यह काम में आता है तो मैं उस चाल को दिमाग में रखूंगा! – Vissenbot

+0

मेरी तकनीक ठीक वही करता है जो आप पूछ रहे हैं ... मैंने इसे स्पष्ट करने के लिए कोड संपादित किया है। यदि यह अभी भी आपके लिए काम नहीं करता है, तो आपको अपनी डेटा संरचना को और स्पष्ट रूप से समझा जाना चाहिए। – Floris

1

अपने सरणी के sort को अपने सरणी के निम्नतम से उच्चतम तक और फिर 5 पहले मानों का चयन करने के बारे में कैसे करें। वे आपके सरणी के 5 मिनट मूल्य होंगे। फिर उन 5 मानों का मतलब करें।

यह ऐसा करने का सबसे मेमोरी प्रभावी तरीका नहीं हो सकता है लेकिन केवल 1000 मूल्यों के लिए यह काम पूरा हो जाएगा!

उम्मीद है कि यह मदद करता है!

1

उपयोग minmaxselection MATLAB MEX पैकेज है, जो विशेष रूप से इस समस्या के लिए अनुकूलित किया गया है:

a = [2,3,4,7,56,4,21, 64, -2]; 
mink(a, 2) 

<< ans = 
<< -2 2  

mink(a,4) 

<< ans = 
<< -2  2  3  4 
संबंधित मुद्दे