WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Schlecht besetzte Matrix plotten

 

Cube11
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2016, 18:08     Titel: Schlecht besetzte Matrix plotten
  Antworten mit Zitat      
Hallo zusammen,
normalerweise hat mir das Forum immer weiter geholfen, aber in diesem Fall muss ich einen eigenes Thema aufmachen.

Ich bekomme Messwerte im folgenden Format (variable Anzahl an Zeilen und Spalten):
Code:

data = [1,     2,      3,     NaN, 4;
            NaN, NaN, NaN, NaN, NaN;
           5,      6,     7,     NaN,  8]
 


Ausschnitt zeigt nur den prinzipiellen Aufbau. Die Matrix besteht aus Messwerten, hauptsächlich aber aus NaN's. Auch ganze Zeilen und Spalten voller NaN's. Der Index der Zeile(x-Wert) und Spalte(y-Wert) ist relevant um den z-Wert zuordnen zu können.

Ziel ist es, die Matrix zu plotten. Zum Beispiel mit der Funktion pcolor.

Hierfür habe ich zuerst alle NaN-Zeilen und Spalten gelöscht. Das Problem ist jedoch dass ich nun meine x,y Information verlieren, da sich die Matrix verkleinert.

Habe versucht die verkleinerte Matrix wieder zu interpolieren, um auf die ursprüngliche Größe zu kommen. Jedoch habe ich keinen Bezugswert mehr um die Positionen der z-Werte zu bestimmen.

Hoffe ich habe mich einigermaßen verständlich ausgedrückt. Vielleicht weiß jemand eine Herangehensweise oder hat einen Tipp für mich.

Vielen Dank im Voraus.
Cube11
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.02.2016, 18:30     Titel: Re: Schlecht besetzte Matrix plotten
  Antworten mit Zitat      
Hallo Cube11,

Was wäre denn für die gezeigte Matrix das Ziel?

Vielleicht hilft dies: http://www.mathworks.com/matlabcent.....xchange/4551-inpaint-nans

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2016, 22:35     Titel:
  Antworten mit Zitat      
Hallo Jan,

für die gezeigte Matrix das Ziel...
Ich denke du meinst was angezeigt werden soll. Also grundsätzlich ist das von Dir empfohlene m-File nicht schlecht. Jedoch dürfen die NaN Werte nicht im Plot angezeigt werden, da 0 ein gültiger Wert ist. (z.B. mit pcolor)
Sprich in der ganzen Matrix sind schon zusammenhängende Werte, jedoch getrennt von NaN's. Sozusagen muss ich über NaN's zwischen gültigen Werten interpolieren, jedoch bei Bereichen in denen keine gültigen Werte sind die NaN's stehen lassen.

Werde mal versuchen die ganze Matrix in kleinere Matrizen zu unterteilen, und immer nur kleinere Bereiche zu interpolieren falls gültige Werte darin vorkommen.

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

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.02.2016, 09:20     Titel:
  Antworten mit Zitat      
Hallo Cube11,

Ich kann Dir nicht folgen.

Zitat:
Also grundsätzlich ist das von Dir empfohlene m-File nicht schlecht. Jedoch dürfen die NaN Werte nicht im Plot angezeigt werden, da 0 ein gültiger Wert ist.

Was hat das eine mit dem anderen zu tun?

Zitat:
Sprich in der ganzen Matrix sind schon zusammenhängende Werte, jedoch getrennt von NaN's.

Sind sie nun zusammenhängend oder getrennt?

Zitat:
Sozusagen muss ich über NaN's zwischen gültigen Werten interpolieren, jedoch bei Bereichen in denen keine gültigen Werte sind die NaN's stehen lassen.

Das klingt widersprüchlich. Sind die NaNs nicht die ungültigen Werte?

Kannst Du eine Zeichnung von Hand herstellen, wie für die gezeigte Matrix die gewünschte Ausgabe aussehen soll?
Ich vermute, Du hast schon beschrieben, was Du suchst:
Zitat:
Hierfür habe ich zuerst alle NaN-Zeilen und Spalten gelöscht. Das Problem ist jedoch dass ich nun meine x,y Information verlieren, da sich die Matrix verkleinert.
Habe versucht die verkleinerte Matrix wieder zu interpolieren, um auf die ursprüngliche Größe zu kommen. Jedoch habe ich keinen Bezugswert mehr um die Positionen der z-Werte zu bestimmen.

Ich verstehe nur nicht, was das bedeutet. Wieso verlierst Du die X-Y-Information? Du könntest ja auch einen X- und Y-Vektor erstellen und die entsprechenen Elemente dort auch löschen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2016, 19:45     Titel:
  Antworten mit Zitat      
Hallo Jan,
das Problem habe ich gelöst aber dazu später mehr. Will zuerst noch etwas auf deine Fragen eingehen. Handschriftlich eine Matrix skizzieren fällt mir schwer, so versuche ich es nochmals zu erklären.

Man nehme zum Beispiel eine Dreiecksfläche, diese gehört zusammen. Diese Fläche liegt sozusagen in der Matrix. Die zusammenhängende Werte ergeben als Fläche ein Dreieck. Nun sind aber die Punkte voneinander getrennt mit NaN's. Ziel war es die NaN's zwischen den gültigen Werten zu interpolieren, so dass zum Beispiel das Dreieck wieder als Dreieck geplottet werden kann. Falls dich das Thema weiter interessiert kannst du gerne nochmals nachfragen.

Nun zum Lösungsansatz:
Ich habe die Gesamtmatrix mit einem Algorithmus in kleinere Matrizen zerlegt. In jeder kleinen Matrix suche ich nach gültigen Werten, falls welche darin enthalten sind, dann wird darüber gemittelt und jedes Element in der Matrix bekommt diesen Wert.
Um das Ganze zu glätten werden die kleine Matrizen sowohl in x als auch y Richtung verschoben und der Algorithmus wiederholt angewandt.

Gruß Cube 11
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button 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.