एक मैट्रिक्स A
देखते हुए, मैं अन्य n
वैक्टर Bi
(अर्थात i=1...n
) के साथ गुणा करने की आवश्यकता। A
का आकार 5000x5000
जैसा हो सकता है और इस प्रकार Bi
5000x1
जैसा हो सकता है।मैटलैब दोहराया आव्यूह गुणन - पाश बनाम निर्मित प्रदर्शन
अगर मैं निम्नलिखित तरीके से उत्पाद का मूल्यांकन: (परिमाण)
for i=1:n
product=A*Bi;
% do something with product
end
परिणाम तरीका है जैसे उत्पादों कंप्यूटिंग की तुलना में धीमी:
%assume that S is a matrix that contains the vectors Bi as columns, i.e. S(:,i)=Bi, then:
results=A*S; %stores all the products in matrix form
% do something with results
समस्या
कि संख्या है n
वेक्टर Bi
स्मृति में संग्रहीत करने के लिए बहुत बड़ा हो सकता है, उदाहरण के लिए n=300000
, इसलिए मुझे एक लूप दृष्टिकोण का उपयोग करने की आवश्यकता है जहां हर बार जब मैं उत्पाद का मूल्यांकन करता हूं, इसका उपयोग करता हूं और फिर वेक्टर Bi
को त्याग देता हूं।
प्रत्यक्ष गुणा की तुलना में ऐसा दृष्टिकोण इतना धीमा क्यों है, और इस पर काबू पाने के तरीके हैं?
इस शीर्ष पर अच्छी तरह से पढ़ें आईसी है [मैट्रिक्स मैट्रिक्स गुणा में इतना तेज़ क्यों है?] (http://stackoverflow.com/questions/6058139/why-is-matlab-so-fast-in-matrix-multiplication) – Adriaan
गंभीरता से, गणित को उचित करना चाहिए इस पर बेंचमार्क और इसे कहीं बड़े नीयन हरे अक्षरों में प्रिंट करें। इस सवाल से कई बार पूछा गया है और अभी भी पूछा जा रहा है। जाहिर है कि वेब पर उत्तर कुछ लोगों के लिए पर्याप्त नहीं हैं, तो गणित क्यों नहीं करता है (स्रोत में बेहतर अंतर्दृष्टि के साथ) ऐसा करने का प्रयास करें? @xarz पूछने के लिए कोई पन नहीं। यदि वेब पर उत्तर संतुष्ट नहीं होते हैं, तो जाहिर है कि सवाल का कोई पर्याप्त जवाब नहीं है। – patrik
@patrik शायद आप सही हैं, लेकिन मैंने स्टैक ओवरफ्लो पर देखा और मुझे इस सटीक समस्या से निपटने वाला कोई विषय नहीं मिला। वैसे, यदि आप यहां कुछ संदर्भों को लिंक कर सकते हैं जो इस सटीक समस्या से निपटते हैं तो वे भविष्य के पाठकों के लिए उपयोगी हो सकते हैं। धन्यवाद। – xanz