|
|
Doppelte Einträge in cell Array löschen |
|
Marc |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.10.2017, 14:39
Titel: Doppelte Einträge in cell Array löschen
|
|
Guten Tag,
ich habe, wahrscheinlich das recht simple Problem, dass ich zwei cell Arrays miteinander vergleichen möchte und anschließend die doppelten Werte löschen möchte.
c1 =
9x1 cell array
[159.7037]
[100.8608]
[ 92.0261]
[ 64.4189]
[120.9400]
[120.9400]
[120.9400]
[120.9400]
[ 62.0100]
und
c2 =
4×1 cell array
[120.9400]
[120.9400]
[120.9400]
[120.9400]
Ich habe versucht, die doppelten Einträge der obrigen cell Arrays c1 und c2 aus c1 durch
zu löschen, jedoch kommt die Fehlermeldung :
Error using cell/ismember
Input A of class cell and input B of class cell must be cell arrays of character vectors, unless one is a character vector.
Ich muss vermutlich die Ausgabe meines Cell Arrays verändern. Kann mir da jemand weiterhelfen?
mit freundlichen Grüßen
Marc
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.448
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.10.2017, 15:41
Titel:
|
|
Hallo,
wenn in den Cells ohnehin nur jeweils ein Eintrag steht, dann würde ich mich cell2mat einen numerischen Vektor daraus machen.
Grüße,
Harald
|
|
|
Marc |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.10.2017, 17:59
Titel:
|
|
Dankeschön, klappt wie gewollt.
Noch ein kleine Frage: Gibt es eine Möglichkeit die einzelnen Zeilen der Spalte nacheinander auszulesen? Ich habe es mit einer For - Schleife versucht
So kommt zwar:
leistung1 =
159.7037
leistung1 =
100.8608
leistung1 =
92.0261
leistung1 =
163.9763
....... allerdings wiederholt sich die Ausgabe durch die Schleife k mal. Ich bräuchte es allerdings nur einmal. Ist dies ohne Schleife eleganter zu Lösen?
mit freundlichen Grüßen
Marc
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.448
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.10.2017, 18:04
Titel:
|
|
Hallo,
ich fürchte, ich verstehe die Frage nicht. Welche Ausgabe stellst du dir denn vor?
Etwa das, wenn du nur
schreibst?
Grüße,
Harald
|
|
|
Marc |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.10.2017, 18:25
Titel:
|
|
Durch c1(Index,: ) = [] erhalte ich jetzt das gewünschte Ergebnis:
c1 =
167.3345
105.6800
173.2303
121.2624
20.0000
20.0000
350.0000
300.0000
Nun möchte ich gerne die elementweise Ausgabe von c1 haben.
Also so:
leistung1 =
167.3345
leistung1 =
105.6800
leistung1 =
173.2303
und dies einmal bis zur letzten Zeile von c1. Die Monte - Carlo - Simulation wurde leider so programmiert, dass ich dieses Format benötige.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.448
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.10.2017, 19:15
Titel:
|
|
Hallo,
das war doch das, was du in deinem Beitrag von 17:59 bekommen hast?
Grüße,
Harald
|
|
|
Marc |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.10.2017, 19:47
Titel:
|
|
Genau, allerdings durchläuft es die Schleife öfter, als ich das möchte.
Nachdem ich mein gewünschtes Ausgabeziel bekomme, bekomm ich dies noch weitere 9 mal.
Daher wollte ich ursprünglich ohne For - Schleife arbeiten. Habe aber leider keine Ansatz dafür.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.448
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.10.2017, 19:59
Titel:
|
|
Hallo,
die for-Schleife wird einmal für 1 bis n durchlaufen, für jeden Eintrag genau 1 Mal...
Grüße,
Harald
|
|
|
Marc |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.10.2017, 21:21
Titel:
|
|
Ich habe jetzt nochmal einen anderen Ansatz.
Dadurch bekomme ich :
leistung1 =
164.7982 104.0782 168.6321 118.0436 20.0000 20.0000 350.0000 300.0000
obj.setLeistung ordnet jetzt allerdings jedem Element den k - ten Wert von leistung1 zu, sodass alle mit 300.0000 angesetzt werden. Eigentlich müsste aber das erste Element 164.79 haben, das zweite 104.07 usw...
Gibt es eine Möglichkeit dies zu tun?
Bei obj.setLeistung(roundn(leistung1(),-3)) kommt direkt die Fehlermeldung:
Subscripted assignment dimension mismatch
mit freundlichen Grüßen
Marc
|
|
|
|
|
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 - 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.
|
|