|
Beim_Peter |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2009, 08:25
Titel: unbekannte matrixgrösse
|
 |
hallo leute.
lade daten aus einer datenbank in matlab ein.
ein vektor heisst id=[2, 2, 2, 3, 4, 8, 19, 19, ...] und der andere vektor heisst schaden = [23423, 233, 122, 93, 79, 1233, 4334,...]. jetzt muss für jede id meherer sachen berechnent werden. das hängt jedoch von der anzahl der id in im id vektor ab. also z. b. für 2 werden 3 werte berechnet, für id 3 ein ... für 19, zwei...
hätte also gern am schluss einen art array:
lösung= [2, 23232, 32, 23999;
3, 22;
4, 9909;
8, 12;
19, 2323, 123;
....]
wie leg ich das am besten an bzw. wie realisier ich das am besten.
bin für jeden tip dankbar!
|
|
|
|
|
Fragewurm |

Forum-Century
|
 |
Beiträge: 180
|
 |
|
 |
Anmeldedatum: 23.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2009, 09:06
Titel:
|
 |
Hi Peter
Ich verstehe dein Bsp nicht.
Aber du kannst die Größe eines Array mit
rausbekommen.
Erleuter doch dein Bsp noch einmal.
Gruss Fragewurm
_________________
Fehler jeglicher Art Dienen zur allgemeinen Belustigung
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 30.11.2009, 10:29
Titel:
|
 |
Das Problem an der Sache ist, dass du keine Matrix mit Vektoren unterschiedlicher Länge anlegen kannst. Deshalb müsstest du hier auf Cell-Arrays zugreifen, die das ermöglichen.
Ein Cell-Array legst du an mit dem cell Befehl, Zugriff auf ein Element bekommst du mit den geschweiften Klammern {}, in jedes Element kannst du einen beliebigen Datentyp schreiben. Man kann also auch Strings mit doubles mischen etc. Details stehen in der Hilfe.
|
|
|
Beim_Peter |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2009, 12:18
Titel:
|
 |
Jan hat es verstanden.
jetzt fragt sich nur ob ich aus meinem vektor id nicht die max. anzahl von gleichen zahlen suche (z.b. 2 ist 3 mal enthalten). und ich ne matrix erstelle mit der spaltenanzahl 3 und in den zeilen mit weniger schäden wie z. b. bei der 4 (wäre nur eine spalte nötig) den rest auf 0 belase. oder es mit cell mache. was ist da sinvoller. habe recht viele daten (30 000 zeilen und max. ca. 50 spalten)?
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 30.11.2009, 12:36
Titel:
|
 |
Cell-Arrays sind von der Performance her evtl. etwas langsamer (lediglich eine Mutmaßung), dafür wirst du mit einer Matrix mit maximaler Breite etwas mehr Speicher benötigen, der bei einer 30000x50 Matrix aber noch kein Problem darstellen sollte. Insofern könntest du deine Matrix einfach mit Nullen oder NaNs initialisieren:
Ein Cell-Array wäre natürlich etwas eleganter, aber ich denke beide Lösungen sollte ohne große Probleme zu implementieren sein.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.11.2009, 13:10
Titel:
|
 |
Hallo,
man muss sich darüber im klaren sein, dass bei Cell Arrays ein Overhead entsteht. Im vorliegenden Fall würde ich sagen:
Wenn die Spaltenanzahl i.d.R. klein ist und nur in Einzelfällen den Maximalwert erreicht, ist das Cell Array effizienter. Ansonsten wird die eine Matrix die bessere Lösung sein.
Im Zweifel mal beides ausprobieren und sich Speicherauslastung und Geschwindigkeit anschauen.
Grüße,
Harald
|
|
|
|
|
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.
|
|