|
|
Schnellere Alternative zu vertcat oder A = [A;B] |
|
Ltd. Dan |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 12.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.11.2009, 19:48
Titel: Schnellere Alternative zu vertcat oder A = [A;B]
|
 |
Hallo,
folgendes Problem. Ich möchte aus einer Matrix A mit Nx1 Elementen Bestimmte Werte Auslesen und diese wieder in eine Matrix B mit Mx1 schreiben.
A = [a,b,c,d,e,f,g,h,i]
Das Problem ist das ich nur einzelne Werte NICHT lesen möchte (z.B. a und h), die Abstände dazwischen sind aber unterschiedlich und als gesonderte Information vorhanden. Ich habe eine Methode mit der es geht, allerdings dauert es ~26 Sekunden. Es handelt sich um 2.035.061 Uint16 Werte.
P.S.: Mit vertcat anstatt A=[A;B] dauert es fast genauso lange.
Hoffe jemand hat eine Idee, erwarte keine fertige Lösung.
Danke
Daniel
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.11.2009, 20:25
Titel:
|
 |
Hallo,
dazu bräuchte man weitere Informationen... insbesondere:
was steht in Px?
was in Elements?
Ich habe mal versucht, das auszutesten, aber das scheint im wesentlichen nur am Ende was abzuschneiden?
Zitat: |
als gesonderte Information |
vermutlich in PxPos... aber wie ist PxPos zu interpretieren?
Grüße,
Harald
|
|
|
Ltd. Dan |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 12.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 11:11
Titel:
|
 |
Hallo,
Entschuldigung für den unverständlichen Code.
In Elements steht tatsächlich die Länge von PxPos.
PxPos ist ein Array in dem die Startpositionen der einzelnen Informationen stehen. Also beinhaltet Elements die Gesamtzahl der Informationen die ausgelesen werden sollen. Bei den Informationen handelt es sich um Messwerte die durch Kennungsbytes getrennt sind. Genau diese Kennungsbytes sollen aus dem Array gelöscht werden. Es Soll ein Array mit reinen Messwerten entstehen.
|
|
|
Titus |

Forum-Meister
|
 |
Beiträge: 871
|
 |
|
 |
Anmeldedatum: 19.07.07
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 11:41
Titel:
|
 |
Hallo,
wenn Du nur einzelne Werte nicht haben möchtest, warum machst Du dann nicht genau das?
Titus
|
|
|
Ltd. Dan |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 12.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 12:14
Titel:
|
 |
Hallo,
Vielen Dank für den Vorschlag. Mit dem Löschen hatte ich es auch schon versucht, allerdings in einer For-Schleife. Also Achtung! Hier kommt nochmal mein NEGATIV Beispiel:
Elapsed time is 119.422000 seconds.
Der Aufruf von Titus liefert das selbe Ergebnis, allerdings deutlich schneller.
Elapsed time is 0.172000 seconds.
Das ist sehr akzeptabel. Kann mir einer von den Profis, noch kurz erklären, weshalb die Laufzeit so dramatisch abweicht. Was tut MatLab intern bei dem Aufruf Current(PxPos) = [];
Danke für gute Hilfe
Daniel
|
|
|
Titus |

Forum-Meister
|
 |
Beiträge: 871
|
 |
|
 |
Anmeldedatum: 19.07.07
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 18:14
Titel:
|
 |
Hallo,
generell: MATLAB ist (mittlerweile) auch bei Schleifen schnell. Ausnahme: wenn sich die Größe eines Vektors in jedem Schleifendurchlauf ändert. Warum? Grob gesprochen muss MATLAB dann jedesmal einen neuen Speicherbereich suchen mit der richtigen Größe und die bisherigen Daten dorthin kopieren, und den bisherigen Bereich freigeben.
Natürlich stellt sich MATLAB nicht ganz so naiv dar, wie beschrieben, aber es beschreibt das Problem, welchem sich MATLAB gegenüber steht ...
Titus
|
|
|
|
|
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.
|
|