diff options
author | Erich Eckner <git@eckner.net> | 2019-09-26 14:14:37 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2019-09-26 14:14:37 +0200 |
commit | 79671a75d9fe3458407d32068c7e50ce358dac5f (patch) | |
tree | 3bc5bd9dfef5dd3f256153dd8f37e2935894db34 | |
parent | 5fed1f3d83830d67fd0e1ee50ee05d4d85089aba (diff) | |
download | epost-79671a75d9fe3458407d32068c7e50ce358dac5f.tar.xz |
epostunit.pas: tWerte.berechneAutokorrelation2d schön zentrieren und Achsen korrekt transformieren
-rw-r--r-- | epostunit.pas | 50 |
1 files 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; |