C++應(yīng)用Eigen庫對(duì)應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問題
將Eigen加入到項(xiàng)目中
1.如下圖將Eigen庫文件夾加入到項(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中各元素開方返回結(jié)果矩陣
7)元胞數(shù)組轉(zhuǎn)換成矩陣(matlab代碼中cell2mat)
未找到
8)查找矩陣中非0元素下表(matlab代碼中find)
未找到
9)Splines插值
此處只用eigen庫實(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)直線擬合
被和諧了
問題及解決方式
問題一:
原因:程序操作了矩陣行列邊界之外的數(shù)值;
解決方法:查詢代碼,查看在哪操作了數(shù)組邊界之外數(shù)據(jù),修改。
問題二:編譯時(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無法輸出矩陣;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章

C語言讀取文件流的相關(guān)函數(shù)用法簡(jiǎn)介

C語言中字符型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)介紹

C++中用substr()函數(shù)消除前后空格的解決方法詳解

VC++植物大戰(zhàn)僵尸中文版修改器實(shí)現(xiàn)代碼

c語言實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解

C++如何獲取系統(tǒng)信息 C++獲取IP地址、硬件信息等

C/C++使用Zlib實(shí)現(xiàn)文件的壓縮與解壓