C++應(yīng)用Eigen庫(kù)對(duì)應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問(wèn)題
將Eigen加入到項(xiàng)目中
1.如下圖將Eigen庫(kù)文件夾加入到項(xiàng)目目錄中。

2.將Eigen文件加入到運(yùn)行環(huán)境變量中

3.在項(xiàng)目頭文件中包含Eigen。

使用Eigen中函數(shù)及功能
1)聲明矩陣,向量,數(shù)組:

圖中聲明了一個(gè)2x3的矩陣,矩陣中數(shù)據(jù)類型為float。
第一個(gè)參數(shù)為矩陣中數(shù)據(jù)類型,第二參數(shù)為行數(shù),第三為列數(shù)。
當(dāng)參數(shù)為Dynamic時(shí)為動(dòng)態(tài),程序會(huì)自動(dòng)檢測(cè)需要設(shè)置XxX矩陣。
2)矩陣賦值
方法一:

方法二:

方法三:

3)復(fù)數(shù)矩陣賦值方式

輸出矩陣
使用方法


4)伴隨矩陣,共軛矩陣,伴隨矩陣
使用方法

5)矩陣重塑
使用方法

6)矩陣運(yùn)算
a)矩陣加法、減法、乘法
行列相等矩陣相加減運(yùn)用方法:
行列不等的矩陣相加減運(yùn)用方法:
矩陣于常數(shù)

矩陣于常數(shù)想加減運(yùn)用方法及輸出結(jié)果:
此處不能直接對(duì)matrix進(jìn)行常數(shù)加減,需要將其轉(zhuǎn)化為array后進(jìn)行加減運(yùn)算。

b)三角函數(shù)
所有數(shù)學(xué)函數(shù)輸入的值均以弧度計(jì)算,函數(shù)會(huì)對(duì)矩陣中每個(gè)值進(jìn)行相應(yīng)的運(yùn)算。
即

其中矩陣需要轉(zhuǎn)為array才能進(jìn)行運(yùn)算。
測(cè)試結(jié)構(gòu)體:

用法:
m1.array().atan(); m1.array().asin(); m1.array().acos(); m1.array().sin(); m1.array().cos(); m1.array().tan();
c)其他,
測(cè)試結(jié)構(gòu)體:

使用方法:
log(m1.array())將m1中各元素取自然對(duì)數(shù)返回結(jié)果矩陣log2(m1.array())將m1中各元素取基數(shù)為2對(duì)數(shù)返回結(jié)果矩陣log10(m1.array())將m1中各元素取基數(shù)為10對(duì)數(shù)返回結(jié)果矩陣:m1.sum(): 返回矩陣m1中所有元素的和m1.prod(): 返回矩陣m1中所有元素的積m1.mean(): 返回矩陣m1中所有有元素的平均值m1.trace():返回矩陣的跡,即返回主對(duì)角線上元素的和。如果不是方陣或者為向量,仍返回對(duì)角線元素的和。m1.minCoeff(): 返回矩陣中最小的元素m1.maxCoeff(): 返回矩陣中最大的元素abs( m1.array()):將m1中各元素取絕對(duì)值返回結(jié)果矩陣square( m1.array()):將m1中各元素開(kāi)方返回結(jié)果矩陣
7)元胞數(shù)組轉(zhuǎn)換成矩陣(matlab代碼中cell2mat)
未找到
8)查找矩陣中非0元素下表(matlab代碼中find)
未找到
9)Splines插值
此處只用eigen庫(kù)實(shí)現(xiàn)了一維Splines插值法
實(shí)現(xiàn)類:

使用方法

10)曲線擬合(對(duì)應(yīng)matlab函數(shù)polyfit)
被和諧了
11)多項(xiàng)式計(jì)算(對(duì)應(yīng)matlab函數(shù)polyval)
未找到
12)直線擬合
被和諧了
問(wèn)題及解決方式
問(wèn)題一:

原因:程序操作了矩陣行列邊界之外的數(shù)值;
解決方法:查詢代碼,查看在哪操作了數(shù)組邊界之外數(shù)據(jù),修改。
問(wèn)題二:編譯時(shí)出現(xiàn)error C2338: YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES
原因:矩陣賦值時(shí)出現(xiàn)不匹配現(xiàn)象,比如一個(gè)3x2的矩陣向2x3矩陣賦值,就會(huì)報(bào)此類錯(cuò)誤。
注意事項(xiàng)
Qt中,QDbug無(wú)法輸出矩陣;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言讀取文件流的相關(guān)函數(shù)用法簡(jiǎn)介
C語(yǔ)言中字符型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)介紹
C++中用substr()函數(shù)消除前后空格的解決方法詳解
VC++植物大戰(zhàn)僵尸中文版修改器實(shí)現(xiàn)代碼
c語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解
C++如何獲取系統(tǒng)信息 C++獲取IP地址、硬件信息等
C/C++使用Zlib實(shí)現(xiàn)文件的壓縮與解壓

