2012-10-23 37 views
9

Eigen::Matrix<double,Dynamic,Dynamic> को Eigen::SparseMatrix<double> में परिवर्तित करने के लिए कैसे परिवर्तित करें? मैं घने मैट्रिक्सEigen घने मैट्रिक्स को एक

+0

मुझे इस समझते हैं। आप एक घने मैट्रिक्स को बिना किसी जांच के स्पैर मैट्रिक्स में परिवर्तित करना चाहते हैं, कौन सी प्रविष्टियां शून्य हैं और उन्हें छोड़ दिया जाना चाहिए, और आप कौन सी प्रविष्टियां रखना चाहते हैं? आपको कैसे लगता है कि यह काम कर सकता है? आपको निश्चित रूप से उस प्रश्न पर काम करना चाहिए - यह बहुत अस्पष्ट है। – angainor

+1

मैन्युअल रूप से तत्वों की जांच किए बिना। मैं ऐसा करने के लिए एक विधि या एक समारोह या पुस्तकालय की तलाश में हूं। लेकिन जो मैंने यहां पढ़ा है, उससे मुझे लगता है कि यह संभव नहीं है – tyranitar

उत्तर

14

आपको लगता है कि के लिए sparseView() विधि का उपयोग कर सकते हैं:

sparse = dense.sparseView();

और यहां तक ​​कि एक सहिष्णुता निर्दिष्ट करें:

sparse = dense.sparseView(epsilon,reference);

1

के माध्यम से फिर से शुरू करने के बजाय एक बेहतर तरीका ढूंढ रहा हूं क्या आप घने मैट्रिक्स के निर्माण को नियंत्रित करते हैं?

यदि आप नहीं करते हैं तो यह देखने के लिए कोई तरीका नहीं है कि यह प्रत्येक मैट्रिक्स तत्व को पढ़ने के बिना यह खाली है या नहीं।

यदि आप स्वयं घने मैट्रिक्स बना रहे हैं तो आप डेटा संरचना बना सकते हैं ताकि आपको इसकी आवश्यकता होने पर स्पैस में परिवर्तित करने में मदद मिल सके। उदाहरण के लिए आप प्रत्येक मैट्रिक्स पंक्ति के साथ उस पंक्ति में गैर-शून्य तत्वों की संख्या के साथ स्टोर कर सकते हैं। फिर आप 0 गैर-शून्य तत्वों के साथ पंक्तियों को छोड़ सकते हैं, और गिनती के रूप में आप कई गैर-शून्य तत्वों को देखने के बाद किसी भी पंक्ति के रूपांतरण को रोक सकते हैं।

आपके द्वारा संग्रहीत अतिरिक्त डेटा आपके द्वारा अपेक्षित स्पैर मैट्रिक्स के प्रकारों पर निर्भर करेगा। एक सामान्य स्पैस मैट्रिक्स पैटर्न स्पैस मैट्रिक्स में तैरते घने submatrices है। जब आप घने मैट्रिक्स बनाते हैं तो आप उन घने क्षेत्रों को नट कर सकते हैं। जैसे प्रति पंक्ति तत्व गणना न करें, बल्कि कुछ एक्स, वाई ऑफसेट पर गैर-शून्य आयताकार क्षेत्रों की एक सूची रखें।