|
|
|
Löschen von doppelten Werten innerhalb einer Matrix |
|
| udo99 |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 28.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.11.2011, 23:45
Titel: Löschen von doppelten Werten innerhalb einer Matrix
|
 |
Hallo, nach 4 Stunden verzweifelten rumversuchen möchte ich hier um Hilfe fragen, bevor mein Laptop aus dem Fenster fliegt.
Also ich habe 3 Matrizen 28x984 28x984 und 28x981. Es sollte 981 Werte für Spannungen im Material geben, das FEM Programm hat an genau vier Knoten verschiedene Spannungen, daher 984 statt 981. Ich muss diesen Fehler nun kompensieren und 3 Werte löschen. Meine Idee war folgende:
Nur löscht der die Spalten nicht für das jeweilige k, sondern springt weiter. Ich verstehe nicht wie Matlab da rechnet.
Mit ~ifequal und unique etc. bin ich auch nicht glücklich geworden, wäre nett wenn ihr mir helft.
Gruß Udo.
|
|
|
|
|
|
| Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 29.11.2011, 08:21
Titel:
|
 |
Ohne die Daten selber ist es nicht ganz so einfach zu beantworten. Grundsätzlich ist aber der Vergleich zweier DOUBLE Werte immer kritisch, siehe Mini Beispiel:
Andreas
|
|
|
|
| eupho |

Forum-Meister
|
 |
Beiträge: 777
|
 |
|
 |
Anmeldedatum: 07.01.09
|
 |
|
 |
Wohnort: Marburg
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 29.11.2011, 08:54
Titel:
|
 |
|
Beim Vergleich zweier Doubles immer >, >=, <, <= benutzen (mit einem Intervall, z.B. [x-eps, x+eps])
|
|
|
|
| udo99 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 28.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.11.2011, 12:10
Titel:
|
 |
Also ich habe eine Spalte mit gleichen Werten (:,1), immer 4 Zeilen von 1000 verschwinden nicht, da die restlichen Spaltenzeilen unterschiedliche Werte zeigen. Mir ist eigtl völlig gleich welche Zeilen er löscht, hauptsache er löscht 3 von 4 Zeilen, sodass mein Auswertungsskript funktioniert.
Wenn ich Matlab wäre und ich würde merken, ohh Zeile 667 ist unterschiedlich, dann würde ich laut obiger Schleife diese doch löschen, mit k= 668 weiterarbeiten, wieder unterschiedlich, wieder löschen, solange bis alle 3 überflüssigen Zeilen weg sind?!?
Nur warum tut er das nicht, ich habe mir das mal im Debug Mode angeschaut, er löscht die Zeilen zwar, nur ein paar k's später, für mich willkürlich?!
Gruß
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 29.11.2011, 12:59
Titel:
|
 |
wozu is das
danach kommt gleiche else. da kannst doch gleich ~= machen
oder?
außerdem löscht du eine zeile und machst danach k+1 was dazu führt das wenn 2 zeilen hintereindander die bedingung erfüllen würde er sich die eine garnicht mehr anguckt.
|
|
|
|
| udo99 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 28.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.11.2011, 13:52
Titel:
|
 |
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 29.11.2011, 14:12
Titel:
|
 |
da ich deine daten nicht da hab kann ich das grade nicht testen aber versuchs mal
|
|
|
|
| udo99 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 28.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.11.2011, 23:05
Titel:
|
 |
Sehr geil, es klappt !!!
Also könnt ihr mir abschließend nochmal sagen, warum das jetzt nur mit einer while und nicht mit einer if Schleife funktioniert ?? Nur fürs Verständnis.
Vielen Dank, Udo.
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 30.11.2011, 08:49
Titel:
|
 |
kannst ja mal duchlaufen lassen. ich weis auch nicht genau warum aber anscheinend kann man in der forschleifen die laufvariable nicht verändern.
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 30.11.2011, 10:11
Titel:
|
 |
Hallo Winkow,
Das Verhalten von "for k = 1:2; k=10; end" wird ausdrücklich in "doc for" erklärt. Siehe "Remarks".
Gruß, Jan
|
|
|
|
|
|
|
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.
|
|