MATLAB中基于积分的算法优化运行时间



我想在MATLAB中创建一个算法,它计算特定的函数,然后对其进行积分以获得特定的值。";结果";基于";尺寸";代码开头的paramater。例如,若大小=100,结果将是一个100x100的矩阵。由于integral((函数的高维大小和使用寿命,运行时间非常长。我认为,这主要是因为integral((函数的运行时间。有没有一种方法可以优化这个算法的运行时间。复杂性和内存使用不是问题,只需要在运行时进行改进。

size = 100;
y = zeros(2,size);
y(1,:) = 10*(randn(1,size) + 1i*randn(1,size));
y(2,:) = randn(1,size) + 1i*randn(1,size);
result = zeros(size);
for j=1:size
for i=1:size
fun = @(x) sin(x)*(y(1,i)-y(1,j)) + cos(x)*(y(2,i)-y(2,j));
result(i,j) = integral(fun,0,100);
end
end

integral大约36%的时间用于处理您没有使用的可选输入参数,因此您可以复制integral函数并将其重命名为myintegral.m。然后您可以编辑新函数以消除这行代码:

opstruct=integralParseArgs(varargin{:}(;

如果在上面的行之后设置了一个断点,则可以获取opstruct的内容,并将其硬编码到新函数中,这样就可以节省解析参数的时间。通过使opstruct成为一个持久变量,您可以节省更多的时间。

最新更新