|
|
Handle Objekte kopieren ohne Schleife zu benutzen. |
|
joekey |
Forum-Century
|
|
Beiträge: 169
|
|
|
|
Anmeldedatum: 03.04.08
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: 2011b
|
|
|
|
|
|
Verfasst am: 02.02.2012, 16:08
Titel: Handle Objekte kopieren ohne Schleife zu benutzen.
|
|
Hello,
ich habe folgendes Problem:
HandleObjArray a= [obj1 obj2]
ich will dieses Array 30 mal kopieren:
b = [obj1 obj2;
obj1 obj2;
obj1 obj2;
obj1 obj2;
... ];
- so dass jede Zeile in dem ObjArray "b" eine Kopie von "a" ist, dh. hat eigenes Handle und dem Objekt zugewiesener Speicher.
Ich habe es bereit mit for-Schleife gelösst. Geht es aber auch OHNE???
Danke
joekey
|
|
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 02.02.2012, 16:17
Titel:
|
|
wenns n normales array is sollte ja repmat gehn. kann das aber grade nicht testen. oder wenns immer 30 mal ist kannst du dann nicht schreiben b=[a;a;a;a;a...] kenn mich mit obj arrays net aus.
|
|
|
joekey |
Themenstarter
Forum-Century
|
|
Beiträge: 169
|
|
|
|
Anmeldedatum: 03.04.08
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: 2011b
|
|
|
|
|
|
Verfasst am: 03.02.2012, 11:43
Titel:
|
|
Hello,
Zitat: |
wenns n normales array is sollte ja repmat gehn. |
... ja das geht, man bekommt aber 30 Handles die auf das erste Objekt hinzeigen (es sind also keine Kopien)... ergo, wenn ich eine Eigenschaft von Obj 22 ändere, dann ist diese Eigenschaft für alle Objekte in der Array geändert.... was eben nicht gewollt ist.
Zitat: |
oder wenns immer 30 mal ist kannst du dann nicht schreiben b=[a;a;a;a;a...] |
... ist auch nicht die Lösung, da die 30 Objekte nur ein Beispiel war (dies kam aber nicht von meinem Posting heraus - sorry). Die Anzahl der Objekte ist ändert sich dynamisch.
Werde bald ein Beispiel beifügen.
LG
joekey
|
|
|
joekey |
Themenstarter
Forum-Century
|
|
Beiträge: 169
|
|
|
|
Anmeldedatum: 03.04.08
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: 2011b
|
|
|
|
|
|
Verfasst am: 03.02.2012, 13:30
Titel:
|
|
Hier noch ein Testscript:
Testklasse: cTestObj
Run script:
Mein Ziel ist das Ergebniss von Schritt 4 aber ohne Schleife benutzen zu müssen.
Danke
LG
Joekey
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 03.02.2012, 15:49
Titel:
|
|
Hallo
so könnte man das lösen
also zuerst replizieren, dann copy erstellen
|
|
|
joekey |
Themenstarter
Forum-Century
|
|
Beiträge: 169
|
|
|
|
Anmeldedatum: 03.04.08
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: 2011b
|
|
|
|
|
|
Verfasst am: 03.02.2012, 22:33
Titel:
|
|
Hello Denny,
hehe.... so einfach. Genau das habe ich gesucht und ich war mir sicher, dass es geht.
Für die die mitlesen, hier noch ein Performancevergleich beim kopieren von 1 Milion Objekten:
Thx
joekey
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.02.2012, 12:06
Titel:
|
|
Hallo,
wenn es sowieso nur darum geht, den Defaultconstruktor aufzurufen, so geht es noch deutlich einfacher/schneller:
Ergebnis (auf meinem Rechner): 25s / 50s / 2s.
Ciao,
Titus
|
|
|
joekey |
Themenstarter
Forum-Century
|
|
Beiträge: 169
|
|
|
|
Anmeldedatum: 03.04.08
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: 2011b
|
|
|
|
|
|
Verfasst am: 06.02.2012, 21:14
Titel:
|
|
Hello Titus,
richtig, es ist schneller wenn man den Defaultconstruktor aufruft.
Allerdings muss ich in meinem Fall ein existierendes Objekt clonen.
LG
Jozef
|
|
|
joekey |
Themenstarter
Forum-Century
|
|
Beiträge: 169
|
|
|
|
Anmeldedatum: 03.04.08
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: 2011b
|
|
|
|
|
|
Verfasst am: 08.02.2012, 19:02
Titel:
|
|
Hallo Titus,
ich hätte noch eine Frage zu deiner letzten Idee:
Zitat: |
tic
objArr2 = cTestObj.empty(1000000, 0);
objArr2(1000000, 1) = cTestObj;
toc |
wenn ich jetzt cTestObj mit 2 argumenten erstellen wollte
... aber so dass der Constructor die übergebene Array Zeilenweise als Argument verwendet... also 1. Obj erste Zeile, 2. Obj zweite Zeile...
In meinem Beispiel wird bei der erstellung des ersten Objects die gesamte Array übergeben und die weiteren Obj bekommen bei der Erstellung keine Inputargumente. Das führt zu einem Error.
Hättest du/jemand auch eine Idee?
LG
joekey
|
|
|
|
|
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.
|
|