summaryrefslogtreecommitdiff
path: root/ROM.lpr
diff options
context:
space:
mode:
Diffstat (limited to 'ROM.lpr')
-rw-r--r--ROM.lpr138
1 files changed, 33 insertions, 105 deletions
diff --git a/ROM.lpr b/ROM.lpr
index 0dc1eba..6045da6 100644
--- a/ROM.lpr
+++ b/ROM.lpr
@@ -14,10 +14,10 @@ uses
var
inPulsO,inPuls,refPulsO,refPuls,surTraj,cRefPuls,
- surVel,inPulsArg,refPulsArg,surTrajArg,surVelArg: tExtPointArray;
+ surVel: tExtPointArray;
smooth,betaSmooth,veloSmooth: longint;
- tmax,wmax,absShift,betaBound,veloBound,fftBreite: extended;
- force,fourier,mitAmplMod: boolean;
+ tmax,absShift,betaBound,veloBound: extended;
+ force,mitAmplMod: boolean;
f,bekannteBefehle: tMyStringList;
s,lpicIn,rohIn,rohRef,outIn,
outRef,outRefC,outSur,outVel: string;
@@ -34,11 +34,8 @@ begin
smooth:=1;
betaSmooth:=1;
tmax:=-1;
- wmax:=-1;
absShift:=-1e9;
betaBound:=0.95;
- fourier:=false;
- fftBreite:=-1;
mitAmplMod:=true;
veloSmooth:=1;
veloBound:=1;
@@ -99,11 +96,6 @@ begin
tmax:=strtofloat(s);
continue;
end;
- if istDasBefehl('wmax:',s,bekannteBefehle,true) or
- istDasBefehl('ωmax:',s,bekannteBefehle,true) then begin
- wmax:=strtofloat(s);
- continue;
- end;
if istDasBefehl('Absolutverschiebung:',s,bekannteBefehle,true) then begin
if s='auto' then begin
absShift:=-1e9;
@@ -116,18 +108,6 @@ begin
absShift:=strtofloat(s);
continue;
end;
- if s='mit FFT' then begin
- fourier:=true;
- continue;
- end;
- if istDasBefehl('FFT-Breite:',s,bekannteBefehle,true) then begin
- fftBreite:=strToFloat(s);
- continue;
- end;
- if s='ohne FFT' then begin
- fourier:=false;
- continue;
- end;
if istDasBefehl('lpic-Quelle:',s,bekannteBefehle,true) then begin
lpicIn:=s;
continue;
@@ -224,97 +204,45 @@ begin
end;
cut(inPuls,tmax);
cut(refPuls,tmax);
- gesamtverschiebung(inPuls,refPuls,absShift);
- write(stderr,'Trajektorie berechnen ...');
- berechneTrajektorie(inPuls,refPuls,surTraj,absShift*byte(not fourier));
- writeln(stderr,' fertig');
- write(stderr,'Ergebnis sortieren ...');
- sort(surTraj);
- writeln(stderr,' fertig');
- uniq(surTraj,false);
- write(stderr,'Geschwindigkeit berechnen ...');
- ableiten(surTraj,surVel,veloSmooth,veloBound);
- writeln(stderr,' fertig');
- write(stderr,'Reflektierten Puls berechnen ...');
- berechneRefPuls(inPulsO,surTraj,betaSmooth,betaBound,cRefPuls);
- writeln(stderr,' fertig');
- if fourier then begin
- write(stderr,'Ergebnis interpolieren ...');
- interpoliere(surTraj);
- if outVel<>'' then
- interpoliere(surVel);
+ if (outVel<>'') or (outRefC<>'') or (outSur<>'') then begin
+ gesamtverschiebung(inPuls,refPuls,absShift);
+ write(stderr,'Trajektorie berechnen ...');
+ berechneTrajektorie(inPuls,refPuls,surTraj,absShift);
writeln(stderr,' fertig');
- if fftBreite>0 then begin
- fenstern(inPuls,fftBreite);
- fenstern(refPuls,fftBreite);
- fenstern(surTraj,fftBreite);
- if outVel<>'' then
- fenstern(surVel,fftBreite,true);
- end;
- fft(inPuls,inPulsArg);
- fft(refPuls,refPulsArg);
- fft(surTraj,surTrajArg);
- if outVel<>'' then
- fft(surVel,surVelArg);
- inPuls[0]['y']:=0;
- refPuls[0]['y']:=0;
- surTraj[0]['y']:=0;
- if wmax<0 then begin
- cut(surTraj,min(refPuls[length(refPuls)-1]['x'],inPuls[length(inPuls)-1]['x'])/2);
- cut(surTrajArg,min(refPuls[length(refPuls)-1]['x'],inPuls[length(inPuls)-1]['x'])/2);
- cut(inPuls,surTraj[length(surTraj)-1]['x']);
- cut(inPulsArg,surTraj[length(surTraj)-1]['x']);
- cut(refPuls,surTraj[length(surTraj)-1]['x']);
- cut(refPulsArg,surTraj[length(surTraj)-1]['x']);
- if outVel<>'' then begin
- cut(surVel,surTraj[length(surTraj)-1]['x']);
- cut(surVelArg,surTraj[length(surTraj)-1]['x']);
- end;
- end
- else begin
- cut(surTraj,wmax);
- cut(surTrajArg,wmax);
- cut(inPuls,wmax);
- cut(inPulsArg,wmax);
- cut(refPuls,wmax);
- cut(refPulsArg,wmax);
- if outVel<>'' then begin
- cut(surVel,wmax);
- cut(surVelArg,wmax);
- end;
- end;
- write(stderr,'alles normieren ...');
- normiere(inPuls);
- normiere(refPuls);
- normiere(surTraj);
+ write(stderr,'Ergebnis sortieren ...');
+ sort(surTraj);
writeln(stderr,' fertig');
+ uniq(surTraj,false);
end;
+ if (outVel<>'') or (outRefC<>'') then begin
+ write(stderr,'Geschwindigkeit berechnen ...');
+ ableiten(surTraj,surVel,veloSmooth,veloBound);
+ writeln(stderr,' fertig');
+ end;
+ if outRefC<>'' then begin
+ write(stderr,'Reflektierten Puls berechnen ...');
+ berechneRefPuls(inPulsO,surTraj,betaSmooth,betaBound,cRefPuls);
+ writeln(stderr,' fertig');
+ end;
+ write(stderr,'Ergebnis interpolieren ...');
+ if outSur<>'' then
+ interpoliere(surTraj);
+ if outVel<>'' then
+ interpoliere(surVel);
+ writeln(stderr,' fertig');
+
if outIn<>'' then begin
writeOutput(outIn+'.ori',inPulsO);
- if fourier then
- writeOutput(outIn,inPuls,inPulsArg)
- else
- writeOutput(outIn,inPuls);
+ writeOutput(outIn,inPuls);
end;
if outRef<>'' then begin
writeOutput(outRef+'.ori',refPulsO);
- if fourier then
- writeOutput(outRef,refPuls,refPulsArg)
- else
- writeOutput(outRef,refPuls);
- end;
- if outSur<>'' then begin
- if fourier then
- writeOutput(outSur,surTraj,surTrajArg)
- else
- writeOutput(outSur,surTraj);
- end;
- if outVel<>'' then begin
- if fourier then
- writeOutput(outVel,surVel,surVelArg)
- else
- writeOutput(outVel,surVel);
+ writeOutput(outRef,refPuls);
end;
+ if outSur<>'' then
+ writeOutput(outSur,surTraj);
+ if outVel<>'' then
+ writeOutput(outVel,surVel);
if outRefC<>'' then
writeOutput(outRefC,cRefPuls);
end.