summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2019-09-26 14:14:37 +0200
committerErich Eckner <git@eckner.net>2019-09-26 14:14:37 +0200
commit79671a75d9fe3458407d32068c7e50ce358dac5f (patch)
tree3bc5bd9dfef5dd3f256153dd8f37e2935894db34
parent5fed1f3d83830d67fd0e1ee50ee05d4d85089aba (diff)
downloadepost-79671a75d9fe3458407d32068c7e50ce358dac5f.tar.xz
epostunit.pas: tWerte.berechneAutokorrelation2d schön zentrieren und Achsen korrekt transformieren
-rw-r--r--epostunit.pas50
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;