Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 加速双环积分的技巧_Matlab - Fatal编程技术网

Matlab 加速双环积分的技巧

Matlab 加速双环积分的技巧,matlab,Matlab,我目前拥有以下代码: function v3matrix1 = v3(l,eigendata,sphere) l0=l; v3matrix1=zeros(2*l0+1,2*l0+1); for m0=-l0:1:l0 for m0p=-l0:1:l0 fun=@(theta,phi)conj(Ylm(l0,m0,theta,phi)).*(-gamma11(1,eigendata,sphere,theta,phi)).*partialTheta2(l0,m0p,theta,phi)

我目前拥有以下代码:

function v3matrix1 = v3(l,eigendata,sphere)

l0=l;
v3matrix1=zeros(2*l0+1,2*l0+1);

for m0=-l0:1:l0
 for m0p=-l0:1:l0
    fun=@(theta,phi)conj(Ylm(l0,m0,theta,phi)).*(-gamma11(1,eigendata,sphere,theta,phi)).*partialTheta2(l0,m0p,theta,phi).*sin(theta);
    v3matrix1(m0+l+1,m0p+l+1)=integral2(fun,0,pi,0,2*pi);
  end
end

end
运行大约需要21分钟。我已经尝试按照这里()给出的类似建议,使用“arrayfun”和“meshgrid”去掉for循环,但这并没有加快速度。我想知道是否有人有任何其他的提示或建议,可以加快这段代码


多谢各位

在我看来,计算每一个积分都需要相当长的时间,所以你能做的不多。我并不奇怪
arrayfun
没有帮助,它基本上是一个伪装的循环,即使循环速度更快,我想大部分时间都会花在
integral2
上。尝试使用探查器查看
integral2
占用了多少时间,如果占用的时间很大,如果没有一些数学知识,可能无法简化积分。可以使用
integral
函数对积分进行矢量化<代码>乐趣=@(x)[x.^2;2*x.^2];积分(有趣,0,1,'ArrayValue',真)。然而,我不确定这是否有效。不过你可以试一下。此选项也应可用于
integral2
。您是否尝试过
parfor
循环?我刚刚安装了一个标准的Matlab,它包括了并行工具箱。试着使用。它比integral2快得多。