Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Mehrere NaN´s in einem Vektor interpolieren

 

Mayhem8000
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2019, 15:17     Titel: Mehrere NaN´s in einem Vektor interpolieren
  Antworten mit Zitat      
Hallo an alle,

ich bin neu in MatLab und muss für meine Abschlussarbeit mit MatLab Daten auswerten.

Es handelt sich um eine optische Vermessung. Ich habe 3 Vektoren (X,Y,Z) jeder Vektor ist ca. 3,5 Mio Zeilen lang.
Bei der optischen Vermessung konnte nicht für jeden X und Y Wert ein Z-Wert gemessen werden. In diese Zeile wurde ein NaN eingetragen. Oft sind es mehrere NaN´s hintereinander.

Ich habe leider nichts passendes gefunden bisher. Die Frage ist wie ich es schaffe das ich die NaN´s interpolieren kann. Am besten wäre eine lineare Interpolation.

Ich hoffe das ihr mir hier helfen könnt!

Mit vielen Grüßen
Mayhem8000
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 10.941
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.07.2019, 12:20     Titel: Re: Mehrere NaN´s in einem Vektor interpolieren
  Antworten mit Zitat      
Hallo Mayhem8000,

Man kann eine passende Lösung finden, wenn man eine Internet-Suchmaschine nach "matlab fill nan in matrix" fragt.
Das gefundene fillmissing passt allerdings nur, wenn die X- und Y-Werte eine Matrix beschreiben. Ob sie das tun, wäre klar, wenn du einen kleinen Beispiel-Datensatz zur Verfügung stellen würdest.
interp2 könnte zu deinen Daten passen. schaue mal in die Dokumentation.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Mayhem8000
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2019, 07:45     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die schnelle Antwort.
Ich würde gerne nur meinen Vektor Z interpolieren da ich diesen auch einzeln in mein Skript lade.

Ich muss dafür ja auch diesen Vektor Zeile für Zeile anschauen in einer Art Schleife und jeden NaN dann interpolieren. Oder habe ich hier ein Denkfehler?

Ich bin mir leider auch nicht sicher wie ich diese Schleife am besten aufbaue.

Gruß
Mayhem8000
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 10.941
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.07.2019, 13:21     Titel:
  Antworten mit Zitat      
Hallo Mayhem8000,

Zitat:
Ich muss dafür ja auch diesen Vektor Zeile für Zeile anschauen in einer Art Schleife und jeden NaN dann interpolieren.

Hattest du meine Antwort gelesen?
Wenn du ein paar (kleine) Beispiel-Daten postest, wird klar, in welchem Format die Daten vorliegen und ob fillmissing oder interp2 besser geeignet ist. Dann könnte man dir auch einen Beispielcode schreiben.

Zitat:
Ich bin mir leider auch nicht sicher wie ich diese Schleife am besten aufbaue.

Am besten verwendest du die bereits vorhandenen und getesteten oben genannten Tools.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Mayhem8000
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2019, 14:55     Titel:
  Antworten mit Zitat      
Hallo,

sodele im Anhang ist ein Beispiel wie die Daten aufgebaut sind.
ich der Datei selber sind Messwerte die nicht gemessen werden konnten mit *** eingetragen. Wenn ich diese importiere dann werden die durch NaN ersetzt.

Von links nach rechts sind die Werte die X,Y,Z-Achse. Wie gesagt geht es Primär um den rechten Vektor der die fehlenden Messwerte enthält.

Gruß
Mayhem8000

Beispieldaten.txt
 Beschreibung:

Download
 Dateiname:  Beispieldaten.txt
 Dateigröße:  205.32 KB
 Heruntergeladen:  7 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 10.941
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.07.2019, 13:15     Titel:
  Antworten mit Zitat      
Hallo Mayhem8000,

Mit
Code:
Miss = isnan(Data(:,3))

bekommst du die fehlenden Wert. Nun kannst du per interp2 und Data(~Miss, :) die existierenden Werte als Input verwenden, und die fehlenden Werte interpolieren lassen. Probiere es mal aus und schreibe noch mal, falls es nicht funktioniert.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2019 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.