2010-02-20 7 views
13

क्या ऑक्टेव में केवल मैट्रिक्स उत्पाद के विकर्ण की गणना और स्टोर करने का कोई तरीका है?ऑक्टेव में केवल मैट्रिक्स उत्पाद के विकर्ण की गणना कैसे करें?

मूल रूप से कर रही है जैसे: vector = diag(A*B);

मैं विकर्ण पर को छोड़कर A*B के मूल्यों में से किसी के बारे में परवाह नहीं है। मैट्रिक्स आकार लगभग 80k x 12 और 12 x 80k हैं, इसलिए यदि मुझे गति/अतिरिक्त मेमोरी की परवाह नहीं है तो यह बस रैम में फिट नहीं होगा।

अजीब, चूंकि ऑक्टेव विशाल डेटा सेट और विकर्णों के लिए एक पैकेज है, इसलिए यह संभव होना चाहिए।

उत्तर

17

विकर्ण में पहला तत्व बी के पहले स्तंभ के साथ ए की पहली पंक्ति का स्केलर उत्पाद है। विकर्ण में दूसरा तत्व बी के दूसरे स्तंभ के साथ ए की दूसरी पंक्ति का स्केलर उत्पाद है।

दूसरे शब्दों में:

vector = sum(A.*B',2); 
+1

मुझे लगता है कि आपने संपादन के लिए 5 मिनट की छूट अवधि का अच्छा उपयोग किया है। ;) – gnovice

+0

मुझे खुशी है कि कृपा अवधि मौजूद है। एक बार जब मैं सबमिट करता हूं तो मुझे केवल मेरी प्रमुख गलतियों को देखना प्रतीत होता है। :) – Jonas

9

इस तरह आप (शायद सप्टक वाक्य रचना के समान) MATLAB में यह कर सकता है:

vector = sum(A.*B',2); 

यह केवल गणना करेगा ऑपरेशन के परिणामी विकर्ण A*B कॉलम वेक्टर vector के रूप में।

0

वास्तव में मुझे लगता है कि यह पहली बार स्तंभ बी के के साथ एक की पहली पंक्ति के डॉट उत्पाद है ... दूसरा विकर्ण तत्व दूसरी पंक्ति और दूसरे स्तंभ के डॉट उत्पाद आदि

है ...
+0

हाँ। मैं गलत टाइप किया। – Jonas

संबंधित मुद्दे