2
我想使用ublas部分的提升,但我不能乘以矩陣,並由於某種原因將結果分配給其他矩陣。問題與提升ublas矩陣產品
這工作:
#include <boost/numeric/ublas/symmetric.hpp>
#include <boost/numeric/ublas/io.hpp>
using namespace boost::numeric::ublas;
typedef symmetric_matrix<int,lower> symatrix;
int main() {
int N = 10;
symatrix foo(N,N);
for (int i = 0; i < N; i++)
for(int j = 0; j <= i; j++) {
foo(i,j) = i - j + 1;
}
symatrix goo(foo);
//goo = prod(foo,foo);
std::cout << prod(foo,foo)<< std::endl;
}
但是,如果我取消對該行goo = prod(foo,foo);
或嘗試類似:
symatrix goo = prod(foo,foo);
我得到一個運行時錯誤我無法破譯。
Check failed in file /usr/include/boost/numeric/ublas/detail/matrix_assign.hpp at line 761:
detail::expression_type_check (m, cm)
terminate called after throwing an instance of 'boost::numeric::ublas::external_logic'
what(): external logic
Aborted
如何乘以矩陣並賦值結果?
我不完全理解發生了什麼,但我發現了一些事情。如果我將symatrix typedef更改爲double類型symmetric_matrix和int matrix,則您的代碼可以正常工作。所以看起來prod函數確實像你的返回類型。 – 2011-05-02 18:47:06