2016-07-04 37 views
0

Bitte, ich habe den folgenden Code geschrieben und es funktioniert perfekt, aber es dauert ungefähr 6 Stunden. Also wurde mir vorgeschlagen, parfor zu verwenden, um die Zeit zu reduzieren. Aber dann habe ich den Fehler "Subscripted Assignment Dimension Mismatch" konfrontiert, und es erscheint nicht sofort; Es dauert 2 Stunden, dann habe ich die Fehlermeldung erhalten, nachdem ich alle Iterationsnummern beendet habe."Parfor": Subskribiertes Zuweisungsmaß stimmt nicht überein

So würde ich sehr Ihre Unterstützung schätzen! Übrigens, ich habe parfor ind1=1:720; statt 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; 
+0

Bitte bearbeiten Sie Ihren Code (in Code-Tags einfügen). –

+0

Was bedeutet? Ich benutze das zum ersten Mal –

Antwort

1

Jedes Mal, wenn Sie es eine Schleife verwenden, wird empfohlen, alle Variablen vorzubelegen, die ihre Größe auf ihre endgültige Größe innerhalb der Schleife ändern können. Wenn Sie parfor verwenden möchten, dann müssen Sie müssenlen_RS und len_QS vorbelegen, wie Sie für RS_s0 tat dies wird sicherlich die Laufzeit dieses Codes schneiden. Es kann auch das "Dimension-Mismatch" -Problem lösen.