|
|
Mehrdim. zu Eindom. Cell Array Eintrag |
|
Amin_München |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 07.12.15
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: 2015b
|
 |
|
|
 |
|
Verfasst am: 12.12.2015, 15:43
Titel: Mehrdim. zu Eindom. Cell Array Eintrag
|
 |
|
 |
|
Hallo Leute,
ich habe folgende Funktion geschrieben. Database sieht so aus:
Name Size Bytes Class Attributes
database 1x4 38600674 cell
Ist also ein Cell Array mit einem Cell Array der Dimension 1x21578 als ersten Eintrag(database{1}). Dies sind also 21578 Dokumente, welche alle einen Text sprich string enthalten.
Database{2} enthält die Zahl 10. Ich nutze also nur die ersten 10 Dokumente um Laufzeiten zu verkürzen.
Die zwei anderen Felder sind leer.
Ich will in das noch leere dritte Feld database{3} alle vorkommenden Terme aus den ersten 10 Dokumenten also EINE eindimensionale Zelle also 1x(AlleTermeInDenErsten10Dokumenten) beschreiben.
Wenn ich aber obigen Code ausführe, so erhalte ich zwar alle Terme, jedoch immer in einem ZWEI Dimensionalen Array, sprich database{3}{1} enthält alle Terme vom Dokument 1 und database{3}{2} enthält alle Terme vom Dokument 2.
Was ich aber möchte ist, dass diese Terme alle in einer EIN dimensionalen Zelle also database{3} einfach mit allen Termin gefüllt wird.
Es soll also so sein, dass alle Zelleninhalte in EINE Zelle kommen und "aneinander hängen" wie ein Vektor quasi.
Ich hoffe ihr versteht mein Problem und könnt mir weiter helfen.
LG Amin
_________________
Vielen Dank für eure Hilfe!
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 12.12.2015, 18:19
Titel: Re: Mehrdim. zu Eindom. Cell Array Eintrag
|
 |
Hallo Amin_München,
Zitat: |
ich habe folgende Funktion geschrieben. Database sieht so aus:
Name Size Bytes Class Attributes
database 1x4 38600674 cell
Ist also ein Cell Array mit einem Cell Array der Dimension 1x21578 als ersten Eintrag(database{1}). Dies sind also 21578 Dokumente, welche alle einen Text sprich string enthalten.
Database{2} enthält die Zahl 10. Ich nutze also nur die ersten 10 Dokumente um Laufzeiten zu verkürzen.
Die zwei anderen Felder sind leer. |
Sag mal, dashat alles mit dem Problem nichts zu tun, oder?
Gruß, Jan
Zuletzt bearbeitet von Jan S am 13.12.2015, 00:57, insgesamt einmal bearbeitet
|
|
|
Amin_München |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 07.12.15
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: 2015b
|
 |
|
|
 |
|
Verfasst am: 12.12.2015, 22:25
Titel:
|
 |
Hallo Jan!
Vielen Dank für deine Antwort. Ja genau, das war nur eine Erklärung bzw. Erläuterung zu meinem Problem, anhand deines Codes kann ich erkennen, dass du verstanden hast was mein Problem war. Wenn ich aber deinen Code ausführe, dann gibt es da leider das Problem bei
r = cell(1,a)
denn die Funktion weiß noch gar nicht, wie groß das a ist bzw. a ist in der Zeile noch eine Unbekannt Variable.
Wie kann man das lösen?
LG und vielen Dank schon mal
Amin
_________________
Vielen Dank für eure Hilfe!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 13.12.2015, 00:58
Titel:
|
 |
Hallo Amin_München,
Das war ein Tippfehler. Ich habe ihn verbessert.
Gruß, Jan
|
|
|
Amin_München |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 07.12.15
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: 2015b
|
 |
|
|
 |
|
Verfasst am: 13.12.2015, 10:32
Titel:
|
 |
Viele Dank Jan!
Ich habe es auch so gelöst, falls dich das interessiert.
Man kann auch einfach:
r={};
ein leeres Cell Array erstellen, das würde dann auch gehen
Liebe Grüße
_________________
Vielen Dank für eure Hilfe!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.12.2015, 10:56
Titel:
|
 |
Hallo,
nur dass Jans Lösung effizienter ist, da das Array dann nicht mit jeder Iteration der for-Schleife wächst.
Grüße,
Harald
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 13.12.2015, 22:17
Titel:
|
 |
|
 |
|
Hallo Amin_München,
Zitat: |
Man kann auch einfach ein leeres Cell Array erstellen, das würde dann auch gehen :) |
Stimmt, gehen würde es. Aber das wäre ein Standard-Anfänger-Fehler! Wie Haralöd schon sagte, würde dann das Array in jeder Iteration wachsen. Und das benötigt verblüffend viele Resourcen. Ein einfaches Beispiel:
In jeder Iteration wird ein neuer zusammenhängender Block im RAM alloziert mit der neuen Größe und der alte hinein kopiert, bevor das eine neue Element angefügt wird. Das Array hat zum Schluss 1000*8 Byte (da ein Double 64 bit benötigt). Es werden aber wegen des iterativen Anwachsens von Betriebssystem insgesamt
sum(1:1000) * 8
Bytes, 8 kB alloziert, also etwas mehr als 4 MB und fast ebenso viel wird noch hin und her kopiert! Bei einer Millionen Elemente geht es dann gleich um 4 TB, das Problem wird also schnell ernst.
Das iterative Wachsen von Arrays ist deshalb ein sehr schlechter Programmierstil und sollte unbedingt durch eine "Pre-Allocation" vermieden werden.
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.
|
|