From 058b8a39480c87a3b31876dce87bc383b506661a Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 31 Jul 2018 14:59:24 +0200 Subject: überflüssiges entfernt - wir können jetzt "nur noch" x_arp rekonstruieren (keine fft, kein fenstern, ...) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ROM.lpr | 138 ++++++++++++++++------------------------------------------------ 1 file changed, 33 insertions(+), 105 deletions(-) (limited to 'ROM.lpr') 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. -- cgit v1.2.3-54-g00ecf