數字影象處理領域中經常會要求某畫素矩陣的最大特徵值。
在處理攝像頭資料的時候,遇到過這個問題。本來用matlab是可以很快解決的。幾行**而已。但是程式要寫入mcu中,matlab就無能為力了。並且本人不熟悉matlab函式向c++**的轉化。
網上找不到直接可用的c++**,於是查詢資料自己寫了乙個。
冪法的數學推導就不貼出來了,網上隨處可見,且大同小異。本人參考的是萬方資料上的某篇**,位址如下
還是很容易看懂的,只不過實際程式中有些細節需要注意。
下面貼上原始碼:
#include
#include
#include
#include
#include
using
namespace
std;
double a[3][3];
int row=0;
int col=0;
double max1=0;
void open_file()
fclose(fp);
}double y[3]=;
double x[3]=;
void mult()
}void to1()
for(int i=0;i<3;i++)
max1=tmp;
}int main()
mult();
to1();
cout
<
for(int i=0;i<3;i++)
cout
cout
<1
<
<
<0]<
<1]<
<2]<
主函式while迴圈,判斷條件裡面,是輸出精度0.00001。本來寫成巨集定義會好看一點。哎,懶得改了。
初始矩陣,也就是chiang.txt中內容如下:
達到規定精度時,迭代次數23次,最後最大特徵值(迭代向量第三個分量)趨近於7.
特徵向量為[0.3 0.067 1].
C語言實現逆冪法求矩陣解特徵值
實驗結果 逆冪法用於計算非奇異陣a aa的按模最小的特徵值和特徵向量。實際計算中,可以構造以下迭代格式 l k u k max i end quad 1 i n ly k z k 1 uyk y k mk max yk i zk yk mk 1 i n 其中l ll是下三角矩陣,u uu是上三角矩陣...
matlab 求矩陣最大特徵值對應的特徵向量
a 1,1,2,3,4 1,1,1,2,3 1 2,1,1,1,2 1 3,1 2,1,1,1 1 4,1 3,1 2,1,1 待求矩陣 x,y eig a 求矩陣的特徵值和特徵向量,x為特徵向量矩陣,y為特徵值矩陣。eigenvalue diag y 求對角線向量 lamda max eigenv...
OpenCV求矩陣的特徵值和特徵向量
opencv求矩陣的特徵值和特徵向量 首先安轉和配置opencv windows版,在此不贅述!首先看看opencv中的矩陣運算的相關知識 cvmat 多通道矩陣 cvmat的結構定義 typedef struct cvmat data data 指標 ifdef cplusplus union u...