最近和一些朋友討論到了c++中數學工具的問題,以前總是很2地自己寫矩陣運算,或者有時候在matlab裡計算了一些資料再往c程式裡倒,唉~想想那些年,我們白寫的**啊……人家早已封裝好了!首先推薦幾個可以在c++中呼叫的數學平台:eigen、bias、lapack、svd、cmatrix,本文著重eigen做以講解,希望對各位有所幫助。
eigen是什麼?
eigen3****?
eigen3的配置
eigen3 樣例**有沒有?
去**更深入學習?
eigen是什麼?
eigen是c++中可以用來呼叫並進行矩陣計算的乙個庫,裡面封裝了一些類,需要的標頭檔案和功能如下:
eigen的主頁上有一些更詳細的eigen介紹。
eigen3****?
這裡是我下好的,這裡是官網主頁,請自行**,是個code包,不用安裝。
eigen的配置
直接上圖了,附加包含目錄那裡填上你放eigen資料夾的位置即可。
eigen的樣例**有沒有?
當然有,這篇文章重點就是這裡!
以下是我整理的一些常用操作,基本的矩陣運算就在下面了,算是個入門吧~主要分以下幾部分:
建議大家放到編譯環境裡去看,因為我這裡有一些region的東西,編譯器下更方便看~
[cpp]view plaincopy
1. #include
2. #include
3. 4. //usingeigen::matrixxd;
5. usingnamespaceeigen;
6. usingnamespaceeigen::internal;
7. usingnamespaceeigen::architecture;
8. 9. usingnamespacestd;
10.11.
12. intmain()
13. {
14.15. #pragmaregionone_d_object
16.17. cout<<1d-object<18.
19. vector4dv1;
20. v1<<1,2,3,4;
21. cout<<"v1=\n"<22.
23. vectorxdv2(3);
24. v2<<1,2,3;
25. cout<<"v2=\n"<26.
27. array4iv3;
28. v3<<1,2,3,4;
29. cout<<"v3=\n"<30.
31. arrayxfv4(3);
32. v4<<1,2,3;
33. cout<<"v4=\n"<34.
35. #pragmaendregion
36.37. #pragmaregiontwo_d_object
38.39. cout<<2d-object<40. //2dobjects:
41. matrixxdm(2,2);
42.43. //method1
44. m(0,0)=3;
45. m(1,0)=2.5;
46. m(0,1)=-1;
47. m(1,1)=m(1,0)+m(0,1);
48.49. //method2
50. m<<3,-1,
51. 2.5,-1.5;
52. cout<<"m=\n"<53.
54. #pragmaendregion
55.56. #pragmaregioncomma_initializer
57.58. cout<59.
60. introws=5;
61. intcols=5;
62. matrixxfm1(rows,cols);
63. m1<<(matrix3f()<<1,2,3,4,5,6,7,8,9).finished(),
64. matrixxf::zero(3,cols-3),
65. matrixxf::zero(rows-3,3),
66. matrixxf::identity(rows-3,cols-3);
67. cout<<"m1=\n"<68.
69. #pragmaendregion
70.71. #pragmaregionruntime_info
72.73. cout<74.
75. matrixxfm2(5,4);
76. m2<77. cout<<"m2=\n"<78.
79. matrixxfm3;
80. m3=m1*m2;
81. cout<<""<<<<";"
82. <<""<<<83.
84. cout<<"m3=\n"<85.
86. #pragmaendregion
87.88. #pragmaregionresizing
89.90. cout<91.
92. //1d-resize
93.94. cout<<"recoverv1to4*1array:v1=\n"<95.
96. //2d-resize
97.98.
99.100.
101.
102. #pragmaendregion
103.
104. #pragmaregioncoeff_access
105.
106. cout<107.
108. floattx=v1(1);
109. tx=m1(1,1);
110. cout<111.
112. #pragmaendregion
113.
114. #pragmaregionpredefined_matrix
115.
116. cout<117.
118. //1d-object
119. typedefmatrix3ffixedxd;
120. fixedxdx;
121.
122. x=fixedxd::zero();
123. x=fixedxd::ones();
124. x=fixedxd::constant(tx);//txisthevalue
125. x=fixedxd::random();
126. cout<<"x=\n"<127.
128. typedefarrayxfdynamic1d;
129. //或者typedefvectorxfdynamic1d
130. intsize=3;
131. dynamic1dxx;
132. xx=dynamic1d::zero(size);
133. xx=dynamic1d::ones(size);
134. xx=dynamic1d::constant(size,tx);
135. xx=dynamic1d::random(size);
136. cout<<"xx=\n"<137.
138. //2d-object
139. typedefmatrixxfdynamic2d;
140. dynamic2dy;
141. y=dynamic2d::zero(rows,cols);
142. y=dynamic2d::ones(rows,cols);
143. y=dynamic2d::constant(rows,cols,tx);//txisthevalue
144. y=dynamic2d::random(rows,cols);
145.
146. #pragmaendregion
147.
148. #pragmaregionarithmetic_operators
149.
150. cout<151.
管理工具N之內部 外部矩陣
內部 外部矩陣 internal external matrix,ie矩陣 ie矩陣簡介 ie矩陣 internal external matrix,內部 外部矩陣 是在原來由ge公司提出的多因素業務經營組合矩陣基礎上發展起來的。多因素業務經營組合矩陣又稱市場吸引力 經營實力矩陣 ge矩陣 經營實力...
需求管理工具DOORS介紹
什麼是需求管理?需求管理是系統地收集與溝通所有專案目標及保證這些目標,且僅僅是這些目標被完全與正確地滿足的相關活動。需求管理影響整個生命週期 乙個不完整的需求捕獲和管理過程會對專案的生命週期產生多公尺諾骨牌的效應。使用者需求的缺失會導致系統需求的缺失,從而導致設計單元及功能的缺失並最終導致系統不能實...
生產管理工具之甘特圖介紹
甘特圖簡介 甘特圖是本世紀初由亨利 甘特開發的,內在思想簡單,基本是一條線條圖,橫軸表示時間,縱軸表示活動 專案 線條表示在整個期間上計畫和實際的活動完成情況.它直觀地表明任務計畫在什麼時候進行,及實際進展與計畫要求的對比。管理者由此極為便利地弄清一項任務 專案 還剩下哪些工作要做,並可評估工作是提...