两个月前,我成为了一个Matlab的初学者。我用它来处理MRI图像的夏季项目。最近,我编写了下面展示的积分代码。但是,这两种方法都非常缓慢。运行它们需要一整天的时间。我该如何改进它们以缩短运行时间呢?
Symbolic method:
syms t; T=t*ones(79,95,78); RF1=(1/2)*double(int(((T+x1).^(-1/2)).*((T+y1).^(-1/2)).*((T+z).^(-1/2)),t,0,inf)); RD1=(3/2)*double(int(((T+x1).^(-1/2)).*((T+y1).^(-1/2)).*((T+z).^(-3/2)),t,0,inf));
Numeric method:
fun1=@(T) ((T+x1).^(-1/2)).*((T+y1).^(-1/2)).*((T+z).^(-1/2)); RF1=(1/2)*integral(fun1,0,inf,'ArrayValued',true); fun2=@(T) ((T+x1).^(-1/2)).*((T+y1).^(-1/2)).*((T+z).^(-3/2)); RD1=(3/2)*integral(fun2,0,inf,'ArrayValued',true);
其中x1
,y1
,z
是大小为79x95x78的实数矩阵。