Hi,
I have number of functions that I use to find roots to Neumann problem. One of the functions contains nested for loops which runs forever.
Please see below:
The function consists of three nested for loops as:
function [Lsn] = coefFourier_ll_log(k,ll)N=length(ll);ll_n=coefFourier1(k*ll);lambda=zeros(1,N-1); lambda(N/2+1:N-1)=-0.5./(1:N/2-1);lambda(1:N/2-1)=fliplr(lambda(N/2+1:N-1)); M=N/2-1; Lsn=zeros(N-1,N-1);for s=-M:M for n=-M:M rmin=max(-M,max(-M-n,s-M)); rmax=min(s+M,min(M-n,M)); for r=rmin:rmax Lsn(s+M+1,n+M+1)=Lsn(s+M+1,n+M+1)+ll_n(s-r+M+1)*ll_n(n+r+M+1)*lambda(r+M+1); end endendLsn=0.5*Lsn;
This function receives k(double), ll(1D array) and returns Lsn(Matrix). For the given time profile, the system size is 512, which means M is 255.
How I can vectorize it to increase its speed? I need to run this group of functions for couple of hundreds times and eventually with even bigger system size.
Thank you for your time.
Best Answer