05.02.2010, 08:51
(Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2010 09:15 von kevlin.)
Beitrag #1
|
kevlin
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Oct 2009
8.2
2009
de
22081
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
Wie auch dem Screenshot zu sehen, bilde ich von einem Signal eine FFT.
Details:
fa (Abtastfrequenz): 20Hz
N (FFT-Länge): 2^13 Werte = 8192 = 8 Minuten Signal
Mein sich ergebendes Spektrum reicht daher (Shannon Theorem) bis 10Hz.
Nun zur Frage.
Dies FFT berechne ich für viele Signale, bekomme also ebensoviele Spektren heraus. Ich möchte diese Spektren nun "übereinander" legen und eine Art Mischspektrum erhalten. Dort wo viele Spektren deckungsgleich sind, soll sich auch mein Mischspektrum ergeben.
Ich glaube aber durch eine Mittelwertbildung komme ich da nciht so wirklich hin. Denn dabei wird ja automatisch mein Signal auch kleiner.
LV 8.2
Nachtrag: LV gibt als Betrag den Effektivwert aus, oder? (Steht zumindest so in der Hilfe, wenn ich's dort nicht falsch verstanden habe). Ich komme also auf den Scheitelwert (Amplitutenwerte) mit [ Effektivwert * Wurzel(2) ], richtig?
|
|
|
05.02.2010, 09:26
(Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2010 09:27 von dimitri84.)
Beitrag #2
|
dimitri84
Astronaut
Beiträge: 1.496
Registriert seit: Aug 2009
2020 Developer Suite
2009
DE_EN
53562
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
' schrieb:Wie auch dem Screenshot zu sehen, bilde ich von einem Signal eine FFT.
Details:
fa (Abtastfrequenz): 20Hz
N (FFT-Länge): 2^13 Werte = 8192 = 8 Minuten Signal
Mein sich ergebendes Spektrum reicht daher (Shannon Theorem) bis 10Hz.
Dass, das FFT VI dir ein Spektrum bis 10Hz liefert ist zwar richtig aber das heißt noch lange nicht, dass das Theorem auch erfüllt ist und kein Aliasing auftritt. Dazu musst du schon dein Zeitsignal kennen bzw. dessen Zusammensetzung. Was ist das für ein Signal?
Zitat:Dies FFT berechne ich für viele Signale, bekomme also ebensoviele Spektren heraus. Ich möchte diese Spektren nun "übereinander" legen und eine Art Mischspektrum erhalten.
Sind die Spektrem alle gleich lang? (Wenn ja Was spricht dagegen sie einfach aufzusummieren und durch die Anzahl zu teilen?
Zitat:Dort wo viele Spektren deckungsgleich sind, soll sich auch mein Mischspektrum ergeben.
Den Satz versteh' ich nicht. Meinst du, dass dort wo oft Peaks sind dann auch im gemittelten Spektrum die Peaks sein sollen?
Zitat:Ich glaube aber durch eine Mittelwertbildung komme ich da nciht so wirklich hin. Denn dabei wird ja automatisch mein Signal auch kleiner.
Das richtige Verfahren hängt vom Signal ab. Was stellt das Signal dar?
Zitat:Nachtrag: LV gibt als Betrag den Effektivwert aus, oder? (Steht zumindest so in der Hilfe, wenn ich's dort nicht falsch verstanden habe). Ich komme also auf den ursprünglichen Amplitutenwerte mit Ueff * Wurzel(2), richtig?
Da würde ich auch gerne eine Meinung zu hören. Mir fällt es schwer genau nachzuvollziehen wie die sich die konkreten Amplituden ergeben bei dem von dir verwendeten VI
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
|
|
|
05.02.2010, 09:50
Beitrag #3
|
kevlin
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Oct 2009
8.2
2009
de
22081
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
' schrieb:Dass, das FFT VI dir ein Spektrum bis 10Hz liefert ist zwar richtig aber das heißt noch lange nicht, dass das Theorem auch erfüllt ist und kein Aliasing auftritt. Dazu musst du schon dein Zeitsignal kennen bzw. dessen Zusammensetzung. Was ist das für ein Signal?
Das Signal ist die Messung der Netzfrequenz von 50Hz. Die Abtastwerte bewegen sich um den Wert von 50 herum. Abweichung max. +/- 0,15
Das Theorem ist verletzt. Ich könnte das Signal nicht wieder aus meinem Spektrum herstellen. Das mit dem Antialising habe ich noch nicht ganz verstanden.
Wikipedia sagt:
Zitat:Bei Verletzung des Abtasttheorems tritt eine Verfälschung des Originalsignals auf (Aliasing im Zeitbereich). Eine Möglichkeit des Anti-Aliasing ist die Bandbegrenzung des Signals am Eingang des Systems, um diesen Effekt zu vermeiden.
Wie sehe das praktisch aus?
' schrieb:Sind die Spektrem alle gleich lang? (Wenn ja Was spricht dagegen sie einfach aufzusummieren und durch die Anzahl zu teilen?
Ja, alle Spektren sind 2^12 = 4096 Werte lang. Aufsummieren und duch die Anzahl teile wäre doch eine Mittelwertsbildung. Dann würden auch kleine Werte vergrößert werden. Ich hatte überlegt mit jeweil aus dem Betragarray nur die kleinsten Werte ausgeben zu lassen.
' schrieb:Den Satz versteh' ich nicht. Meinst du, dass dort wo oft Peaks sind dann auch im gemittelten Spektrum die Peaks sein sollen?
Das richtige Verfahren hängt vom Signal ab. Was stellt das Signal dar?
Siehe oben
' schrieb:Da würde ich auch gerne eine Meinung zu hören. Mir fällt es schwer genau nachzuvollziehen wie die sich die konkreten Amplituden ergeben bei dem von dir verwendeten VI
Habe jetzt weiter gemacht und die Beträge mit den Vorzeichen der Phasenwinkel multipliziert. Damit bekomme ich die große Amplitude (im Array an Index 0) weg. Die Vorzeichen existieren (außer im Index 0) immer.
|
|
|
05.02.2010, 10:15
(Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2010 10:15 von kevlin.)
Beitrag #4
|
kevlin
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Oct 2009
8.2
2009
de
22081
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
Nochmal ein Nachtag zur Verletzung des Theorems:
Ich weiß nicht welche Frequenzen im meinem Orginalsignal auftreten. Das Signal wurde mit 20Hz abgetastet und daß kann ich auch nicht verkleinern, ist denke ich auch nicht so schlimm.
Folglich kann ich nur auftretende Frequenzen bis 10Hz "detektieren". Das ist auch ok, denke mal, mich interessieren eh nur periodisch auftretende Schwankungen im Bereich von 0 - 3Hz.
Ist denn dadurch das Theorem verletzt? Ich will Frequenzen von max. 3Hz erhalten -> mindestens mit doppelter Frequenz (6Hz) abtasten. Ist geschehen (20Hz > 6Hz). Also muß ich mich um Aliasing doch gar nicht scheren, oder?
|
|
|
05.02.2010, 10:20
Beitrag #5
|
dimitri84
Astronaut
Beiträge: 1.496
Registriert seit: Aug 2009
2020 Developer Suite
2009
DE_EN
53562
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
' schrieb:Das Signal ist die Messung der Netzfrequenz von 50Hz. Das Theorem ist verletzt. Ich könnte das Signal nicht wieder aus meinem Spektrum herstellen. Das mit dem Antialising habe ich noch nicht ganz verstanden.
Wikipedia sagt:
Wie sehe das praktisch aus?
' schrieb:Bei http://www.dsptutor.freeuk.com/aliasing/AD102.html kannst Du Dir die Auswirkung des Aliasing-Effekts bei Unterabtastung anschauen. Bei Rücktransformation in den Zeitbereich werden einem (an Stelle der nicht erfassbaren viel zu hohen Frequenzen) ein hoher Anteil an niedrigen Signalfrequenzen vorgegaukelt.
Wenn man ein Signal erfasst, dessen Hauptfrequnezanteil bei 50Hz liegt, ist es also nicht schlau das Signal mit 20Hz abzutasten. Wusstest du ja schon vorher, hoffentlich.
Zitat:Die Abtastwerte bewegen sich um den Wert von 50 herum. Abweichung max. +/- 0,15
Versteh ich nicht. Abtastwerte des Zeitsignals = 50V? Oder Abtastwerte = Spektrum = 50Hz?
Zitat:Ja, alle Spektren sind 2^12 = 4096 Werte lang. Aufsummieren und duch die Anzahl teile wäre doch eine Mittelwertsbildung. Dann würden auch kleine Werte vergrößert werden. Ich hatte überlegt mit jeweil aus dem Betragarray nur die kleinsten Werte ausgeben zu lassen.
Versteh ich nicht. Du willst dir die Werte aus dem Spektrum aussuchen mit denen du weiterechnest und zwar anhand derer Amplitude?!
Zitat:Habe jetzt weiter gemacht und die Beträge mit den Vorzeichen der Phasenwinkel multipliziert. Damit bekomme ich die große Amplitude (im Array an Index 0) weg. Die Vorzeichen existieren (außer im Index 0) immer.
Diese Vorgehensweise ist mir unbekannt. Eine große Amplitude an Indexposition 0 hört sich für mich nach einem Offset an.
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
|
|
|
05.02.2010, 10:35
(Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2010 10:40 von dimitri84.)
Beitrag #6
|
dimitri84
Astronaut
Beiträge: 1.496
Registriert seit: Aug 2009
2020 Developer Suite
2009
DE_EN
53562
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
' schrieb:Nochmal ein Nachtag zur Verletzung des Theorems:
Ich weiß nicht welche Frequenzen im meinem Orginalsignal auftreten. Das Signal wurde mit 20Hz abgetastet und daß kann ich auch nicht verkleinern, ist denke ich auch nicht so schlimm.
Folglich kann ich nur auftretende Frequenzen bis 10Hz "detektieren". Das ist auch ok, denke mal, mich interessieren eh nur periodisch auftretende Schwankungen im Bereich von 0 - 3Hz.
Ist denn dadurch das Theorem verletzt? Ich will Frequenzen von max. 3Hz erhalten -> mindestens mit doppelter Frequenz (6Hz) abtasten. Ist geschehen (20Hz > 6Hz). Also muß ich mich um Aliasing doch gar nicht scheren, oder?
Was du anscheinend weißt, ist ja, dass in deinem Signal Frequenzkomponenten bis mind. 50Hz enthalten sind. D.h., wenn du so ein Signal mit 20 Hz abtastest (ohne vorher diese zu hohen Frequnezanteile herauszufiltern), ist das Kind bereits in den Brunnen gefallen. Wenn dich doch gerade der niederfrequente Anteil interessiert, sollte es dich sehr wohl stören, dass auf grund von Aliasing niederfrequente Anteile vorgegaukelt werden, die eben garnicht da sind.
Zitat:Folglich kann ich nur auftretende Frequenzen bis 10Hz "detektieren".
Folglich zeigt dir dein FFT.vi ein Spektrum bis 10Hz. Ob der Inhalt des Spektrums die Realität widerspielt ist zu bezweifeln.
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
|
|
|
05.02.2010, 11:10
Beitrag #7
|
kevlin
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Oct 2009
8.2
2009
de
22081
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
Hier ist es nun zu Verständnisproblemen gekommen. Ich versuche diese nun mal zu klären.
Es wurde eine Messung der Netzfrequenz vorgenommen. Die Polorität der Spannung im Energienetz wechselt bekanntermaßen mit 50Hz. Es wurde nun der tatsächliche Wert der Frequenz (die ist nicht immer genau 50Hz) mit einer Frequenz von 20Hz abgetastet.
Es ergibt sich also eine Meßwertreihe, die alle 50ms (20Hz) den derzeitigen Frequenzwert anzeigt. Dieser Wert pendelt natürlich um 50Hz herum (+/- max. 0,15, meist viel weniger). Aber fürs Verständnis ist die Tatsache, daß der Meßwert einen Frequenzwert darstellt unerheblich. Man könnte auch annehmen es sei z.B. Volt.
Nun will ich mit der FFT schauen, mit welchen Frequenzen, diese Abweichung um den Wert "50" herum schwingt.
Interessant sind aber nur Schwingungen bis zu einer Frequenz von 3Hz. Daher die Abtastung mit 20Hz.
Die FFT spukt ja nun ein Cluster (f0, df, Array mit den Effektivwerten der Beträge) aus. An stelle 0 dieses Betragarray erscheint immer der Wert "50". So eine Art Offset. Aber alle anderen Werte stellen nur die Abweichung von diesem Wert da. Ist das bei einer FFT eines Sinussignals mit Offset anders?
Ich habe daher die Phasen (zu den jeweiligen passenden Beträgen) genommen und deren Vorzeichen mit dem Betrag multipliziert um so den Offset zu entfernen. Siehe auch Screenshot. Keine gute Lösung?
|
|
|
05.02.2010, 11:31
(Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2010 12:31 von dimitri84.)
Beitrag #8
|
|
|
05.02.2010, 11:40
Beitrag #9
|
kevlin
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Oct 2009
8.2
2009
de
22081
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
' schrieb:Ach euer Signal ist bereits ein Frequnezverlauf? Ich bin von einem Spannungsisgnal ausgegangen.
Guten Appetit
Nein, das Signal ist kein Frequenzverlauf. Es ist der Verlauf der Frequenz, der Netzfrequenz. Aber wie schon zuvor erwähnt. Am besten als Signal vorstellen, daß um den Wert 50 herum schwankt.
Ich habe nun einmal den "Offset" von 50 herausgenommen und mir das Spektrum erzeugt. Ist zwar nicht viel anders als mit meiner vorherigen Lösung, aber vielleicht sauberer.
Anbei das Signal
und das resultierende Spektrum.
|
|
|
05.02.2010, 12:27
(Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2010 12:48 von dimitri84.)
|
dimitri84
Astronaut
Beiträge: 1.496
Registriert seit: Aug 2009
2020 Developer Suite
2009
DE_EN
53562
Deutschland
|
Überlagerung von Spektren bilden != Mittelwert
' schrieb:Nein, das Signal ist kein Frequenzverlauf. Es ist der Verlauf der Frequenz, der Netzfrequenz.
Alles klar!
Hier hab' ich erstmal ein (sub)VI zum Offset entfernen (war von Lucki, ich hab's nochmal polymorph gemacht für 1 und N Kanäle):
Offset_entfernen_polymorph.vi (Größe: 5,7 KB / Downloads: 267)
Dann ist das Thema mit dem Aliasing immer noch nicht durch ,denn da ist ein hochfrequentes Rauschen auf eurem Verlauf der Frequenz. Das ist sicher > 10Hz. Eigentlich musstet ihr vor der Abtastung mit 20Hz das Signal noch filtern um eben Aliasing zu verhindern. Entweder mit einem MovingAverage, was sich hier nicht eignet, da man nicht genau sagen kann, was man genau wegfiltert, oder mit einem geeignetetn Tiefpassfilter, was hier wohl das Richtige wäre. Da das aber rückwirkend nicht mehr geht, sollte ihr wenigstens jetzt vor der FFT Untersuchung das Rauschen beseitigen.
Desweiteren solltet ihr ruhig auch mal die Fensterfunktion vom FFT.vi nutzen um die Enden des Signals auf Null zu drücken. Warum das nötig ist hat Lucki im anderen Thread erklärt ...
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
|
|
|
| |