Cholesky分解

时间:2013-02-26 14:21:53

标签: matlab matrix factorization

在我的matlab代码中,我必须处理某个给定矩阵的Cholesky分解。我通常会调用chol(A,'lower')来生成下三角因子。

现在,使用profiler检查我的代码,很明显函数chol非常耗时,特别是如果输入矩阵的大小变大。

因此,我想知道,如果有任何有价值的替代内置chol函数。

我一直在考虑LAPACK库,即spptrf函数。它是否在MATLAB中可用?

任何提示或支持都非常受欢迎。

修改

举个例子,探查器会检索这些信息:

enter image description here

其中Coh_u的大小为(1395*1395)。另外,还要注意chol被称为4000次,因为我需要4000不同配置的cholesky因素。

2 个答案:

答案 0 :(得分:1)

我不确定您使用的是哪个版本的matlab,但我发现this discussion,这表明在旧版本中,Cholesky Factorization在您描述时非常慢。

其中一个答案是使用CHOLMOD package or SuiteSparse,其chol2函数应该更快。

答案 1 :(得分:0)

您能确认Coh_u的正确表达式是否在

之下

a)Coh_u = exp(-a.*sqrt((f(ii)/Uhub).^2 + (0.12/Lc).^2)).*(df.*psd(ii,1));

b)Coh_u = exp(-a.*dist*sqrt((f(ii)/Uhub).^2 + (0.12/Lc).^2)).*(df.*psd(ii,1));

a)和b)的差异在于b)dist已被添加,这是两个矩阵YZ之间的距离,这样

dist = pdist2([Y(:) Z(:)],[Y(:) Z(:)]);

但它导致"矩阵不是肯定的" chol()函数出错。