LabVIEWForum.de - Signal abtasten

LabVIEWForum.de

Normale Version: Signal abtasten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

ich schreibe gerade an meiner Bachelorarbeit und muss über LabVIEW ein Signal anpassen und hoffe, ihr könnt mir dabei behilflich sein.

Ich habe ein Signal_1 mit der Abtastfrequenz: 100 Hz bzw. Abtastintervall von 10 ms
und ein weiteres Signal_2 mit der Abtastfrequenz: 2000 Hz bzw. Abtastintervall von 0.5 ms.

Signal_1 hat bei einer Messung von 698.455 Sekunden 70160 Messwerte (kommt aus einer .tdms-datei)
Signal_2 hat bei einer Messung von 712.349 Sekunden 1424698 Messwerte (kommt aus einer .txt/.csv-Datei)

Nun möchte ich Singal_1 an Signal_2 anpassen, also alle 0.5 ms ein Signal_1-Messwert halten bzw. das Signal_1 mit 0.5 ms abtasten (aber davon ausgehend, dass das Signal vorher eine Abtastrate von 10ms hatte).

Wir haben sozusagen bei der Messung_1 alle 10 ms ein Messwert, dass heißt ein Messwert muss 20 "Mal" gehalten werden (10ms/0.5ms).
Siehe beigefügtes Bild: Signalausschnitt: Rote Punkte sind ursprüngliches Signal, blaue Punkte neues gewünschte Signal (quasi linear interpoliert)

Ich vermute, man kann es mit der Resample Waveforms (single shot).vi lösen, aber weiß leider nicht wie genau und ob es überhaupt damit möglich ist.


Hoffe ihr könnt mir helfen Big Grin


Gruß, et-cop
Hallo et-cop,

herzlich willkommen im Forum!

Zitat:Ich vermute, man kann es mit der Resample Waveforms (single shot).vi lösen, aber weiß leider nicht wie genau und ob es überhaupt damit möglich ist.
Ja, ist es. Einfach mal ausprobieren!

Zitat:neues gewünschte Signal (quasi linear interpoliert)
Unter "linear interpoliert" versteht man aber üblicherweise, dass die roten Punkte miteinander verbunden werden, also eben keine Treppenfunktion!
Die von dir schon erwähnte Funktion kennt aber zum Glück verschiedene Arten der Interpolation…
Hallo GerdW,

danke für deine schnelle Antwort,

habe es auch schon mit der VI versucht, aber mir wurde jedes mal, egal was ich für dt gewählt habe, folgender Fehler ausgegeben:

Possible reason(s):

Analysis: The waveform dt parameter is <= 0.



Und stimmt, die roten Punkte sollen gehalten werden, bis zum nächstmöglichen vorhandenen Wert, aber an sich könnte man sie auch linear miteinander verbinden. Hauptsache das Signal hat die gewünschte Abtastfrequenz.

Gruß et-cop
Hallo et-cop,

Zitat:habe es auch schon mit der VI versucht, aber mir wurde jedes mal, egal was ich für dt gewählt habe, folgender Fehler ausgegeben:
Possible reason(s): Analysis: The waveform dt parameter is <= 0.
Glas1 Üblicherweise hängt man dann ein VI an, um den Fehler zu demonstrieren. Glas1

Bei mir funktionierte diese Funktion wunderbar, deshalb vermute ich mal, deine Ausgangswaveform hatte eben nicht die korrekten Parameter (hier dt)…
Hallo GerdW,

Also ich habe jetzt die VI und die txt-Datei beigefügt,

ich habe in dem angefügten VI die Abtastung des Signals sowohl dirket aus der txt/csv-Datei, als auch aus der tdms-Datei in je eine Resample.vi eingeführt und dt auf 0,0005 gesetzt.

Bei der Abtastung direkt aus der txt-Datei kommt die Meldung: "Memory is full" und in dem anderen Fall kommt es zu der oben genannten Fehlermeldung.

=(
Hallo et_cop,

Zitat:ich habe in dem angefügten VI die Abtastung des Signals sowohl dirket aus der txt/csv-Datei, als auch aus der tdms-Datei in je eine Resample.vi eingeführt und dt auf 0,0005 gesetzt.
Bei der Abtastung der Daten aus der csv-Datei verwendest du aber keine Waveform, sondern ein einfaches 1D-Array. Dummerweise fehlt diesem aber jede Zeitinformation und damit auch ein dt-Wert. Außerdem erwartet die verwendete Funktion eine Waveform und zeigt dies durch einen CoercionDot an ihrem Eingang an - CoercionDots haben eine Bedeutung, die in der LabVIEW-Hilfe erläutert wird!

Wenn du die Daten aus der csv-Datei in "echte" Waveforms umwandelst (Waveform-Funktionspalette!), dann funktioniert das Upsampling auch…
Wall
Fehler oben: Du schreibst ein 2D-Array von Daten in die tdms (keine Waveform), liest die Daten aber im Waveform-Format aus. Wie soll diese Waveform eine Information über dt enthalten?

Fehler unten: Du gibst ein 1D-Array ohne Zeitinfo an das Resample-VI (beachte den roten Coercion-Dot). Woher soll sich jetzt LabVIEW die dt-Info holen?

Gruß, Jens
ok, hat super geklappt mit build waveform Big Grin

danke euch Big Grin


Grüße, et-cop
Referenz-URLs