我做了優化MATLAB的如下計算條件數:如何以更快的速度計算條件編號?
s = svd(H, 0);
cond = max(s) ./ min(s);
是非常特別的時間耗費大H
矩陣。我正在尋找一些近似但速度很快的東西。
我做了優化MATLAB的如下計算條件數:如何以更快的速度計算條件編號?
s = svd(H, 0);
cond = max(s) ./ min(s);
是非常特別的時間耗費大H
矩陣。我正在尋找一些近似但速度很快的東西。
你正在計算所有的奇異值並丟棄除了其中兩個以外的所有奇異值。你可以試試這個:
largestS = svds(H,1); %largest singular value
smallestS = svds(H,1,0); %smallest singular value
cond = largestS/smallestS
僅供參考,'cond'是MATLAB中的一個內置函數。我建議使用不同的變量名稱。 – Doresoom 2013-04-23 20:34:44
cond內置函數正在執行相同的例程並附加條件檢查,所以需要更多時間。 – hmesgarnejad 2013-04-24 03:40:05
而svds(H,1)和svds(H,1,0)需要更多的時間來計算條件數量。 – hmesgarnejad 2013-04-24 03:41:44
我們在談論什麼尺寸的'H'? – 2013-04-23 17:21:18
是'cond(H)'對你更快?這是內置函數...請參閱http://www.mathworks.com/help/symbolic/cond.html – Floris 2013-04-23 17:29:52
H的大小取決於系統,但對於我目前正在使用的系統是(300,300)它是稀疏的,但不是半對角線。 – hmesgarnejad 2013-04-24 03:43:22