我必须在函数的开头定义一系列变量。由于我多次使用该功能(10,000次),我希望以最快的方式执行此操作。目前我刚刚在主脚本中创建了一系列全局变量,我在函数的开头调用它们,如下所示:
global x
global y
global z
但是,我注意到它仍然相当耗时(与函数的其余代码相比)。由于我不是专家MATLAB程序员,我想知道是否有更优化的"做到这一点的方法。 谢谢。
function [Mosk,D]= Moskovitz(x,t,INTC)
global v
global densc
global densm
global w
global IC
global LBC
global RBC
global nic
global nlbc
global nrbc
global alpha1
global alpha2
global alpha3
global dx
global dt
i=round(t/dt);
j=round(x/dx);
D=0;
N=-10^36;
for k=1:nic
if IC(3,k)<=densc
if (IC(2,k)+v*t >=x) & (IC(1,k)-w*t<=x)
if (IC(1,k)+v*t <=x)
u=-v;
t1=0;
x1=x-v*t;
dens=IC(3,k);
else
u=(IC(1,k)-x)/t;
t1=0;
x1=IC(1,k);
dens=densc;
end
end
else
if (IC(2,k)+v*t >=x) & (IC(1,k)-w*t<=x)
if (IC(2,k)-w*t >=x)
u=w;
t1=0;
x1=x+w*t;
dens=IC(3,k);
else
u=(IC(2,k)-x)/t;
t1=0;
x1=IC(2,k);
dens=densc;
end
end
end
if (IC(2,k)+v*t >=x) & (IC(1,k)-w*t<=x)
tmp=-(t-t1)*densc*(u+v)+alpha1(k,1)+(x1-IC(1,k))*IC(3,k);
if tmp>=N
N=tmp;
D=dens;
end
end
end
end
答案 0 :(得分:1)
在MATLAB中不需要声明变量,但它仍然是很好的编程习惯。您所要做的就是初始化它们:
x = 0;
y = 0;
z = 0;
无论简介者说什么,这基本上都没有时间。
如果您希望值从一次迭代延续到下一次迭代,则可以使用持久性关键字。