2011-06-08 28 views
5

Birçok ortalamayı hesaplamak zorunda olduğum bir simülasyon yapıyorum ve boost :: akümülatörlerini kullanmanın iyi bir fikir olacağını düşündüm. Sorun, ortalamak istediğim niceliklerden birinin diyagonalinin önceden bilindiği simetrik bir matris olmasıdır. SO sadece < j için Q [i] [j] için ortalamaları hesaplamam gerekiyor.C++ için simetrik dizi benzeri veri yapısı

İlk başta benim akümülatörlerin tutmak için

using namespace boost::accumulators; 
using namespace boost::numeric::ublas; 
typedef accumulator_set<double, stats<tag::mean> > accumulator; 

symmetric_matrix<accumulator, lower> foo; // a symmetric matrix of accumulators 

kullanabilirsiniz izlenimini aldım. Ama sonra bana, bu simetrik_matrix yapısının, sadece sayısal değerleri (tanımlanmış aritmetik işlemleri var) tutmak veya bu şekilde bir şekilde bu tür veriler için optimize edilmek için yeterli olabileceği ortaya çıktı. Bu doğru mu? artışından symmetric_matrix yeterli değilse

, diyagonal olmayan simetrik bir matris alt üçgen sahip bir veri yapısı gerekir ve akümülatörlerin tutmak için uygun olması gerekmektedir ve sözdizimi gibi güzel bir matris sahiptir. Bu, bazı kütüphanelerden kolayca erişilebilir mi? Değilse, bu tür yapı için kolay bir uygulama var mıdır?

+2

Destek matrislerinde, öğe türünün sayısal olmasını gerektiren hiçbir şey yoktur. Tabii ki matris aritmetik operatörleri hariç, ama onları kullanmazsanız, bunlar örneklendirilmez. –

cevap