|
tristan |

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 14.03.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 15:30
Titel: ismember
|
 |
Hallo,
Ich möchte in einem Vektor und einer Matrix nach 'Na' suchen und das dann rauslöschen.
Wie fkt. das richtig?
Dank!
|
|
|
|
|
keloid |

Forum-Century
|
 |
Beiträge: 216
|
 |
|
 |
Anmeldedatum: 04.10.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.5.0.342 (R2007b)
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 15:42
Titel:
|
 |
Also für nen Vektor schlage ich vor:
Für den Matrixfall funktioniert das so leider nicht, da sonst als Ergebnis ein Vektor mit allen gültigen Ergebnissen herauskommt.
Edit:
Versuchs bei der Matrix mal mit
Zuletzt bearbeitet von keloid am 19.03.2008, 15:48, insgesamt einmal bearbeitet
|
|
|
tristan |
Themenstarter

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 14.03.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 15:46
Titel:
|
 |
Ok Danke für y funktioniert das so gut.
Hat jemand eine Idee für die X Matrix?
vg
|
|
|
keloid |

Forum-Century
|
 |
Beiträge: 216
|
 |
|
 |
Anmeldedatum: 04.10.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.5.0.342 (R2007b)
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 15:49
Titel:
|
 |
Mist, Du warst ein Stück schneller als mein Edit ;)
Schau Dir einfach mein zweites Beispiel an.
|
|
|
tristan |
Themenstarter

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 14.03.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 16:05
Titel:
|
 |
In der letzten Zeile kommt die Fehlermessage:
??? Subscript indices must either be real positive integers or logicals.
Error in ==> RA_MT_fine at 12
errX(f_errX, = [];
Kannst Du mir auch bitte Dein Vorgehen erklären. Ich verstehe nur die 1.Zeile richtig.
Danke!
|
|
|
keloid |

Forum-Century
|
 |
Beiträge: 216
|
 |
|
 |
Anmeldedatum: 04.10.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.5.0.342 (R2007b)
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 16:25
Titel:
|
 |
Klaro.
In f_errX stehen jetzt die Indizes aller NaN-Werte in fortlaufender Nummerierung. (1,1) = 1, (1,2) = 2, (2,1) = spaltenanzahl + 1, etc.
Damit berechne ich den Zeilenindex der Zeilen, in denen NaN-Werte gefunden wurde. Und das ist auch das Problem, stelle ich gerade fest, weil es nur dann funktioniert, wenn die Spaltenanzahl nicht kleiner als die Zeilenanzahl ist. Die Verbesserung muss ich mir mal durch den Kopf gehen lassen.
Hier wird jetzt einfach errX gleich X gesetzt und danach werden die ungültigen Zeilen (Zeilenindizes stehen in f_errX) entfernt, indem alle Elemente in den Zeile mit ungültigem Zeilenindex als leeres Element gesetzt werden.
|
|
|
tristan |
Themenstarter

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 14.03.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 16:32
Titel:
|
 |
Zitat: |
indem alle Elemente in den Zeile mit ungültigem Zeilenindex als leeres Element gesetzt werden.
|
bedeutet das dann leere "stellen" in meiner Datenmmatrix sind?
es müsste halt gleich die komplette zeile gelöscht werden sobald in einer spalte NaN ist.
Ich bin halt noch Matlab neuling und ruder da ganz schön rum
|
|
|
keloid |

Forum-Century
|
 |
Beiträge: 216
|
 |
|
 |
Anmeldedatum: 04.10.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.5.0.342 (R2007b)
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 16:36
Titel:
|
 |
Hm, ich bin auch doof, für den Zeilenindex, muss mod() mit der Zeilenanzahl, also size(X,1) gebildet werden, nicht mit der Spaltenanzahl.
Also müsste es mit
funktionieren.
|
|
|
keloid |

Forum-Century
|
 |
Beiträge: 216
|
 |
|
 |
Anmeldedatum: 04.10.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.5.0.342 (R2007b)
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 16:38
Titel:
|
 |
Die Sache mit den "leeren Elementen" ist die:
Man kann aus einer Matrix nicht einfach ein Element streichen, denn sonst würden die Dimensionen nicht mehr passen. Daher würde Matlab eigentlich versuchen, die Matrix in einen fortlaufenden Vektor umzuwandeln.
Indem aber alle Elemente der "bösen" Zeile entfernt werden, sind wieder alle Spaltenlängen gleich, und die Matrix lässt sich wieder als Matrix zusammensetzen.
|
|
|
tristan |
Themenstarter

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 14.03.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 16:42
Titel:
|
 |
Danke nochmal für Deine Mühen.
Leider kommt wieder in der Zeile mit [] derselbe Fehler.
Ich weiß nicht ob ich mich richtig ausgedrückt habe wegen der Zeile löschen.
BSP:
1 4 5
3 NaN 7
3 4 1
Ziel:
1 4 5
3 4 1
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 16:56
Titel:
|
 |
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
tristan |
Themenstarter

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 14.03.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.03.2008, 17:27
Titel:
|
 |
Genial kurz !
Danke so geht es.
any sucht ja die komplette matrix nach NaN ab.
Kannst Du mir bitte die Zeile genau erklären?
danke!
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 22.03.2008, 17:31
Titel:
|
 |
Sorry für die späte Rückmeldung...
isnan(X) liefert eine logische Matrix derselben Dimensionen wie X,
also dort wo in X ein NaN steht, steht in isnan(X) eine 1, 0 sonst.
any(XX,2) liefert einen logischen Vektor mit ebenso vielen Zeilen
wie XX, mit einer 1 in jeder Zeile, in der XX ein von 0 verschiedenes
Element hat. Wir finden also die Zeilen, die an beliebiger Spalte ein NaN
enthalten.
Du kannst das Ergebnis von any(isnan(X),2) (wieder ein logical vector
mit so vielen Zeilen wie X) als Zeilenindizes benutzen.
Also
ind ist eben
indiziert die Zeilen, an denen ind 1 ist, inklusive aller Spalten.
Ist das verständlich?
Gib doch mal die Befehle aufgedröselt ein:
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
tristan |
Themenstarter

Forum-Century
|
 |
Beiträge: 106
|
 |
|
 |
Anmeldedatum: 14.03.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.04.2008, 15:01
Titel:
|
 |
Sorry auch für meine verspätete Antwort
Vielen Dank für Deine Hilfe habe es jetzt verstanden.
VG
|
|
|
Kia |

Forum-Fortgeschrittener
|
 |
Beiträge: 89
|
 |
|
 |
Anmeldedatum: 02.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.02.2011, 18:31
Titel:
|
 |
Ich habe hier auch ein ähnliches Problem und möchte deshalb es in diesem schönen Thread beschreiben.
wie kann ich aus einer Matrix, jene Spalten löschen, die ausschließlich aus NaN bestehen. Dabei sollen andere Spalten die eine Mischung aus NaN und Zahlen beinhalten unverändert bleiben.
Einzelne Spalten kann ich so löschen:
DAmit könnte ich die erste Spalte löschen!
Es ist aber recht kompliziert und außerdem kriege ich es nicht als Schleife für alle Spalten hin!
Ich wäre euch für jeden Vorschlag dankbar!
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|