इस तरह एक संकेतक मैट्रिक्स के बारे में बात है, यह बेहतर है अगर आप इसे विरल करना है होना चाहिए। आप लगभग हमेशा मैट्रिक्स को इसके साथ गुणा कर रहे होंगे, इसलिए इसे एक कुशलता से गुणा करें।
n = 4;
V = [3;2;1;4];
M = sparse(V,1:n,1,n,n);
M =
(3,1) 1
(2,2) 1
(1,3) 1
(4,4) 1
आप एम एक पूर्ण मैट्रिक्स किया जा रहा है, तो यह बनाने पर जोर देते हैं यदि ऐसा है तो पूर्ण के उपयोग के द्वारा, इस तथ्य के बाद सरल है।
full(M)
ans =
0 0 1 0
0 1 0 0
1 0 0 0
0 0 0 1
स्पैर मैट्रिस का उपयोग कैसे करें सीखें। आप ऐसा करने से काफी लाभ प्राप्त करेंगे। माना जाता है कि, 4x4 मैट्रिक्स के लिए, स्पैस ज्यादा लाभ नहीं उठाएगा। लेकिन उदाहरण के मामले कभी आपकी असली समस्या नहीं हैं। मान लीजिए कि एन वास्तव में 2000 था?
n = 2000;
V = randperm(n);
M = sparse(V,1:n,1,n,n);
FM = full(M);
whos FM M
Name Size Bytes Class Attributes
FM 2000x2000 32000000 double
M 2000x2000 48008 double sparse
स्पैर मैट्रिस केवल स्मृति की शर्तों के मामले में ही प्राप्त नहीं होता है। एक मैट्रिक्स गुणा करने के लिए आवश्यक समय की तुलना करें।
A = magic(2000);
tic,B = A*M;toc
Elapsed time is 0.012803 seconds.
tic,B = A*FM;toc
Elapsed time is 0.560671 seconds.
स्रोत
2011-05-27 10:16:52
क्या आप कृपया अपने कोड की तीसरी पंक्ति समझा सकते हैं? – Tarun