Bootstrap

matlab矩阵替代for,用矩阵运算代替FOR循环

在数据量很大的情况下,用矩阵运算可代替FOR循环,使运算速度大大加快。

我想问的是,如果一个FOR循环中,有很多if、continue等条件语句或循环语句,还能变成矩阵运算吗?

我有个程序需要循环几百万次,速度非常慢,请大家赐教!谢谢。

例如下面的程序,

for i=1:cyc-1

if (Smax(i)>=Smaxol(i));

Smaxol(i+1)=Smax(i);

ol=i;

else

Smaxol(i+1)=Smax(ol);

end

Yre=sqrt((1.0/cos(PI*re/w)));

alpha0=KIc/(sigmau*sqrt(PI*re)*(1.0+Yre/sqrt(2.0)));

if alpha0>sqrt(2.0);

sigmav=sigmau*PI/2.0/acos(1.0/(alpha0^2.0-1.0));

else

error('PLEASE TO CHECK THE VALUE OF ALHPA0!');

break;

end

R(i)=Smin(i)/Smax(i);

Y=sqrt((1.0/cos(PI*a(i)/w)));

Yol=sqrt((1.0/cos(PI*a(ol)/w)));

Kmax(i)=sqrt(PI*re*(1.0/cos(PI*Smax(i)/2.0/sigmav)+1.0))*(1.0+Y*sqrt(a(i)/2.0/re))*Smax(i

;