2013-04-23 61 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