मेरा प्रश्न: मैंने देखा है कि SO पर Matlab प्रश्नों के बहुत सारे अच्छे उत्तर अक्सर फ़ंक्शन का उपयोग करते हैं bsxfun
। क्यों?
प्रेरणा: के लिए Matlab प्रलेखन में bsxfun
, निम्नलिखित उदाहरण प्रदान किया गया है:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
बेशक हम एक ही ऑपरेशन का उपयोग कर सकते हैं:
A = A - (ones(size(A, 1), 1) * mean(A));
और वास्तव में एक साधारण गति परीक्षण दर्शाता है कि दूसरी विधि लगभग 20% तेज है। तो पहली विधि का उपयोग क्यों करें? मैं अनुमान लगा रहा हूं कि कुछ परिस्थितियां हैं जहां bsxfun
"मैनुअल" दृष्टिकोण की तुलना में बहुत तेजी से उपयोग किया जाएगा। मैं वास्तव में इस तरह की स्थिति का एक उदाहरण और एक स्पष्टीकरण देखने में रुचि रखता हूं कि यह क्यों तेज है।
इसके अलावा, इस प्रश्न के लिए एक अंतिम तत्व, फिर से मैटलैब प्रलेखन के लिए bsxfun
: "C = bsxfun (मज़ा, ए, बी) सिंगलटन द्वारा फ़ंक्शन ए और बी के सरणियों के लिए फ़ंक्शन हैंडल मज़ा द्वारा निर्दिष्ट तत्व-बाय-तत्व बाइनरी ऑपरेशन लागू होता है। विस्तार सक्षम है। " वाक्यांश "सिंगलटन विस्तार के साथ सक्षम" का क्या अर्थ है?
timeit
आपको लिंक के फंक्शन / एंजेनर / डैन प्रदान करने के बारे में पढ़ा है ।
tic...toc
लाइनों के चारों ओर डालते हैं, तो कोड की गति मेमोरी में फ़ंक्शन पढ़ने के लिए निर्भर करेगी।