From 79671a75d9fe3458407d32068c7e50ce358dac5f Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 26 Sep 2019 14:14:37 +0200 Subject: epostunit.pas: tWerte.berechneAutokorrelation2d schön zentrieren und Achsen korrekt transformieren MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epostunit.pas | 50 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/epostunit.pas b/epostunit.pas index 4d61abc..79006d6 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -5857,12 +5857,15 @@ end; function tWerte.berechneAutokorrelation2d(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; var - Zeit,pvFehler: extended; - s: string; - b: boolean; - fftRichtungen: array[boolean] of char; - gespiegelt: array[boolean] of boolean; - bekannteBefehle: tMyStringList; + Zeit,pvFehler: extended; + i: longint; + s: string; + b,fertig: boolean; + c: char; + fftRichtungen: array[boolean] of char; + gespiegelt: array[boolean] of boolean; + bekannteBefehle: tMyStringList; + TTs: array of tTauschThread; begin result:=false; warteAufBeendigungDesLeseThreads; @@ -5901,6 +5904,16 @@ begin _xSteps:=_xSteps*2; _tSiz:=_tSiz*2; + transformationen:=tLineareAchsenVerzerrTransformation.create(transformationen); + for c:='x' to 'y' do + with transformationen as tLineareAchsenVerzerrTransformation do begin + fak[c]:=0.5; + if gespiegelt[c<>'x'] then + offset[c]:=-achsen[c,'x'] + else + offset[c]:=-(achsen[c,'y']+achsen[c,'x'])/2; + end; + if sT then begin result:=true; exit; @@ -5947,6 +5960,31 @@ begin gibAus(' (Parseval-Fehler = '+floatToStr(pvFehler)+')',3); gibAus('... fertig! '+timetostr(now-Zeit),3); end; + setLength(TTs,threads); + for b:=false to true do + if not gespiegelt[b] then begin + for i:=0 to length(TTs)-1 do + if b then + TTs[i]:=tTauschThread.create( + round(i*_xSteps/length(TTs)), + round((i+1)*_xSteps/length(TTs))-1, + true, + self) + else + TTs[i]:=tTauschThread.create( + round(i*_tSiz/length(TTs)), + round((i+1)*_tSiz/length(TTs))-1, + false, + self); + repeat + sleep(10); + fertig:=true; + for i:=0 to length(TTs)-1 do + fertig:=fertig and TTs[i].fertig; + until fertig; + for i:=0 to length(TTs)-1 do + TTs[i].free; + end; result:=true; end; -- cgit v1.2.3-70-g09d2