6

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

现在,用 来检查我的代码profiler,很明显这个函数chol真的很耗时,尤其是当输入矩阵的大小变大的时候。

因此,我想知道,是否有任何有价值的替代内置chol功能。

我一直在考虑LAPACK图书馆,也就是spptrf功能。它是否可用MATLAB

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

编辑

举个例子,分析器检索以下信息:

在此处输入图像描述

哪里Coh_u有大小(1395*1395)。还需要注意的是,它chol被称为4000时间,因为我需要4000不同配置的 cholesky 因子。

4

2 回答 2

1

我不确定您使用的是哪个版本的 matlab,但我发现了这个讨论,这表明在旧版本中,Cholesky 分解非常慢,正如您所描述的那样。

那里的答案之一说使用CHOLMOD 包或 SuiteSparse,它的chol2功能应该更快。

于 2013-02-26T15:30:22.833 回答
0

您能否确认正确的表达Coh_u方式如下

一种)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中添加了两个矩阵之间的距离YanZ使得

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

但它会导致函数出现“矩阵非正定”错误chol()

于 2015-09-29T12:06:40.037 回答