INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Filter selbst erstellen



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!

18.04.2013, 12:27
Beitrag #1

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 101
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
Filter selbst erstellen
Hallo,

ich möchte einen Filter selbst erstellen. Grund: Das Filter-Vi in Labview sperrt Frequenzen komplett.. ich möchte bestimmte Frequenzen aber nur
abschwächen. Habe mal einen Screenshot angehängt, wie ich mir das vorstelle. Zuerst wandel ich mein Signal-Array mit einer FFT in den Frequenzbereich
um. Dann multipliziere ich die Frequenzen, die kleiner als ein bestimmter Wert sind in einem Case mit 0,5, um diese abzuschwächen, alle anderen lasse
ich unverändert durch. Anschließend möchte ich mit einer inversen FFT wieder in den Zeitbereich.

Habe aber irgendwie ein Problem mit den Datentypen. Also hatte eigentlich gehofft, dass mir der FFT Block dann auch wieder ein normales Array ausgibt mit dem
ich weiterarbeiten könnte.

Schonmal im Vorraus Danke für Tipps oder AnregungenSmile


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.04.2013, 13:02
Beitrag #2

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
RE: Filter selbst erstellen
Ich erklär's mal in Worten, weil ich gerade nichts zu programmieren da habe, ich hoffe, es ist nachvollziehbar (sehr viel detailierter findest du das auch hier):

Versuch mal ohne das Express-VI mit den Grundfunktionen auszukommen (Signal Processing => Transforms ==> FFT bzw. inverse FFT)
Hier bekommst du direkt die komplexe FFT geliefert, wobei die einzelnen Punkte einen Frequenzabstand von "Sampling Rate / Samples" haben.
Das ganze ist dann ein um die Mitte gespiegeltes komplexes Frequenzspektrum. Dich interessiert nur die Amplitude, also kannnt du über Numeric => Complex => Complex to polar an den Radius rankommen.
Hier willst du jetzt alle Frequenz unter einem bestimmten Bereich abschwächen, also gehst du den Array-Radius durch und solange "Frequenzabstand * Laufindex < Highpassfrequenz" wendest du deinen Faktor an. Das gleiche musst du am Ende machen, wobei dann "Frequenzabstand * Laufindex > (Array-Länge - 1)* Frequenzabstand - Highpassfrequenz" sein muss.
Nachdem du den Radius-Array so korrigiert hast kannst du ihn wieder mit dem Winkel -Array über "Polar to complex" als komplexe Funktion zusammenfügen und mittels inverse FFT rücktransformieren. Wahrscheinlich wird der harte Sprung bei der Highpassfrequenz für ein paar unschöne Nebeneffekte sorgen.

If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.04.2013, 16:13
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Filter selbst erstellen
Noch eine Erklärung:
Kontexthilfe öffnen und mit dem Mauszeiger auf den Draht gehen. dann siehst du nämlich, welcher Datentyp im Draht steckt...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.04.2013, 09:03 (Dieser Beitrag wurde zuletzt bearbeitet: 19.04.2013 09:07 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Filter selbst erstellen
Der Datentyp ist ein Cluster, enthaltend fo, df und den Daten-Array. Wenn du mit dem Datenarray etwas machen willst, mußt Du ihn aus dem Cluster selektieren. Danach kannst Du ihn wieder in den Cluster reintun:
   
Ob Du allerdingss mit Deinem Vorhaben glücklich werden wirst, steht auf einem anderen Blatt. Aber das war ja nicht Deine Frage...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.04.2013, 10:00
Beitrag #5

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 101
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
RE: Filter selbst erstellen
Hey, danke für die Antworten..

wieso könnte ich denn damit nicht glücklich werden, bzw. gibt es eine sinnvollere Lösung?

Ich versuche das Rastmoment von Motoren zu bestimmen. Das Problem dabei ist, dass dem eigentlichen
Signal ein Sinus unterlagert ist, der sich durch eine leicht außermittige Einspannung des Motors
erklärt. Ich habe bis jetzt noch nicht viel mit Filtern gearbeitet. Mit einem normalen Hochpass, der
die unteren Frequenzen komplett blockiert, funktioniert es nicht, weil mir auf diesem Weg das ganze
Signal verfälscht wird. Deshalb wollte ich mir jetzt selbst einen Filter "bauen", der diese Frequenzen nur
abschwächt, also nicht ganz blockiert.

Ein anderes Verständnisproblem habe ich noch mit dem Array an sich.. da stehen ja jetzt nur die Y-Werte, also
das Moment drin. Darauf wende ich den Filter an. Der Filter hat aber ja so gar keine Informationen über die X-Achse.
Ich plotte mein Signal auch nicht über die Zeit sondern über die Position (0 bis 360°). Kann das dann
überhaupt funktionieren oder würde es etwas bringen zusätzlich die Zeit während der Messung mit aufzunehmen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2013, 08:29 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2013 08:51 von creo_123.)
Beitrag #6

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 101
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
RE: Filter selbst erstellen
(18.04.2013 13:02 )Kasi schrieb:  Ich erklär's mal in Worten, weil ich gerade nichts zu programmieren da habe, ich hoffe, es ist nachvollziehbar (sehr viel detailierter findest du das auch hier):

Versuch mal ohne das Express-VI mit den Grundfunktionen auszukommen (Signal Processing => Transforms ==> FFT bzw. inverse FFT)
Hier bekommst du direkt die komplexe FFT geliefert, wobei die einzelnen Punkte einen Frequenzabstand von "Sampling Rate / Samples" haben.
Das ganze ist dann ein um die Mitte gespiegeltes komplexes Frequenzspektrum. Dich interessiert nur die Amplitude, also kannnt du über Numeric => Complex => Complex to polar an den Radius rankommen.
Hier willst du jetzt alle Frequenz unter einem bestimmten Bereich abschwächen, also gehst du den Array-Radius durch und solange "Frequenzabstand * Laufindex < Highpassfrequenz" wendest du deinen Faktor an. Das gleiche musst du am Ende machen, wobei dann "Frequenzabstand * Laufindex > (Array-Länge - 1)* Frequenzabstand - Highpassfrequenz" sein muss.
Nachdem du den Radius-Array so korrigiert hast kannst du ihn wieder mit dem Winkel -Array über "Polar to complex" als komplexe Funktion zusammenfügen und mittels inverse FFT rücktransformieren. Wahrscheinlich wird der harte Sprung bei der Highpassfrequenz für ein paar unschöne Nebeneffekte sorgen.

Danke für die Ausführliche ErklärungSmile Ich versuche das gerade nachzubauen.. allerdings verstehe ich das mit dem Frequenzabstand und "Sampling Rate / Samples" nicht.. dachte, dass ich die irgendwo in dem FFT-Block vorgeben kann, aber da ist kein entsprechender Eingang..
In meinem Programm selbst habe ich keine vorgegebene Sampling Rate, weil ich meine Messwerte nicht zu bestimmten Zeiten, sondern an bestimmten Positionen aufnehme.. und die Zeit die zwischen zwei Messpunkten liegt, spielt für mich ja auch keine Rolle.. also mein Signal sieht genau gleich aus, egal, ob ich alle 2 Sekunden oder alle 10 Minuten einen Messwert aufnehme, da ich messe wenn der Rotationstisch steht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2013, 14:04
Beitrag #7

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
RE: Filter selbst erstellen
(22.04.2013 08:29 )creo_123 schrieb:  allerdings verstehe ich das mit dem Frequenzabstand und "Sampling Rate / Samples" nicht.. dachte, dass ich die irgendwo in dem FFT-Block vorgeben kann, aber da ist kein entsprechender Eingang..

Sorry wegen der entstandenen Verwirrung, ich hatte das direkt auf Zeit <-> Frequenz Information umgemünzt, bei der man ein kontinuierliches Signal mit einer festen Frequenz aufnimmt. Aber trotzdem musst du auch in deinem Fall "selbst wissen", was der Abstand des späteren FFT-Arrays ist. Im einfachsten Fall ist das dann sowas wie ... Geschwindigkeit? Impuls?... den du aus der reziproken Position bekommst. Gedanklich steige ich da leider immer recht schnell nach dem ersten "das ist was inverses"-Gedanken aus.

If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.04.2013, 06:46
Beitrag #8

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 101
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
RE: Filter selbst erstellen
Die Verwirrung wäre so oder so entstandenWink hast mir echt sehr geholfen mit deiner ausführlichen Antwort!!

Nochmal zur Sample Rate.. ich nehme alle 0,3° einen Messwert auf.. eine Messung geht über eine komplette Umdrehung,
also 360°. Am Ende der Messung habe ich dann ein Array mit 1200 Messwerten.

Die Zeit spielt wie gesagt, meiner Meinung nach, keine Rolle. Nur verstehe ich halt einfach nicht wie ich ohne Zeitbezug auf die
Sample Rate, die ja eigentlich eine Frequenz ist, komme.

Vielleicht hat ja noch jemand eine Idee, wie ich mir das sinnvoll berechnen kann.. wäre für etwas Hilfe sehr dankbar..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.04.2013, 08:22
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Filter selbst erstellen
Hallo creo,

du nimmst nicht zeitbasiert Samples, sondern positionsbasiert...

Du hast folgende Optionen:
- zu jedem Sample eine Zeit speichern...
- mit einer mittleren Samplefrequenz arbeiten (und Drehunförmigkeiten ignorieren/tolerieren): f=1200/(Zeit für eine Umdrehung)...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.04.2013, 11:47
Beitrag #10

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 101
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
RE: Filter selbst erstellen
Hallo Gerd,

zu jedem Sample eine Zeit speichern, würde ich mit relativ wenig Aufwand hinbekommen..

Ich habe mal einen Screenshot von meinem Filter, den ich nach Kasi's Anleitung erstellt habe, angehängt. Zur Zeit
ist die Sample Rate noch als Bedienelement ausgeführt. Zustäzlich habe ich auch noch das eigentliche Signal und
das dazugehörige, mit der FFT erstellte Spektrum angehängt.

Mein Problem ist, dass ich bei dem Spektrum keinen Frequenz Bezug habe. Die Werte auf der x-Achse (0 bis 1200) entsprechen
der Anzahl der Messungen. Laut Kasi müsste ich Laufindex*Sample Rate rechnen, um die Frequenzen zu erhalten. Aber wie
kann ich das einbauen, wenn ich nicht von einer konstanten Sample Rate (ich nehme ca. alle 0,2 Sekunden einen Wert auf)
ausgehe, sondern die Zeit für jedes Sample zusätzlich speichere?


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Wer kann diesen Filter erklären? Philipp841 12 7.259 25.07.2020 07:32
Letzter Beitrag: Martin.Henz
  Extended Kalman Filter in LabVIEW Heber 11 8.508 20.04.2017 09:26
Letzter Beitrag: Heber
  Hochpass Filter se 19 13.374 14.06.2015 18:32
Letzter Beitrag: se
  Filter tetef 5 6.256 09.04.2013 09:52
Letzter Beitrag: creo_123
  Ein Vi was ein neues Vi öffnet und sich selbst schließt. Stevie85 2 4.083 21.03.2013 13:53
Letzter Beitrag: Stevie85
  IIR-Notch-Filter 50Hz JaDa 4 7.490 25.11.2012 09:01
Letzter Beitrag: Lucki

Gehe zu: