0
votes

Please, I wrote the code below, and it works perfectly, but it takes about 6 hours. So I was suggested to use parfor to reduce the time. But then I faced the error "Subscripted assignment dimension mismatch", and it doesn't appear immediately; it takes 2 hours then I got the error message after finishing all the iteration numbers.

So I would greatly appreciate your support! By the way, I just put parfor ind1=1:720; instead of for!

lon_rs=(reshape(l2aRS.clon_RS,3560*2000,1));
lat_rs=(reshape(l2aRS.clat_RS,3560*2000,1));
RSsig0=(reshape(l2aRS.sig0_RS,3560*2000,1));
RS_s0=zeros(720,360);
QS_s0=zeros(720,360);
I=ceil(2*(lon_rs));
J=ceil(2*(lat_rs+90));
K=ceil(2*(l1cQS.clon_QS));
L=ceil(2*(l1cQS.clat_QS+90));

for ind1=1:720;

    ind1

    for ind2=1:360;

        indsRS=find((I==ind1) &(J==ind2) &(RSsig0~=0));
        len_temp1=length(indsRS);

        if (len_temp1>0);
            len_RS(ind1,ind2)=len_temp1;           
            RS_s0(ind1,ind2)=median(RSsig0(indsRS));
        end;

        indsQS=find((K==ind1) &(L==ind2) &(l1cQS.sig_QS~=0));
        len_temp2=length(indsQS);

        if (len_temp2>0);
            len_QS(ind1,ind2)=len_temp2;
            QS_s0(ind1,ind2)=median(l1cQS.sig_QS(indsQS));
        end;

    end;

end;
1
Please edit your code (put it in code tags). - Gytis TG
What do mean? I use this at the first time - A.A.J

1 Answers

1
votes

Whenever you are using a loop it is recommended that you preallocate any variables that may change their size within the loop to their final size. If you want to use parfor then you must preallocate len_RS and len_QS, like you did for RS_s0 this will surely cut the run time of this code. It may also solve the "dimension mismatch" problem.