C++應(yīng)用Eigen庫對應(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ù)組:

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

方法二:

方法三:

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

輸出矩陣
使用方法


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

5)矩陣重塑
使用方法

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

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

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

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

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

使用方法:
log(m1.array())將m1中各元素取自然對數(shù)返回結(jié)果矩陣log2(m1.array())將m1中各元素取基數(shù)為2對數(shù)返回結(jié)果矩陣log10(m1.array())將m1中各元素取基數(shù)為10對數(shù)返回結(jié)果矩陣:m1.sum(): 返回矩陣m1中所有元素的和m1.prod(): 返回矩陣m1中所有元素的積m1.mean(): 返回矩陣m1中所有有元素的平均值m1.trace():返回矩陣的跡,即返回主對角線上元素的和。如果不是方陣或者為向量,仍返回對角線元素的和。m1.minCoeff(): 返回矩陣中最小的元素m1.maxCoeff(): 返回矩陣中最大的元素abs( m1.array()):將m1中各元素取絕對值返回結(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)曲線擬合(對應(yīng)matlab函數(shù)polyfit)
被和諧了
11)多項(xiàng)式計算(對應(yīng)matlab函數(shù)polyval)
未找到
12)直線擬合
被和諧了
問題及解決方式
問題一:

原因:程序操作了矩陣行列邊界之外的數(shù)值;
解決方法:查詢代碼,查看在哪操作了數(shù)組邊界之外數(shù)據(jù),修改。
問題二:編譯時出現(xiàn)error C2338: YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES
原因:矩陣賦值時出現(xiàn)不匹配現(xiàn)象,比如一個3x2的矩陣向2x3矩陣賦值,就會報此類錯誤。
注意事項(xiàng)
Qt中,QDbug無法輸出矩陣;
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++使用string的大數(shù)減法運(yùn)算(2)
這篇文章主要為大家詳細(xì)介紹了C++使用string的大數(shù)減法運(yùn)算,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09
C++11中std::function基礎(chǔ)用法詳解
std::function是C++11標(biāo)準(zhǔn)庫中提供的一種可調(diào)用對象的通用類型,它可以存儲任意可調(diào)用對象,本文就來和大家講講它的基礎(chǔ)用法,希望對大家有所幫助2023-04-04
C語言實(shí)現(xiàn)超市信息管理系統(tǒng)課程設(shè)計
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)超市信息管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

