Hello,
I have been looking for ways to speed up my code because sometimes I spend some hours at running once MATLAB. I've read: http://blogs.mathworks.com/loren/2008/06/25/speeding-up-matlab-applications/ But it's all about "for" loops (spectacular post, BTW). The problem is that I mainly have "while" loops so I don't get how could I vectorize them. The main problem is that I call another function I've made inside my "while" loop, and that function has another "while" which calls another function with another "while".
I would appreciate any tip. Here you have part of one of my functions, if you want an example:
PSspan = [t0 t0+increment];[resu] = nInt(ab,PSspan,hmax,tol); [resu] = ham(resu); [resuPol] = convPol(resu);while iPS<nPS && loop<loopLimit loop=loop+1; if mod(loop,250)==0; display(loop); end ab=resu(2:5,end); t0=resu(1,end); PSspan=[t0 t0+increment]; [resu] = nInt(ab,PSspan,hmax,tol); [resu] = ham(resu); [resuPol] = convPol(resu); %Comprovació de si s'ha arribat a PS per thetaP
switch tipusCoord case 'Cartesianes'; p=resu(variablePS,1); q=resu(variablePS,end); ctrl=resu(vControl,1); case 'Polars'; p=resuPol(variablePS,1); q=resuPol(variablePS,end); ctrl=resuPol(vControl,1); end if p*q<0 && ctrl>0 %Poincaré section
iPS=iPS+1; display(iPS); loop=0; [ coordCart, coordPol ] = BiseccioMod( resu , hmax, tipusCoord, variablePS ); resuPS(:,iPS)=coordCart; resuPSPol(:,iPS)=coordPol; endend
Best Answer