|
|
NaNs zusätzlich an Stellen eines Vektors einfügen |
|
Matlab_User85 |

Forum-Anfänger
|
 |
Beiträge: 36
|
 |
|
 |
Anmeldedatum: 03.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.11.2014, 11:06
Titel: NaNs zusätzlich an Stellen eines Vektors einfügen
|
 |
|
 |
|
Hallo zusammen,
im Rahmen einer Messwerterfassung möchte ich Messwerte in Matlab einlesen und analysieren.
Hierbei liegt einerseits ein Vektor mit den Messwerten vor und andererseits ein Vektor mit dem zugehörigen Zeitpunkt der Erfassung in Form einer Zahlenreihe. Die Länge von v_mess und v_kontroll sind identisch
z.B.
Wie in v_kontroll beispielhaft gezeigt fehlen die Zahlen 3 und 4.
Das bedeutet, dass an den Stellen (zum Zeitpunkt) 3 und 4 keine Messwerte erfasst wurden und im Vektor v_mess an den Stellen 3 und 4 jeweils zusätzlich NaN eingefügt werden soll, um bei der graphischen Analyse die zeitliche Korrektheit wieder herstellen zu können.
Das Ziel für die Analyse ist also ein v_mess von:
Mein erster Ansatz zum Auffinden der fehlenden Stellen im Vektor v_kontroll ist der folgende:
c bzw. k liefern mir die mit NaN aufzufüllenden Stellen (Komponenten) des des Vektors v_mess.
Wie bekomme ich nun die durch c bzw. k gelieferten Stellen des Vektors v_mess mit NaN durch Matlab aufgefüllt?
Bin Neuling in Matlab und bitte um eure Hilfe
|
|
|
|
|
Alex4456 |

Forum-Anfänger
|
 |
Beiträge: 47
|
 |
|
 |
Anmeldedatum: 17.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.11.2014, 11:13
Titel:
|
 |
Hallo,
Sofern dein Vektor v_kontroll immer mit 1 anfängt, sollte das funktionieren.
Ansonsten kann man das Prinzip aber auch leicht abändern, sodass es für alle Vektoren geht.
Grüße
|
|
|
Matlab_User85 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 36
|
 |
|
 |
Anmeldedatum: 03.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.11.2014, 11:41
Titel:
|
 |
Alex4456 hat Folgendes geschrieben: |
Hallo,
Sofern dein Vektor v_kontroll immer mit 1 anfängt, sollte das funktionieren.
Ansonsten kann man das Prinzip aber auch leicht abändern, sodass es für alle Vektoren geht.
Grüße |
Die Zahlvariable wird mit 1 initialisiert. Falls jedoch mal mit einer anderen Zahl begonnen werden würde (z.B. ab 3). Wie würde denn dann der Ansatz aussehen?
|
|
|
gomar |

Forum-Anfänger
|
 |
Beiträge: 18
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.11.2014, 16:26
Titel:
|
 |
Hallo!
Wenn mich gerade nicht alles täuscht sieht der Ansatz dann so aus:
Gruß, Gomar
|
|
|
Matlab_User85 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 36
|
 |
|
 |
Anmeldedatum: 03.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2014, 15:18
Titel:
|
 |
|
 |
|
Vielen Dank schonmal für eure Beiträge.
Ich habe meine Messwerterfassung nochmals überarbeitet.
Vor dem Beginn der Zahlenreihe, welche normalerweise mit der Zahl 1 beginnt, können nun Nullen entstehen, z. B.
Die Anzahl der vorangestellten Nullen des Messvektors v_mess und des Kontrollvektors v_kontroll sind identisch.
Ich möchte nun diese Nullen vor Beginn einer weiteren Analyse entfernen lassen. Hierbei sollen aber echte Nullen von Messwerten unangetastet bleiben (im oberen Beispiel der vorletzte Eintrag von v_mess).
Das Ziel ist also wieder ein v_mess von:
Wie kann ich diese Nullen am Anfang entfernen?
Es können zwischen keiner und 4 Nullen am Anfang entstehen.
Mein erster Ansatz hierzu ist der nonzeros Befehl :
Problem bei diesem Befehl ist nur das alle Nullen entfernt werden und nicht nur die zu Beginn der Aufzeichnung.
Im Vektor v_kontroll können nur Nullen zu Beginn entstehen, weil die nachfolgende Zählvariable immer hochzählt wird und dazwischen keine Null entstehen kann.
Ich hoffe ihr könnt mir helfen.
|
|
|
Seban |

Forum-Meister
|
 |
Beiträge: 600
|
 |
|
 |
Anmeldedatum: 19.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ab R2014b
|
 |
|
|
 |
|
Verfasst am: 12.11.2014, 15:35
Titel:
|
 |
Hallo,
Matlab_User85 hat Folgendes geschrieben: |
Die Anzahl der vorangestellten Nullen des Messvektors v_mess und des Kontrollvektors v_kontroll sind identisch.
...
Problem bei diesem Befehl ist nur das alle Nullen entfernt werden und nicht nur die zu Beginn der Aufzeichnung.
Im Vektor v_kontroll können nur Nullen zu Beginn entstehen, weil die nachfolgende Zählvariable immer hochzählt wird und dazwischen keine Null entstehen kann. |
Dann wende den zitierten Code doch auf v_kontroll statt v_mess an und nutze den so entstandenen vektor, um noch die Länge von v_mess anzupassen.
Alternativ mit logischem Vektor:
Grüße
_________________
Richtig fragen
Debugging
|
|
|
Matlab_User85 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 36
|
 |
|
 |
Anmeldedatum: 03.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2014, 15:58
Titel:
|
 |
Vielen Dank Seban! Funktioniert
|
|
|
Matlab_User85 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 36
|
 |
|
 |
Anmeldedatum: 03.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2014, 14:02
Titel:
|
 |
Im Rahmen meiner Auswertung bekomme ich meistens Vektoren unterschiedlicher Länge. Damit ich jedoch die Verläufe gemeinsam in einem Bild plotten kann, muss ich die Vektoren immer von Hand kürzen.
Ich möchte deshalb gern von meinem erstellten Messvektor nur zum Beispiel die ersten 500 Einträge erhalten.
Wünschenswert wäre eine Bildschirmabfrage, wo ich jedes mal eingeben kann, wieviel Einträge des Vektors ich einlesen möchte.
Ist sowas möglich?
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|