|
|
|
Geschwindigkeit Schleife Struktur |
|
| Hans |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.09.2011, 18:45
Titel: Geschwindigkeit Schleife Struktur
|
 |
Hallo,
wenn ich eine Schleife benutzen muss, erhöht sich die Geschwindigkeit enorm, wenn ich Länge vordefiniere.
Z.B.
a=zeros(10^8,1)
for i=1:10^8
a(i)=...
end
Nun möchte ich ganze Matrizen in einer Struktur
A={} speichern und die Länge dieser vordefinieren. Die Schleife hätte somit die Form:
A={}
for i=1:1000
A(i)=...
end
Allerdings kann ich die Struktur A={} nicht einfach durch A={zeros(1000,1)} vordefinieren.
Hat Jemand eine Idee?
Vielen Dank
Hans
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.09.2011, 20:07
Titel:
|
 |
Hallo,
du sprichst von Strukturen, verwendest aber Cell Arrays. Cell Arrays können vorbelegt werden mit
Vorsicht: es wird nur der Speicher für die Cells vorbelegt, nicht für den dahinterliegenden Inhalt. Die Cell kann ja nicht wissen, was der Inhalt sein wird.
Oft hilft auch, rückwärts zu indizieren.
Grüße,
Harald
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 29.09.2011, 22:19
Titel: Re: Geschwindigkeit Schleife Struktur
|
 |
Hallo Hans,
Die Pre-allocation ist nützlich (bei umfangreichen Daten sogar notwendig), wenn ein Array in jeder Iteration wachsen würde.
Wenn Du ein großes CELL-Array belegst, muss nur das CELL alloziert werden:
Die Inhalte der CELLs benötigen aber keine Pre-Allocation, solange sie nicht anwachsen. Wenn z.B. jedes CELL-Element nach der Schleife ein [1 x 10] DOUBLE Vector ist, wäre dies kontraproduktiv:
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.
|
|