Mir liegen Messwerte x(k) (Impulskamm) im Zeitbereich vor (reelle Größe). Ich möchte diese zeitlich um t verschieben. Dieses mache ich im Frequenzbereich durch Multiplikation mit exp(1i*2*pi*dt), wobei dt = 2pi*f*t. Ich habe da folgenden Ansatz gewählt: x_dt = ifft(fft(x)*exp(-1i*2*pi*dt)) Da x_dt komplexe Werte annimmt, muss ich nur den Realteil betrachten? Einen Ausweg würden analytische Signale liefern: x(k) = x(k) + 1i hilbert(x(k)) x_dt = ifft(fft(x)*exp(-1i*2*pi*dt)) Jetzt geht es wieder um die Frage, was ich mir plotte. Realteil, Imaginärteil, ... Plotte ich mir den Imaginärteil sieht man die zeitliche Korrektur. Jedoch nur, solange die Verschiebung keine "Krummen" Werte annimmt. (zeitliche Verschiebung der Pulse zu erkennen, jedoch durch den komplexen Charakter Amplitude des Imaginärteil abweichend, hier steckt mein Verständnisfehler) Hat jemand passende Hinweise/Literatur zu dem Problem.
Also so recht verstehe ich dein Vorhaben nicht: Du hast Meßwerte sprich Samples vorliegen, im Zeitbereich. Nun willst du selbige ebenfalls im Zeitbereich verschieben, also um n Samples nach hinten (nach vorn geht ja nicht..) - also wo ist das Problem? Ist es gar keine Verschiebung im Zeitbereich, sondern eine Phasendrehung der für die Abbildung dieser Samples benötigten SIN/COS Wellen? W.S.
Du hast recht. Ich habe nicht bedacht, dass ich nicht um jeden beliebigen Wert im Zeitbereich verschieben kann, sondern nur um Vielfache an Samples. Durch Zeropadding könnt ich dies im Grequenzbereich erhöhen. Dann habe ich jedoch auch zwangsläufig die N fache Anzahl an "Samples" zu verarbeiten. Ich habe den Fehler gemacht, dass ich um ein ungerades Vielfaches Verschoben habe.
Moin, Man kann auch um Bruchteile von Samples verschieben, bloss laeuft's dann auf ein (FIR-)Filter raus - und jenachdem wie schlecht man mit den "Dreckeffekten" der Filterung leben kann, wird das Filter etwas laenglich und der Aufwand hoeher. Ein Filter mit diesen Koeffizienten [-0.25 0.75 0.75 -0.25] wuerde z.B. um 1.5 Samples verschieben - allerdings auch einen Ripple im Frequenzbereich erzeugen und hat auch noch eine Nullstelle bei der halben Abtastfrequenz. Gruss WK
derguteweka schrieb: > Ein Filter .... wuerde z.B. > um 1.5 Samples verschieben Also DAS mach mir mal vor. OK, du könntest die Samplefrequenz verdoppeln und zwischen 2 Ursprungs-Samples interpolierten. Aber was war eigentlich dein Zweck? W.S.
Moin, W.S. schrieb: > Also DAS mach mir mal vor. Stell' dein Licht nicht unter den Scheffel, das muss ich dir nicht vormachen, das schaffst du auch ganz alleine :) Natuerlich kann man auch das Signal "upsamplen/interpolieren", um Zwischenwerte zu kriegen - kommt halt drauf an, was man so damit vorhat - aber es geht prinzipiell auch mit der original Samplingfrequenz und z.B. einem gefensterten und etwas verschobenen sinc() als FIR Filter. Gruss WK
derguteweka schrieb: > aber es geht prinzipiell auch mit der original Samplingfrequenz höchstens per "erst rauf, dann interpolieren und umrechnen, dann wieder runter". Andernfalls solltest du mal erklären, wie man in einem zeitdiskreten System ein Sample um eine halbe Zeiteinheit versetzt... Nee, zeitdiskret ist und bleibt zeitdiskret. W.S.
Moin, Da nimmt man halt einen idealen Tiefpass aus dem Karton mit den FIR-Filtern, mit einer Grenzfrequenz von Fabtast/2. D.h. eigentlich ist das gar kein richtiger Tiefpass, denn der laesst ja alle Frequenzen durch, aber erstmal egal. Die Koeffizenten so eines idealen Tiefpass waeren also h(N)=sin(pi*N)/(pi*N) mit N von Chuck Norris gezaehlt: von -unendlich bis +unendlich. Wenn Chuck damit fertig ist, merk' ich: Oh - Glueck gehabt - alle h(N)=0, bis auf N=0; da ist h(0)=1 Also besteht mein idealer Tiefpass nur aus dem einen, von 0 verschiedenen Koeffizienten h(0)=1. Welch' Ueberraschung....aber leider keine Verschiebung der Eingangssamples... Also berechne ich mal meine h(N) anders, mit einem verschobenen sinc: h(N)=sin(pi*N-0.25)/(pi*N-0.25) Chuck Norris zaehlt wieder von -unendlich bis +unendlich... Huuups, jetzt isses aber nicht mehr ganz so dolle, denn alle h(N) sind jetzt ungleich 0, d.h. mein Filter ist nicht nur 2x unendlich lange, sondern auch noch nicht kausal. Bloed. Jetzt kommen halt die Dreckeffekte, die ich schon erwaehnte, denn ich schneid' mal das Filter vorne und hinten irgendwo ab und musses soweit verschieben, dasses wieder kausal wird. Dadurch krieg' ich erstmal eine Verzoegerung um N samples rein und einen Amplituden/Phasengang - aber eben auch eine Gruppenlaufzeit, die um N+0.25 herum schwankt - zumindest bei unteren Frequenzen. Je laenger ich das Filter machen kann und je "schoener" ich fenstere, desto besser werd' ich's hinkriegen. So werden ich Signale um Bruchteile einer Abtastperiode verzoegert. Nicht direkt schoen, aber machbar. Gruss WK
Verstanden im Zeitbereich. Danke. Wollt die Verschiebung aus folgendem Grund im FrequenzBereich machen: so müsste man doch jede beliebige Verschiebung dich Multiplikation mit der entsprechenden Phase realisieren können. Die Rücktransformation enthält das verschobene Signal. In der Theorie. Jetzt ist der Frequenzbereich begrenzt. Trotzdem muss ich damit zB eine Dreiecksfolge verschieben können. Um beliebige Bruchteile (wenn man es im Frequenzbereich angeht). Multipliziert man nun im Frequenzbereich die Reelle Eingangsfolge mit einer frequenzselektiven Phase wird die Rücktransformierte komplex. Schaut man sich nur den Realteil an, ist die Folge zwar zeitlich verschoben, jedoch auch in der Amplitude verändert. Liegt das nun dadrin, dass man den Imaginärteil vernachlässigt? Bitte macht mich auf Logikfehler aufmerksam. Möchte es verstehen.
Moin, Axsoo - prinzipiell und um ganzzahlige samplezahlen verschieben (oder besser gesagt: rotieren, denn die Daten, die "hinten" rausfallen, kommen ja "vorne" wieder rein) klappt ja mit deiner Methode. Und bei den nichtganzzahligen Verschiebungen - tja, warum solls dir da besser gehen als Chuck Norris und mir? ;-) Deine Frequenzbereichs-exp-Funktion, mit der du im Zeitbereich verschieben willst, die widerholt sich ausserhalb der Grenzen einer DFT, wenn man sie als DFT-transformierte einer irgendwie gearteten Zeitverschiebefunktion im Zeitbereich ansehen wuerde - und das ist was anderes, als zeitliches Verschieben. Diese Effekte kannst du verkleinern, wenn du dein Signal vorne und hinten mit ordentlich Nullen "stuffst" - aber das laeuft im Prinzip auf dasselbe hinaus, wie wenn bei meiner Methode das Filter laenger gewaehlt wird... Gruss WK
Verschieben ist doch kein Problem, oder? Um 2 samples nach hinten schieben geht mit den Koeffizienten: 0 0 1 Da kommt dann das erste sample wieder raus, sobald das 3. da ist. Um 2.5 samples verschieben geht mit: 0 0 0,5 0,5 Da bekommt man dann einfach den Mittelwert der beiden ersten samples heraus, was ja einer linearen interpolation entspricht. Oder sehe ich da was falsch? Ist schon ne Weile her bei mir...
Moin, Naja, so ganz problemfrei ist das Verschieben um Bruchteile von Sampleabstaenden nicht; es muessen eben neue Samplewerte "erfunden" werden; dabei treten unschoene Nebeneffekte auf - sogar wurscht, ob man nun im Zeit- oder Frequenzbereich schiebt... Bei dem [0 0 0.5 0.5] Beispiel krieg' ich z.B. umsonst und gratis einen Tiefpass mitgeliefert; vielleicht will ich den aber garnicht... Nehm' ich dagegen so ein Filter: [0.12732 -0.21221 0.63662 0.63662] Dann ist der Tiefpasscharakter nicht mehr so ausgepraegt; dafuer ist halt die Gruppenlaufzeit nicht mehr so schoen konstant 2.5, sondern geht mit hoeheren Frequenzen ordentlich runter. Ist halt wie immer bei Filterberechnungen: Mindestens eine Kroete muss man schlucken... Gruss WK
HilbertTrans schrieb: > Multipliziert man nun im Frequenzbereich die Reelle Eingangsfolge mit > einer frequenzselektiven Phase wird die Rücktransformierte komplex. Nicht wenn die Multiplikation im Frequenzbereich mit einem "symmetrischen" Signal erfolgt, also einem auch im Zeitbereich rein reelwertigen Signal, Symmetrie hier erklärt: ftp://ftp.tnt.uni-hannover.de/pub/edu/DigSig1/Edler/digsig-08.pdf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.