WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

unbekannte matrixgrösse

 

Beim_Peter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2009, 08:25     Titel: unbekannte matrixgrösse
  Antworten mit Zitat      
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

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2009, 09:06     Titel:
  Antworten mit Zitat      
Hi Peter
Ich verstehe dein Bsp nicht.
Aber du kannst die Größe eines Array mit
Code:

rausbekommen.

Erleuter doch dein Bsp noch einmal.

Gruss Fragewurm
_________________

Fehler jeglicher Art Dienen zur allgemeinen Belustigung
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 30.11.2009, 10:29     Titel:
  Antworten mit Zitat      
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.

Code:

a = cell(1,2); % 1x3 groß
a{1} = [1 2 3];
a{2} = [2 3 4 5];
a{3} = ['String'];
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Beim_Peter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2009, 12:18     Titel:
  Antworten mit Zitat      
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

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 30.11.2009, 12:36     Titel:
  Antworten mit Zitat      
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:

Code:
mat = NaN * ones(xlen,ylen)


Ein Cell-Array wäre natürlich etwas eleganter, aber ich denke beide Lösungen sollte ohne große Probleme zu implementieren sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.11.2009, 13:10     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.