Matlab - 从协方差函数和积分创建大协方差矩阵(350x350)

时间:2015-04-24 07:48:21

标签: matlab matrix covariance integral large-data

我正在开展一个项目,我想从包含双积分的协方差函数创建一个协方差矩阵。由于我的数据有350个条目,因此该矩阵变为350x350。

我的问题是,没有积分的那个会在几秒钟内运行

没有INTEGRAL

k_function = @(x01,x02) hyp(1)^2*exp(-0.5*(x01-x02).^2/hyp(2)^2);
for i = 1:length(x1)
    for j = 1:length(x2)
        K(i,j) = integral2(k_function,0,x1(i),0,x2(j));
    end
end

带积分的人需要将近一个小时才能完成。关于如何用计算量较小的方法实现相同结果的任何想法?

WITH INTEGRAL

k_function = @(x01,x02) hyp(1)^2*exp(-0.5*(x01-x02).^2/hyp(2)^2);
for i = 1:length(x1)
    for j = 1:i
        K(i,j) = integral2(k_function,0,x1(i),0,x2(j));
    end
end

K = triu(K,1)' + K;

编辑:

包含协方差函数的3个超参数的hyp - 数组(因此在创建矩阵时基本上是常量)

Edit2: - >使用对称属性(仍然很慢)

{{1}}

谢谢,

马加什

0 个答案:

没有答案