【问题标题】:How can I calculate condition number in faster way?如何以更快的方式计算条件数?
【发布时间】:2013-04-23 17:10:20
【问题描述】:

我正在 MATLAB 中进行优化以计算条件数,如下所示:

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

非常耗时,尤其是对于大型 H 矩阵。我正在寻找近似但快速的东西。

【问题讨论】:

  • H 的大小是多少?
  • cond(H) 更快吗?那是内置函数...见mathworks.com/help/symbolic/cond.html
  • H 的大小取决于系统,但对于我目前正在处理的系统,它是 (300,300),它是稀疏的,但不是半对角线。

标签: performance matlab conditional-statements svd


【解决方案1】:

您正在计算所有奇异值并丢弃除其中两个以外的所有奇异值。你可以试试这个:

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

【讨论】:

  • 仅供参考,cond 是 MATLAB 中的内置函数。我建议使用不同的变量名。
  • cond 内置函数执行相同的例程并进行额外的条件检查,因此需要更多时间。
  • 而 svds(H,1) 和 svds(H,1,0) 需要更长的时间来计算条件数。
猜你喜欢
  • 2020-10-20
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 2015-07-26
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多