Armadillo矩陣庫的使用(二)之API介面

2021-08-07 23:33:10 字數 4900 閱讀 3272

一、獲取矩陣的某個元素

通過namemat(i,j)獲取矩陣namemat的第(i,j)個元素。

#include #include using namespace arma;

int main()

三.獲取矩陣的行數、列數及其矩陣的元素個數

通過呼叫函式「.n_rows」、「.n_cols」和「n_elem」獲取矩陣的行數、列數和元素個數。

#include #include using namespace arma;

int main()

五.獲取矩陣的某一列與某幾列

獲取矩陣某一列與某幾列的方法與獲取矩陣某一行與某幾行的方法基本相同,只需呼叫函式「.col(i)」和「.cols(i,j)」即可。因此,這裡不再贅述。

六.獲取原矩陣的子矩陣

通過呼叫函式「.submat(span(p,q),span(r,s))」來獲取原矩陣第p到第q行與第r到第s列所交叉的部分——子矩陣。

#include #include using namespace arma;

int main()

七。重置矩陣為空矩陣

通過呼叫」.reset()」來重置原始矩陣為空矩陣。

#include #include using namespace arma;

int main()

八.重置矩陣大小

通過呼叫」.reshape()」來重置原始矩陣的大小。

#include #include using namespace arma;

int main()

九.用某個值來填充矩陣

通過呼叫」.fill(k)」來用k值填充整個矩陣。

#include #include using namespace arma;

int main()

十.構造全0矩陣與全1矩陣

通過呼叫」.zeros(rows,cols)」和」.ones(rows,cols)」來構造特定的矩陣。

#include #include using namespace arma;

int main()

十一.判斷矩陣是否為空、是否為方陣、是否為向量、元素是否有限

通過呼叫」.:is empty()」、」.is square()」、」.is vec()」「.is finite()」來判斷矩陣是否為為空、是否為方陣、是否為向量、元素是否有限

#include #include using namespace arma;

int main()

a.print("矩陣a為:");

b.print("矩陣b為:");

//2、矩陣a與矩陣b相加

mat aaddb = a + b;

aaddb.print("a + b =");

//3、矩陣a與矩陣b相減

mat aminusb = a - b;

aminusb.print("a - b =");

//4、矩陣a與矩陣b相乘

mat amulb = a * b;

amulb.print("a * b =");

//5、矩陣a與矩陣b點除

mat adivib = a / b;

adivib.print("a / b =");

//6、矩陣a與矩陣b點乘

mat adotmulb = a % b;

adotmulb.print("a % b =");

}

十三.矩陣的逆與偽逆

通過」inv(a)」、「pinv(a)」分別求矩陣a的逆與偽逆矩陣。

#include #include using namespace arma;

int main()

十四.解線性方程組

通過」solve(a,b)」來解線性方程組:ax=b。

#include #include using namespace arma;

int main()

十五.矩陣的svd分解

通過呼叫」svd(u,s,v,x)」函式進行矩陣x的奇異值分解(svd)。x = usv』

#include #include using namespace arma;

int main()

十六.矩陣的cholesky分解

通過呼叫」chol(x)」函式進行矩陣x的cholesky分解。x = r.t()*r

#include #include using namespace arma;

int main()

十七.矩陣的qr分解

通過呼叫」qr(q, r, x)」函式進行矩陣x的qr分解。x = qr

#include #include using namespace arma;

int main()

十八.矩陣的lu分解

通過呼叫」lu(l, u, p, x)」函式進行矩陣x的lu分解。px = lu

#include #include using namespace arma;

int main()

十九 主對角線為1的矩陣

通過呼叫」eye(rows, cols)」函式生成主對角線為1的矩陣。

#include #include using namespace arma;

int main()

二十.把區間[a,b]分成n份

通過呼叫「linspace(start, end, n)」函式把區間[start,end]分成n份。

#include #include using namespace arma;

int main()

二十一.以矩陣為元素構造矩陣

通過呼叫「repmat(a, p, q)」函式構造矩陣,其元素為矩陣a,大小為pxq。

#include #include using namespace arma;

int main()

二十二.生成託普利茲(toeplitz)矩陣

通過呼叫」toeplitz(a, b)」函式生成託普利茲(toeplitz)矩陣。

#include #include using namespace arma;

int main()

二十三.求矩陣行、列的最大值

通過呼叫」max(a, dim)」函式求矩陣a的行(dim=1)、列(dim=0)最大值。

#include #include using namespace arma;

int main()

二十四.求矩陣行、列的最小值

通過呼叫」min(a, dim)」函式求矩陣a的行(dim=1)、列(dim=0)最小值。

#include #include using namespace arma;

int main()

二十五.求矩陣行、列的乘積

通過呼叫」prod(a, dim)」函式求矩陣a的行(dim=1)、列(dim=0)的乘積。

#include #include using namespace arma;

int main()

二十六.求矩陣行、列的和

通過呼叫」sum(a, dim)」函式求矩陣a的行(dim=1)、列(dim=0)的和。

#include #include using namespace arma;

int main()

二十七.求矩陣行、列的均值

通過呼叫」mean(a, dim)」函式求矩陣a的行(dim=1)、列(dim=0)的均值。

#include #include using namespace arma;

int main()

二十八.求矩陣行、列的中值

通過呼叫」median(a, dim)」函式求矩陣a的行(dim=1)、列(dim=0)的中值。

#include #include using namespace arma;

int main()

二十九.求兩個矩陣的相關係數矩陣

通過呼叫」c=cor(a,b)」函式求矩陣a與矩陣b的相關係數矩陣。矩陣a(b)的每一列為乙個變數,每一行為一組觀測值。矩陣c(i,j)表示矩陣a的第i個變數與矩陣b的第j個變數的相關係數。

#include #include using namespace arma;

int main()

三十.求兩個矩陣的協方差矩陣

通過呼叫」c=cov(a,b)」函式求矩陣a與矩陣b的協方差矩陣。矩陣a(b)的每一列為乙個變數,每一行為一組觀測值。矩陣c(i,j)表示矩陣a的第i個變數與矩陣b的第j個變數的協方差。

#include #include using namespace arma;

int main()

Armadillo安裝及使用

以下 自 armadillo是乙個c 開發的線性代數庫,在vs2010上安裝的具體步驟如下 2 修改d armadillo include armadillo bits config.hpp,將 define arma use lapack define arma use blas 這兩句取消注釋。...

Qt使用Eigen矩陣庫

eigen官網 解壓後放在任意資料夾內,然後在qt專案中的pro檔案中加上eigen的目錄 如果沒有載入成功,重新構築即可 includepath d eigen3新增標頭檔案 include定義向量 字尾是變數型別,例如float矩陣是matrix2f vector2d a 5.0,6.0 cou...

OpenGL 矩陣變換GLM庫的使用

glm和mvp矩陣操作速記 連續工作15小時,累了,睡覺。若未特別說明,以下示例均假設矩陣 向量為四維 glm mat4 mat glm vec4 vec 對於vec來說,第四位為1代表座標,0代表方向 平移矩陣 1 0 0 x 0 1 0 y 0 0 1 z 0 0 0 1 構造平移矩陣 glm ...