سؤال

أنا أبحث عن جيدة (في أفضل حالة الحفاظ عليها بنشاط) مكتبة ماتريكس C ++. وبالتالي يجب أن يغيب عنها، لأنني أريد استخدام مجمع من العقلانية كأنه نوع رقمي. المصفوفات ما الذي أتعامل معه هو متناثر ووحدي.

هل يمكنك تقديم طلب من المكتبات وأوضح أيضا شرحا صغيرا لماذا تستخدمها، لأنني أعرف كيفية العثور عليها، لكنني لا أستطيع أن أقرر حقا ما هو مناسب لي لأنني أفتقد التجربة معهم.

تعديل:

العمليات الرئيسية التي أتعامل معها هي مصفوفة الضرب, الضرب العددي مع ناقل و kronecker المنتج. وبعد حجم المصفوفات هو الأسي وأريد أن أكون قادرا على التعامل مع المصفوفات حتى مقالات تصل إلى 1024 × 1024.

هل كانت مفيدة؟

المحلول

كثير من الناس يقومون بخطوات مصفوفة "خطيرة"، تعتمد على بليضا, ، مضيفا lapack. / أطلس (المصفوفات العادية) أو umfpack. (مصفوفات متفرقة) لمزيد من الرياضيات المتقدمة. السبب هو أن هذا الرمز يتم اختباره جيدا ومستقر وموثوق به سريعا. علاوة على ذلك، يمكنك شراءها مباشرة من البائع (على سبيل المثال إنتل mkl) ضبطها نحو الهندسة المعمارية الخاصة بك، ولكن أيضا الحصول عليها مجانا. Ublas. ذكر في إجابة مانويل ربما هو تطبيق C ++ BLAS القياسي. وإذا كنت بحاجة إلى شيء مثل Lapack لاحقا، فهناك ارتباطات لنفعل ذلك.

ومع ذلك، لا توجد أي من هذه المكتبات القياسية (blas / lapack / atlas أو bindings + ublas + lapack / atlas) علها علوم المربع الخاص بك لكونها القالب وسهلة الاستخدام (ما لم يكن UBLAs كل ما تحتاجه من أي وقت مضى). في الواقع، يجب أن أعترف، أنني أميل إلى استدعاء واجهة C / FORTRAN مباشرة عندما أستخدم تطبيق Blas / Lapack، لأنني غالبا ما لا أرى ميزة إضافية كبيرة في تركيبة Ublas + Bindings.

إذا كنت بحاجة إلى مكتبة مصفوفة جي ++ بشكل عام للاستخدام، فإنني أميل إلى الاستخدام إيقاع (اعتدت على استخدام Newmat. في الماضي). مزايا:

  • بسرعة كبيرة على بنية إنتل، ربما أسرع مصفوفات أصغر
  • واجهة لطيفة
  • تقريبا كل ما تتوقعه من مكتبة مصفوفة
  • يمكنك بسهولة إضافة أنواع جديدة

العيوب (IMO):

  • معالج واحد [تعديل: ثابت جزئيا في eigen 3.0.]
  • أبطأ المصفوفات الكبيرة وبعض الرياضيات المتقدمة من الأطلس أو Intel MKL (مثل التحلل لو) [تعديل: كما تحسنت في eigen 3.0
  • الدعم التجريبي فقط للمصفوفاتتعديل: تحسين في الإصدار التالي 3.1].

تعديل: يسمح Eigen 3.1 القادم ببعض الوظائف باستخدام Intel MKL (أو أي تطبيق Blas / Lapack آخر).

نصائح أخرى

تعزيز Ublas., ، لأنه اجتاز مرشح دفعة.

هناك عدد قليل من القوالب Libs التي تدعم المصفوفات المتناثرة، لذلك من الصعب حقا الخروج من الأساس المنطقي أفضل إذا لم تكن أكثر تحديدا بشأن احتياجاتك.

يجب أن تحاول أيضا ملاك و حاسم مكتبة مصفوفة C ++. آخر واحد موثقة بشكل جيد للغاية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top