2013-04-23 88 views
1

我做了優化MATLAB的如下計算條件數:如何以更快的速度計算條件編號?

s = svd(H, 0); 
cond = max(s) ./ min(s); 

是非常特別的時間耗費大H矩陣。我正在尋找一些近似但速度很快的東西。

+0

我們在談論什麼尺寸的'H'? – 2013-04-23 17:21:18

+3

是'cond(H)'對你更快?這是內置函數...請參閱http://www.mathworks.com/help/symbolic/cond.html – Floris 2013-04-23 17:29:52

+0

H的大小取決於系統,但對於我目前正在使用的系統是(300,300)它是稀疏的,但不是半對角線。 – hmesgarnejad 2013-04-24 03:43:22

回答

0

你正在計算所有的奇異值並丟棄除了其中兩個以外的所有奇異值。你可以試試這個:

largestS = svds(H,1); %largest singular value 
smallestS = svds(H,1,0); %smallest singular value 
cond = largestS/smallestS 
+0

僅供參考,'cond'是MATLAB中的一個內置函數。我建議使用不同的變量名稱。 – Doresoom 2013-04-23 20:34:44

+0

cond內置函數正在執行相同的例程並附加條件檢查,所以需要更多時間。 – hmesgarnejad 2013-04-24 03:40:05

+0

而svds(H,1)和svds(H,1,0)需要更多的時間來計算條件數量。 – hmesgarnejad 2013-04-24 03:41:44