如何在boost :: numeric :: ublas矩陣上應用1級blas? 例如,我想計算所有條目的最大條目或總和。 在矩陣中使用norm_1或norm_inf不會產生編譯器錯誤,但返回(對我來說)任意結果。 我使用升壓1.42在矩陣中應用Boost UBLAS blas-1
2
A
回答
3
norm_inf
上的矩陣計算由在下層向量空間中的無窮範數的矩陣範數induced。這恰好是矩陣的最大絕對行總和。
如果你看一下漢納斯的例子,矩陣的最後一行(I = 99,J = 0 ... 99)包含:
9900, 9901, 9902, ... , 9999
如果你總結這些條目,你得到994950
,這正是norm_inf
產生的結果。
1
一個最小的例子是這樣的:
#include<iostream>
#include<boost/numeric/ublas/matrix.hpp>
using namespace boost::numeric::ublas;
int main(){
int l = 100;
matrix<double> m(l,l);
for (int i = 0; i < l; ++i) {
for (int j = 0; j < l; ++j) {
m(i,j)=i*l+j;
}
}
std::cout << norm_inf(m)<<std::endl;
return 0;
}
它應該給99,但單產994950.
這是一個班輪,至少解決了給定的任務:
float infnorm = accumulate(m.data().begin(),m.data().end(),0,std::max<double>);
+0
我不認爲單線實際工作;提問者想要最大*絕對*條目。 –
相關問題
- 1. Boost uBLAS矩陣參考
- 2. BOOST uBLAS矩陣產品極其緩慢
- 3. Boost uBLAS矩陣/載體產品
- 4. UMFPACK和BOOST的uBLAS庫稀疏矩陣
- 5. 用給定的向量定義boost :: ublas矩陣
- 6. 使用迭代器遍歷boost :: ublas矩陣
- 7. BOOST block_prod矩陣乘法
- 8. uBLAS慢矩陣 - SparseVector乘法
- 9. 複製boost :: numeric :: ublas ::矩陣行向量的向量
- 10. boost :: ublas如何獲得int矩陣的行列式?
- 11. boost :: uBLAS如何處理矩陣的嵌套產品?
- 12. 使用C++ Boost的矩陣分割
- 13. 如何在C++ boost ublas中將文件流式傳輸到矩陣中?
- 14. 如何使用uBLAS轉置矩陣?
- 15. Boost :: uBLAS vs Eigen
- 16. 在輔助類中訪問boost提升矩陣的子片段
- 17. boost壓縮矩陣基礎
- 18. 用swig包裝boost :: ublas
- 19. ublas矩陣表達教程/示例
- 20. 的uBLAS矩陣清晰的記憶
- 21. C++矩陣變換。提升uBLAS和double *?
- 22. GDB無法顯示提升uBLAS矩陣?
- 23. 問題與提升ublas矩陣產品
- 24. 如何創建const boost矩陣?
- 25. 元素明智的操作與boost C++ ublas矩陣和向量類型
- 26. 如何在ublas矩陣中設置基礎索引?
- 27. 目標C類中的Boost矩陣不能編譯
- 28. BLAS1對載體的操作
- 29. C++將輸入轉換爲類時的Boost矩陣錯誤
- 30. 從boost中刪除元素:: numeric :: ublas :: vector
很高興知道。這是記錄在哪裏?我沒有找到它。 你知道如何計算所有條目的最大值嗎?使用你的帖子可以完成一個重塑,但這似乎有點奇怪。 –
@Andreas:假設矩陣在內存中是連續佈局的(很可能,但我不知道uBLAS是否能保證這一點 - 其他人將不得不考慮這一點),我們可能會構建一個矢量對象由相同的存儲支持,並調用'norm_inf'。醜陋,但我想它會奏效。 –
不,我找不到任何實際的文檔,但它是有道理的,並匹配行爲。實際上,粗略的搜索根本沒有發現很多關於uBLAS的文檔。 –