chol(A,'lower')
来生成下三角因子。
现在,使用profiler
检查我的代码,很明显函数chol
非常耗时,特别是如果输入矩阵的大小变大。
因此,我想知道,如果有任何有价值的替代内置chol
函数。
我一直在考虑LAPACK
库,即spptrf
函数。它是否在MATLAB
中可用?
任何提示或支持都非常受欢迎。
修改
举个例子,探查器会检索这些信息:
其中Coh_u
的大小为(1395*1395)
。另外,还要注意chol
被称为4000
次,因为我需要4000
不同配置的cholesky因素。
答案 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
已被添加,这是两个矩阵Y
和Z
之间的距离,这样
dist = pdist2([Y(:) Z(:)],[Y(:) Z(:)]);
但它导致"矩阵不是肯定的" chol()
函数出错。