|
|
entfernen leerer zellen (performance) |
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2014, 12:41
Titel: entfernen leerer zellen (performance)
|
 |
Hallo,
ich habe einen Flaschenhals in meinem Programm entdeckt. Um einen Schleifendurchlauf zu beschleunigen suche ich in einem Cellarray die leeren Felder (sind immer die letzten) und entferne diese. Aber das entfernen dauert sehr lange, da die Funktion zwischen 10000 und 200000 mal aufgerufen wird. Beispielhaft habe ich mal einen Code geschrieben der das Problem verdeutlichen soll. Dabei ist die Zeile 7 diejenige die mit Abstand am langsamsten ist. Gibt es einen Befehl oder eine bessere Möglichkeit die gefundenen leeren Zellen zu löschen?
|
|
|
|
|
Vito |

Forum-Guru
|
 |
Beiträge: 315
|
 |
|
 |
Anmeldedatum: 02.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2014, 12:53
Titel:
|
 |
Hi,
so geht das
Warum lässt du es über eine Schleife laufen?
MfG,
Vito
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2014, 13:06
Titel:
|
 |
Hallo Vito,
die Schleife ist natürlich unnötig. Habe ich nur eingebaut und zu verdeutlichen wie langsam das ganze ist. Dein Befehlt cellfun(@isemtpy, testarray) ist übrigends viele male langsamer als cellfun('isempty', testarray)
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2014, 14:48
Titel:
|
 |
Nach ein wenig experementieren habe ich es geschafft minimal schneller zu machen:
Hat jemand noch eine schnellere Lösung?
P.S. die Schleife ist nur zur "Simulation" der Funktionsaufrufe da, sonst wäre der unterschied nicht mehr messbar
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2014, 15:06
Titel:
|
 |
vergesst den letzten Post. beide methoden sind exakt gleich schnell (bei der zweiten wurde Eintrag 50 ignoriert, bei meinem array sind aber zb die Einträge 1 bis 50 belegt, erste danach sind alle leer)
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2014, 10:00
Titel:
|
 |
kennt keiner eine möglichkeit das schneller zu machen?
|
|
|
Alex4456 |

Forum-Anfänger
|
 |
Beiträge: 47
|
 |
|
 |
Anmeldedatum: 17.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2014, 10:06
Titel:
|
 |
Hallo
Welchen Grund hat es, das CellArray leer zu machen?
Speicher in einem logical Vektor welche Zellen leer sind und arbeite nicht mit diesen? Wäre das eine Möglichkeit? Sollte schneller gehen
Grüße
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2014, 14:37
Titel:
|
 |
Alex4456 hat Folgendes geschrieben: |
Hallo
Welchen Grund hat es, das CellArray leer zu machen?
Speicher in einem logical Vektor welche Zellen leer sind und arbeite nicht mit diesen? Wäre das eine Möglichkeit? Sollte schneller gehen
Grüße |
Damit hast du mich auf eine Idee gebracht. Ich entferne die leeren CellArrays damit diese nicht in einer Schleife mitlaufen. Aber mit dem Befehl
kann ich das natürlich umgehen. (Die Schleife geht vom letzten Eintrag bis zum ersten falls nötig) Läuft jetzt viele Male schneller Merci
|
|
|
|
|
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.
|
|