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!
02.12.2014, 17:20 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2014 17:57 von se.)
ich möchte über eine kleine Zeit Messdaten aufnehmen und die Frequenzen analysieren.
Mein Signal sollte innerhalb von 10Hz - 1000Hz liegen.
Nun habe ich folgende Probleme dabei:
1. Die Filterfunktion arbeitet nicht wie gewünscht.
2. Das Frequenzspektrum bzw. die Werte im Array für die Frequenzen sind um Faktor 1000 zu klein dh. statt der zu erwartenden 500Hz werden im Spektrum 0,5Hz angezeigt.
Vielen Dank für die Hilfe
!!!Nachtrag: Filtern will ich u.a. damit natürlich auch den Gleichanteil, s.Bild.
Anzeige
03.12.2014, 11:23 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2014 11:24 von se.)
Hallo nochmal,
ich fürchte das Problem ist eine wenig tiefergehender als ich befürchtete
Wie ich vermute liegt schon die FFT bzw. die Auswertung im Argen. Was ich eigentlich mit dem Programm anstellen will, ist das Finden der Frequenz mit der dominanten Amplitude.
Wenn schon die angezeigten Frequenzen nicht richtig sind, muss doch der Fehler vor dem Filterproblem liegen. Hat keiner eine Idee?
Hast du die "stop freq" und "high freq" des Filters entsprechend gesetzt? (siehe Screenshot der Context Help)
Informationen dazu findest du in der LabVIEW Context Help.
Wieso setzt du den Pnt-to-Pnt-Filter jedes Mal in der FOR-Loop zurück?
Wieso gehst du beim Pnt-to-Pnt-Filter mit einer anderen Samplint Frequenz rein als bei der Erfassung?
Wieso übergibst du an das FFT VI keine Timing Info? (Nicht umsonst ist der Eingang eine Waveform, kein 1D-Array).
Falls du auf meine Rückfragen keine Antwort hast, schau mal hier:
Gruß, Jens
P.S.: Bitte das nächste Mal die LVF-Regeln beachten, Thread hochpushen ist frühestens nach 24 h erlaubt.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Wenn Dir niemand antwortet, dann liegt das nicht an fehlenden Ideen. Ich kann da nur für mich sprechen, warum ich nicht geantwortet habe. Das Vi enthält so viele Ungereimtheiten, dass ich a) sehr lang antworten müsste, und b) darüber hinaus befürchte, einen endlos langen Thread über Probleme eines absoluten Beginners loszutreten , bei dem ich mich dann verpfichtet fühlen würde mich einzubringen. So viel Zeit und Lust habe ich aber nicht.
Damit Du jetzt nicht ganz leer dastehst, hier mal ein kleines funktionierendes Beispiel mit Deinen Werten:
04.12.2014, 10:28 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2014 10:30 von se.)
(03.12.2014 11:45 )jg schrieb: Wieso setzt du den Pnt-to-Pnt-Filter jedes Mal in der FOR-Loop zurück?
Wieso gehst du beim Pnt-to-Pnt-Filter mit einer anderen Samplint Frequenz rein als bei der Erfassung?
Wieso übergibst du an das FFT VI keine Timing Info? (Nicht umsonst ist der Eingang eine Waveform, kein 1D-Array).
Sorry, aber wie du richtig vermutest hast weiß ich selbst nicht warum.
Eure Antworten sind dahingend schon sehr, sehr Hilfreich gewesen.
Ein großes Dankeschön an alle!!!
Gruß Erich
Anzeige
04.12.2014, 11:56 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2014 12:03 von Lucki.)
Da Du Dich so artig bedankst, noch etwas Hilfe (oder sollten die drei Ausrufezeichen Ironie andeuten???)
Mit dem VI von Jens geht die Anzahl der Ungereimtheiten auf eine überschaubare Menge zurück, so dass es sich lohnt ab hier weiter zu diskutieren.
1. Datenerfassung:
Ist kontinuierlich, du entnimmst aber dem Datenpuffer nur einmalig 5000 Samples. Das geht auf Dauer nicht gut, der Puffer läuft anschließend über. Es kann hier sein, dass man das nicht merkt, wenn das ganze VI dann sofort beendet wird. Ein fieser Programmierstil ist es aber allemal.
2. Nonsens Progamming
LV arbeitet vorzugsweise mit Arrays, die Punkt-zu-Punkt Vis braucht man nur zur Online-Datenverarbeitung. Offline-Array-Daten in einer Schleife mit einem Punkt-zu-Punkt-VI behandeln, und anschließend die Einzeldaten wieder zum Array bündeln, ist Nonsens.
3. Finite-Response Filter
wird man nur in ganz bestimmten Fällen verwenden. Sie sind aufwändiger und taugen nicht so viel. Ich vermute sogar, dass so ein FIR-Hochpass den Gleichanteil nicht richtig sperrt, was bei einem IIR-Filter selbstverständlich ist.
Hallo, die sollten auf keinen Fall ein Scherz sein.
Es wird einem schon ganz anders wenn einem Menschen helfen die man nicht kennt ohne erkennbaren Nutzen für die helfende Hand! Das find ich schon Großartig von euch (hoffentlich kommt da jetzt nicht sowas wie "Schleimer" ;-)).
zu 1.:
Das "kontinuierlich" ist noch aus der Kopie von einem anderem Versuch mit einer Whileschleife stehengeblieben.
zu 2.
Dazu muss ich mich erstmal einlesen, da ich die Hintergründe mit den PNT to PNT VI´s noch nicht ganz verstanden habe. Ich hoffe mir helfen da Georgi und Metin weiter.
zu3.
Werde ich mal ändern, allerdings habe ich den IIR aus deinem Beispiel noch nicht gefunden. Hab dafür aber auch schon ein Ersatz gesichtet :-)
Musste zum Test des VI´s noch eine NI 9234 nachordern. Sollte am Dienstag da sein. Dann kann ich das mal Ausprobieren. Sobald es getestet ist melde ich mich nochmal.
Gruß Erich
16.12.2014, 15:25 (Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2014 15:26 von se.)
die Messkarte hat leider eine Woche länger gebraucht. :-(
Also das VI arbeitet erst mal wie gewünscht. Hich die Anmerkung von Lucki mal berücksichtigt und von "kontinuierlich" auf "endliche Anzahl" gestellt. Die Ergebnisse sind völlig unterschiedlich (Bilder anbei).
Folgende Punkte sind mir noch unklar:
1. Frage zu dem Puffer: Wenn ich wie Programmiert über 2-3 Sekunden messen möchte und die Messwerte in eine Datei schreibe, werden die Messwerte immer noch im RAM(Puffer) gehalten? (Dateigröße 500KB)
2. Ich möchte das erste Maxima auswerten. Da die zu erwartende Frequenz zwischen 15 - 100 Hz liegen kann darf ich da erst dahinter Filtern. Mit der aktuellen Version bekomme ich leider nur das zweite Maxima => weil größere Amplitude.
Gruß Erich
16.12.2014, 15:33 (Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2014 15:36 von GerdW.)
1. LabVIEW arbeitet mit dem DATAFLOW: Werte werden in Drähten gespeichert!
Es ist deshalb wenig sinnvoll, Daten erst in eine Datei zu schreiben und gleich danach wieder einzulesen - nimm doch einfach den Draht mit den Daten…
2. Momentan suchst du einfach nach dem Maximum in deinen FFT-Daten - und wunderst dich, dass du den stärksten Peak findest.
Es gibt da Funktionen zum Peak suchen, schau dir die mal an…
Momentan liest du Daten für 4s ein: 64000 Werte bei 16kHz Samplerate…