2011-07-13 20 views
5

मैं युगल की एक सरणी से वेक्टर बनाने की कोशिश कर रहा हूं। मैं फिर इस वेक्टर को एक मैट्रिक्स से गुणा करना चाहता हूं। क्या कोई जानता है कि मैं इसे कैसे प्राप्त कर सकता हूं? नीचे एक बहुत ही सरल उदाहरण है कि मैं काम करना चाहता हूं।मैं जैमा का उपयोग कर वेक्टर द्वारा मैट्रिक्स को कैसे गुणा कर सकता हूं?

// Create the matrix (using JAMA) 
Matrix a = new Matrix([[1,2,3],[1,2,3],[1,2,3]]); 

// Create a vector out of an array 
... 

// Multiply the vector by the matrix 
... 

उत्तर

12

यहाँ वांछित आपरेशन के सरल उदाहरण है:

double[][] array = {{1.,2.,3},{1.,2.,3.},{1.,2.,3.}}; 
Matrix a = new Matrix(array); 
Matrix b = new Matrix(new double[]{1., 1., 1.}, 1);  
Matrix c = b.times(a); 
System.out.println(Arrays.deepToString(c.getArray())); 

परिणाम:

[[3.0, 6.0, 9.0]] 

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

enter image description here

+0

यह पूरी तरह से काम करता प्रतीत होता है - आपकी मदद के लिए धन्यवाद! –

+1

@ जोन: ध्यान दें कि 'मैट्रिक्स' क्लास एपीआई (http://math.nist.gov/javanumerics/jama/doc/Jama/Matrix.html) अधिक विकल्प पाने के लिए आपका मित्र है :) –

+0

हाय! बेवकूफ़ बनने के लिए खेद है, लेकिन क्या आप हमें एक उदाहरण दे सकते हैं जब [1 1 1] कुछ [2 5 3] की तरह होता है? – Joehot200

1

तुम क्यों द मेट्रिक्स के arrayTimes विधि का उपयोग नहीं कर सकते से? एक वेक्टर सिर्फ एक एक्स एक्स एन मैट्रिक्स है (मुझे लगता है) तो क्या आप केवल 1 आयाम के साथ दूसरे मैट्रिक्स को प्रारंभ नहीं कर सकते हैं और arrayTimes का उपयोग कर सकते हैं?

Matrix a = new Matrix([[1,2,3],[1,2,3],[1,2,3]]); 
Matrix b = new Matrix([[1,2,3]]); // this is a vector 
Matrix c = a.arrayTimes(b.transpose); // transpose so that the inner dimensions agree 

यह मैं क्या सोचता doc पढ़ने से काम होता है।

+1

मैं सिर्फ अपने विचार बाहर करने की कोशिश की, फिर भी ऐसा लगता है कि मैट्रिक्स आयाम सहमत हैं (यानी पंक्तियों और कोलों की समान संख्या)। हालांकि, वेक्टर के पास केवल एक पंक्ति है क्योंकि यह अपवाद फेंकता है। –

+0

आह मेरी गलती! गुणा बढ़ाना matrices थोड़ा मुश्किल है। ऐसा नहीं है कि दोनों आयामों को सहमत होना है (यह उबाऊ होगा) यह केवल इतना है कि आंतरिक आयामों को सहमत होना चाहिए। आप अभी भी ऊपर और बी गुणा कर सकते हैं, लेकिन आपको बी को स्थानांतरित करने की आवश्यकता है। मैंने जवाब संपादित कर लिया है। – Ziggy

+1

यह काम नहीं करता है क्योंकि कन्स्ट्रक्टर के तर्क जावा सिंटेक्स नहीं हैं ... – kiltek

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