2016-08-19 284 views
-2

例如,eigs(A,k,'sm')返回k個最小幅度的特徵值。但是,eigs不處理標誌。編輯:eigs(A,k,'sr')照顧它。MATLAB:按排序順序從`eigs`獲取小的特徵值

A是500乘500稀疏矩陣。如果沒有獲得像eig那樣的所有特徵值,那麼如何有效地以排序的方式獲得最小的3個特徵值(非量值)和相應的eigs的特徵向量?

這可以很容易地通過排序得到的eig全部特徵來完成,但因爲它需要很長的時間和巨大的存儲轉換到全矩陣並計算所有特徵值,我不能使用eig出於某些原因。

編輯:這也可以通過eigs(A,k,'sr')完成,並做自我排序。但是eigs中有更快的方法或選項嗎?

回答

0

它不應該這樣做,除非存在語法錯誤或者您的矩陣具有所有具有正實部的特徵值。這給出了R2016a上正確的負號簽名的最小實部(我猜這就是你的意思是小的)特徵值。請注意,最小的eigs是複共軛,一對僅由其負虛部給出。

A = sprand(100,100,0.5); 
[V,D] = eigs(A,3,'sr') 
+0

謝謝。 'sr'工程。有沒有辦法以排序的方式輸出'D',而不用自己排序? – kyle