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

Nans und 0 aus Matrix löschen

 

xeonus
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2019, 14:33     Titel: Nans und 0 aus Matrix löschen
  Antworten mit Zitat      
Habe eine Matrix in der wild verteilt aber gruppiert Werte verstreut sind in etwa so:

2 3 4 0 0 0 0 0 0
2 6 7 9 0 9 0 0 0
6 7 8 8 8 8 0 0 0
7 7 8 6 3 4 0 0 0
0 0 0 7 8 2 3 2 1
0 0 0 0 0 0 8 6 5

Ich würde gerne alle 0 und NaNs raus bekommen und, dass die Matrix sich vertikal zusammen schiebt, da meine Werte Spaltenweise sortiert sind.

Hab es mit M(M==0)=[] probiert, hier wird die Dimension aber verändert.

Danke schon mal für jede Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.11.2019, 16:44     Titel:
  Antworten mit Zitat      
Hallo,

Mir ist das noch nicht ganz klar. Was soll denn für das Beispiel am Ende rauskommen?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
xeonus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2019, 00:33     Titel:
  Antworten mit Zitat      
Bei der Matrix:
2 3 4 0 0 0 0 0 0
2 6 7 9 0 9 0 0 0
6 7 8 8 8 8 0 0 0
7 7 8 6 3 4 0 0 0
0 0 0 7 8 2 3 2 1
0 0 0 0 0 0 8 6 5

soll z.B die erste und zweite Zeileso ausschauen:
2 3 4 9 8 9 3 2 1
2 6 7 8 3 8 8 6 5

also die Nullen und Nans raus und die Zahlen rücken auf nach oben, jedoch nicht nach links. Da meine Werte Spaltenweise sortiert sind und sonst diese Ordnung verloren geht.
Als Background:
ich habe Werte verschiedener Sensoren. Sensor 1 erste Spalte, Sensor 2 zweite...
Die Messung startete immer schon bevor der Sensor Werte lieferte, dadurch kommen die Nullen. Und durch das "Auf die Selbe Größe bringen" der Matritzen auch die NaNs.
Da ich 5 mal die selbe Messung mit den Sensoren nun nebeneinander in einer Matrix habe, mag ich nun den Durchschnitt nehmen. Und deswegen mag ich die NaNs und 0 raus bringen.
Danke schon mal für deine Hilfe Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.11.2019, 10:56     Titel:
  Antworten mit Zitat      
Hallo,

die ersten beiden Zeilen waren mir auch noch klar, aber was soll bei den weiteren Zeilen in den hinteren Spalten passieren?

Wenn es dir nur darum geht, die fehlenden Werte bei der Berechnung von Statistiken zu ignorieren, dann kannst du die Nullen durch NaN ersetzen und dann die 'omitnan' - Option von mean etc. verwenden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
xeonus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2019, 21:58     Titel:
  Antworten mit Zitat      
Hallo,

Nullen durch NaN ersetzen ist sicher gut. - hab ich gleich gemacht.

Das Problem nochmal anders ausgedrückt:
Ich würd gerne den Durchschnitt der ersten nicht NaN-Werte jeder Spalte.

Die Matritzen sind 644x6 und in nur 35-45 der 644 Zeilen gibt es ~NaN. Die Werte sind chronologisch sortiert und deswegen hätte ich gerne den Durchschnit aller zuerst kommenden, dann aller Zweiten. Es ist jedoch auch so, dass die in den 644 nicht alle gleichzeitig anfangen. z.B kann bei Zeile 100 der Werteblock vom 40 Werten starten und bei der nächten Spalte bei Zeile 300 ein Werteblock von 44.

Hoffe ich konnte dir das besser erklären.

Danke für deine Bemühungen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.11.2019, 23:38     Titel:
  Antworten mit Zitat      
Hallo,

das klingt so, als ob man mit find und einer for-Schleife über die Spalten arbeiten muss.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.