Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe eine allgemeine Frage zu Filtern aus der Palette Signalverarbeitung/Filter.
Wenn ich einen analogen Kanal mit einer USB-6210 mit 80kHz einlese bei 8k Samples, dann
habe ich einen Signalabschnitt von 100ms. Dies Signal soll nun gefiltert werden.
Ich schließe das Signal jetzt an einen Butterworth-Filter an. Das Nutzsignal hat etwa 50Hz-1kHz.
Die Samplerate des Filters, welchen Wert muss ich da idealerweise nun einstellen? Muss diese
Rate der Abtastrate des Signals selbst entsprechen (80k), oder muss sie deutlich höher sein. Z.B.
Faktor 10 oder mehr?
Und wie ist das Verhältnis der unteren Grenzfrequenz zur Abtastrate. Bei 80k fs stelle ich z.B. 1kHz fg ein
und es passt ungefähr. Bei 800k muss ich eine andere Grenzfrequenz einstellen, damit es passt.
Zur Zeit sind mir diese Zusammenhänge irgendwie unklar, eventuell auch nur eine Denkblockade, aber
ich komm irgendwie nicht drauf, wär toll wenn mir das mal jemand erklären könnte.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Filter: Samplerate fs - Grenzfrequenz fg
Vom Gefühl her ist das die richtige Frage für "Lucki".
Ich meinerseits kann da nur sagen::???:
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
20.11.2009, 11:23 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2009 11:35 von dimitri84.)
' schrieb:Die Samplerate des Filters, welchen Wert muss ich da idealerweise nun einstellen? Muss diese
Rate der Abtastrate des Signals selbst entsprechen (80k), oder muss sie deutlich höher sein. Z.B.
Faktor 10 oder mehr?
So wie ich das VI verstehe soll dort die Abtastfrequenz des Eingangsignals angegeben werde. Warum sollte man das VI belügen?
Zitat:Bei 80k fs stelle ich z.B. 1kHz fg ein und es passt ungefähr
Du schließt eine 0.0125 Konstante dran. Richtig?
Zitat:Bei 800k muss ich eine andere Grenzfrequenz einstellen, damit es passt.
Das ist richtig, denn Grenzfrequenzen gibt man im Verhältnis zur Abtastfrequenz an. Wenn die (Abtastfrequenz) sich ändert, musst du auch auch einen anderen Wert (bei der Grenzfrequnez) angeben. Dieser Wert repräsentiert aber die selbe Grenzfrequenz.
Nur damit damit Lucki gleich alle Informationen hat: Was genau gefällt dir denn nicht an deinem Ergebnis? Wo denkst du, dass da etwas nicht stimmt?
Gruß dimitri
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
20.11.2009, 12:10 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2009 12:12 von Grobi.)
Zu 1. Der Filtereingang erhält ja nur ein Array aus X-Werten. Ich bin mir halt nicht sicher,
ob das Filter zwingend über die Samplerate das dt des Eingangssignals benötigt oder nicht.
also ob fs 1/dt des Eingangssignals sein muss (Vom Gefühl her ja).
zu 2. Nein ich habe nicht 0,0125 eingestellt sondern 1k. Wenn das so ist wie du sagst,
müsste ich also 80k fs und 0,0125 einstellen.
Anbei ein Beispiel von mir, wo ich jetzt fs des FIlters auf 1/x von dt des Eingangssignals
gesetzt habe.
Im oberen Teil des VIs habe ich also 80k fs und 1000Hz fg eingestellt. Es kommt bei einem
1kHz Eingangssignal genau die -3db an der Grenzfrequenz heraus.
Im unteren Teil des VIs habe ich fg relativ zu fs, also 0,0125 eingetragen (0,0125*80k=1000)
Da kommt nichts heraus. Entweder mache ich das verkehrt oder die relative Angabe stimmt so nicht.
Mein Gefühl sagt mir das jetzt die obere Version das vollkommen richtige Ergebnis bereitstellt.
Der Anhang ist in LV2009
20.11.2009, 13:47 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2009 13:51 von dimitri84.)
Ich habe das jetzt selber ausprobiert und muss dir Recht geben. (Dein 2009er VI kann ich nicht öffnen.) Die Grenzfrequenzen werden wohl doch nicht in Relation zur Abtastfrequenz angegeben, sondern absolut. Jedenfalls macht es den Anschein.
Mein Irrglaube stammt aus diesem Thema, Beitrag #3
... und die Voreinstellungen der Grenzfrequenzen (0.45 und 0.125) haben mich in diesem Glauben bestärkt. Aber Wissen ist ja bekanntlich besser als Glauben und ich sollte mich wohl mehr auf meine Signatur besinnen.
Gruß dimitri
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
20.11.2009, 15:16 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2009 15:21 von Grobi.)
Joa, also bei der Frequenz sind wir uns dann ja einig. Es ist aber noch
ein Effekt mehr aufgetreten. Wenn ich aus dem Eingangssignal
anstatt Sinus ein Rechteck mache, habe ich eine viel geringere Dämpfung
bei 1kHz als bei Sinus.
Das leuchtet mir nicht ein, denn bei Amplitude 1, ist die Grundschwingung des
Rechteck ja sogar niedriger als bei Sinus.
Die Sinusdämpfungen sind somit korrekt, bei Rechteck aber irgendwie nicht...
Vielleicht hat ja jemand noch eine Idee.
edit:
Zur Verdeutlichung ein Bild, wenn ich auf mein Filter ein Sinus oder
einen Rechteck mit 1kHz gebe bei 1kHz Grenzfrequenz.
Ergebnis:
Sinus -3db
Rechteck quasi keine Dämpfung
20.11.2009, 15:17 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2009 15:19 von Lucki.)
' schrieb:Vom Gefühl her ist das die richtige Frage für "Lucki".
Ich meinerseits kann da nur sagen::???:
Gruß Markus
Danke, daß du mich hier als Oberlehre empfiehlst. Habe das Thema bisher verschlafen.
Allgemeine Antwort:
1) dt: Selbsverständlich das richtige fs = 1/dt verwenden. Die Frage stellt sich auch nur, wenn man einfache Arrays filtern will. Bei Waveforms, für die es auch entsprechende Filter-VIs gibt, stellt sich die Frage überhaupt nicht, da ist die richtige dt-Information bereit in der Waveform enthalten. Die Waverform-VIs zur Signalverarbeitung sind sowieso oftmals konfortabler gemacht als die einfachen VIs. Es tut mir weh, wenn ich hier sehe, daß in einem geposteten VI zwar von Waveforms ausgegangen wird, aber statt dann die entsprechenedn VIs zur Filterung zu verwenden, wird die Waveform erst mal zerlegt, um dann die einfachen Filter-VIs zu benutzten.
2) Grenzfrequenz:
Es wird sich um Tiefpassfilterung handeln, und da wurde die erste Hürde schon mal bravorös genommen: Die Grenzfrequenz, die ja eigentlich ein "obere" ist, ist an den Eingang "untere" Grenzfrequenz anzuschließen. Bei der Grenzfrequnz handelt es sich um eine echte Frequenz, nicht um ein Verhältnis <1 in bezug auf fs.
Theoretisch enthält eine Waveform mit Sampefrate 80kHz Frequenzen bis zu 40kHz. Wenn ich also an den Filter fs=80kHz anschließe und fg>40kHz anschließe, dann kommt es zur Fehlermeldung, das geht überhaupt nicht. Das heißt aber im Umkehrschluß noch lange nicht, da es Sinn macht, ein fg nur knapp unterhalb 40 kHz verwenden. Der Filter würde dann ja gar nicht mehr filtern. Praktisch ist es so, das der Filter bereits oberhalb fs/4 nicht mehr sauber arbeitet.
Wenn also eine Grenzfrequenz 1 kHz gewählt wird, dann habe ich bis 20kHz einen sauberen Sperrbereicht, weiter oberhalb kommt es dann zu Unregelmäigkeiten, die aber nicht störend sein müssen, wenn der Filter im Sperrberieich darunter seine Arbeit ordentlich getan hat.
Bei einer höheren Samplingrate muß fg nicht geändert werden, es ist wie gesagt kein Verhältnis-Eingang.
3) Ein Problem ist, daß so ein Filter eine Einschwingzeit braucht. Das Signal sollte vom Gleichstromanteil vorher befreit werden. Im Bedarfsfall könnte man dem Array zu Begin ein paar extrapolierte Werte voranstellen, damit der Filter bei den echten Werten schon eingeschwungen ist. Bzw. man muß mit der Messwertaufnahme schon etwas vorher begonnen haben, bevor es interessant und wichtig wird.
20.11.2009, 15:25 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2009 15:26 von Grobi.)
zunächst mal danke für die Antwort, damit haben wir ja die Frage bzgl. der
Samplerate soweit schonmal geklärt und dann zufälligerweise in meinem
Beispielprogramm auch richtig angewendet.
Die Grenzfrequenz ist dann auch soweit klar.
Ich habe meinen Beitrag direkt über dir gerade vor Dir noch einmal editiert.
Vielleicht kannst du mir die Frage zu Sinus versus Rechteck ja auch noch beanworten?
Weil das entspricht ja meiner Meinung nach nicht dem Verhalten eines realen Filters.
Und wo befinden sich die Deiner Meinung nach richtigen Filter-VIs? In der Waveformpalette
finde ich die nicht, oder sehe drüber hinweg...
mfG
Robert
20.11.2009, 20:36 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2009 20:36 von Lucki.)
' schrieb:Zur Verdeutlichung ein Bild, wenn ich auf mein Filter ein Sinus oder
einen Rechteck mit 1kHz gebe bei 1kHz Grenzfrequenz.
Ergebnis:
Sinus -3db
Rechteck quasi keine Dämpfung
So darf man das nicht interpretieren. Bei einem Rechteck bewirkt ein Tiefpass zunächt einmal gar keine Verringerung der Amplitude, sondern es werden nur die Flanken weniger steil. Erst wenn die Grenzfrequenz des Filters unterhalb der Rechteckfrequenz liegt, kommt es auch zu einem Ampitudenabfall, aber der ist nicht derselbe wie bei einm Sinus gleicher Frequenz. Du darfst nicht vergessen: In einer Rechteckwelle mit der Ampitude 1 steckt in der Fourierzerlegeung als Grundwelle ein Sinus der Amplitude 4/Pi drin. Kein Wunder also, daß, selbst wenn das Filter die höheren Harmonischen total unterdrückt, die Amplitude dann immer größer ist als beim reinen Sinus.
Irrtum von Amt: Die von mir angepriesenen Filter für Waveforms entpuppen sich bei näherem Hinsehen als 1 übles Express-VI. Falls ich nicht noch etwas finde, widerrufe ich alles hierzu gesagte. Wahr ist lediglich, daß die Vis für Fourieranalyse für Waveforms existeren und meist besser sind als die entsprechenden einfachen VIs
23.11.2009, 07:34 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2009 07:36 von Grobi.)
zunächst danke für Deine Antwort und Entschuldigung dafür, dass ich erst heute
antworte. Du hast mit deiner Ausführung natürlich vollkommen recht. Das ganze
ist ein Interpretationsfehler meinerseits.
Um nochmal zu bestätigen was du bereits gesagt hast, habe ich nochmal schnell
ein aktives Filter 2.O in PSpice aufgebaut (EMK, Butterworth)
Im Bild ist ersichtlich, dass hier das gleiche Ergebnis wie bei meinem LV Beispiel auftritt.
Der Thread war für mich wirklich sehr hilfreich, da ich zwar weiß (glaub ich jedenfalls)
wie man ein reales FIlter aufbaut, aber die zugehörigen LabVIEW Parameter unklar
waren. Und obwohl ich sonst die LV Hilfe wirklich gut finde, gibt sie hierrüber wirklich
nur geringe Informationen.
Da muss ich wohl ein bisschen an der Grenzfrequenz schieben um das gewünschte
Ergebnis zu bekommen.