日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++應用Eigen庫對應實現matlab中部分函數問題_C 語言

作者:妙懂自己 ? 更新時間: 2023-01-14 編程語言

將Eigen加入到項目中

1.如下圖將Eigen庫文件夾加入到項目目錄中。

2.將Eigen文件加入到運行環境變量中

3.在項目頭文件中包含Eigen。

使用Eigen中函數及功能

1)聲明矩陣,向量,數組:

圖中聲明了一個2x3的矩陣,矩陣中數據類型為float。

第一個參數為矩陣中數據類型,第二參數為行數,第三為列數。

當參數為Dynamic時為動態,程序會自動檢測需要設置XxX矩陣。

2)矩陣賦值

方法一:

方法二:

方法三:

3)復數矩陣賦值方式

輸出矩陣

使用方法

4)伴隨矩陣,共軛矩陣,伴隨矩陣

使用方法

5)矩陣重塑

使用方法

6)矩陣運算

a)矩陣加法、減法、乘法

行列相等矩陣相加減運用方法:

行列不等的矩陣相加減運用方法:

矩陣于常數

矩陣于常數想加減運用方法及輸出結果:

此處不能直接對matrix進行常數加減,需要將其轉化為array后進行加減運算。

b)三角函數

所有數學函數輸入的值均以弧度計算,函數會對矩陣中每個值進行相應的運算。

其中矩陣需要轉為array才能進行運算。

測試結構體:

用法:

m1.array().atan(); m1.array().asin(); m1.array().acos();

m1.array().sin(); m1.array().cos(); m1.array().tan();

c)其他,

測試結構體:

使用方法:

  • log(m1.array())將m1中各元素取自然對數返回結果矩陣
  • log2(m1.array())將m1中各元素取基數為2對數返回結果矩陣
  • log10(m1.array())將m1中各元素取基數為10對數返回結果矩陣:
  • m1.sum(): 返回矩陣m1中所有元素的和
  • m1.prod(): 返回矩陣m1中所有元素的積
  • m1.mean(): 返回矩陣m1中所有有元素的平均值
  • m1.trace():返回矩陣的跡,即返回主對角線上元素的和。如果不是方陣或者為向量,仍返回對角線元素的和。
  • m1.minCoeff(): 返回矩陣中最小的元素
  • m1.maxCoeff(): 返回矩陣中最大的元素
  • abs( m1.array()):將m1中各元素取絕對值返回結果矩陣
  • square( m1.array()):將m1中各元素開方返回結果矩陣

7)元胞數組轉換成矩陣(matlab代碼中cell2mat)

未找到

8)查找矩陣中非0元素下表(matlab代碼中find)

未找到

9)Splines插值

此處只用eigen庫實現了一維Splines插值法

實現類:

使用方法

10)曲線擬合(對應matlab函數polyfit)

被和諧了

11)多項式計算(對應matlab函數polyval)

未找到

12)直線擬合

被和諧了

問題及解決方式

問題一:

原因:程序操作了矩陣行列邊界之外的數值;

解決方法:查詢代碼,查看在哪操作了數組邊界之外數據,修改。

問題二:編譯時出現error C2338: YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES

原因:矩陣賦值時出現不匹配現象,比如一個3x2的矩陣向2x3矩陣賦值,就會報此類錯誤。

注意事項

Qt中,QDbug無法輸出矩陣;

總結

原文鏈接:https://blog.csdn.net/nannanstyle/article/details/124415459

欄目分類
最近更新