|
|
Aufsummieren von Werten der gleichen Kategorie |
|
s3hannah |

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 07.04.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.05.2017, 18:56
Titel: Aufsummieren von Werten der gleichen Kategorie
|
 |
Hallo ihr Lieben,
um mein Problem verständlicher zu beschreiben, hab ich mal eine grobe Skizzierung meiner Matrix im Anhang beigefügt. Ich hoffe das hilft.
Ich suche also immer die Summe über eine bestimmte Kategorie innerhalb einer Region (Spalte) und bin mir unsicher wie ich dies für eine sehr große Matrix hinbekomme. Ich denke ich müsste zuerst definieren, dass es 14 Kategorien gibt? Und dann sagen, dass jeweils die erste Category innerhalb einer Spalte aufaddiert werden soll sowie die zweite etc.
Da ich mit Matlab bisher nicht so viel Erfahrung habe, wäre ich für Tipps dankbar!
Beschreibung: |
|
 Download |
Dateiname: |
Bildschirmfoto 2017-05-06 um 18.51.48.png |
Dateigröße: |
41.59 KB |
Heruntergeladen: |
257 mal |
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.05.2017, 19:07
Titel:
|
 |
Hallo,
wenn das Muster der Kategorien einheitlich ist, kannst du für jede Spalte diese mit
reshape
in eine Matrix umformen, so dass die Werte einer Kategorie immer in einer Zeile oder Spalte stehen. Dann kannst du direkt
sum
darauf anwenden.
Falls das Muster nicht einheitlich ist, helfen
findgroups
und
splitapply
.
Grüße,
Harald
|
|
|
s3hannah |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 07.04.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.05.2017, 19:20
Titel:
|
 |
Danke dir! Das Muster ist einheitlich. Allerdings habe ich über 3000 Spalten. Wie kann ich reshape automatisch auf alle anwenden? Oder gibt es in diesem Fall eine bessere Lösung?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.05.2017, 19:41
Titel:
|
 |
Hallo,
indem du eine for-Schleife schreibst.
Grüße,
Harald
|
|
|
s3hannah |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 07.04.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.05.2017, 20:56
Titel:
|
 |
Es tut mir wirklich leid, aber ich komme nicht drauf wie ich die loop schreiben muss und wäre für einen weiteren Hinweis sehr dankbar!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.05.2017, 21:06
Titel:
|
 |
Hallo,
poste bitte immer deine bisherigen Versuche und die genauen Probleme, die dabei auftreten. Dann kann man dir leichter helfen.
Grüße,
Harald
|
|
|
s3hannah |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 07.04.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2017, 18:50
Titel:
|
 |
Meine bisherigen Versuche sind leider gescheitert. Ich habe z.B. folgendes probiert:
[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.05.2017, 21:39
Titel:
|
 |
Hallo,
erste Verbesserungsvorschläge:
... und bitte auch nicht vergessen zu schreiben, welche Probleme bei den Versuchen aufgetreten sind.
Grüße,
Harald
|
|
|
s3hannah |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 07.04.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2017, 15:53
Titel:
|
 |
Danke! Es funktioniert noch nicht. Ich bekomme Fehlermeldungen der Art "Subscripted assignment dimension mismatch."
Um es besser zu verstehen, würde ich gerne wissen, wie der Output überhaupt aussehen würde, wenn ich jede Spalte durch den for loop reshape. Habe ich dann über 3000 neue einzelne Variablen in der Liste?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.05.2017, 16:04
Titel:
|
 |
Hallo,
mangels Daten konnte ich es nicht ausprobieren. Ich habe noch einen Blick drauf geworfen und vermute, dass dies das gewünschte macht:
Das entscheidende ist sum (aus irgendeinem Grund dachte ich an Mittelwert) und das ",2", denn der Mittelwert muss über die Zeilen genommen werden.
Zitat: |
Um es besser zu verstehen, würde ich gerne wissen, wie der Output überhaupt aussehen würde, wenn ich jede Spalte durch den for loop reshape. |
Das kann ich auch nicht besser erklären als es die Beispiele in der Doku von reshape illustrieren.
Zitat: |
Habe ich dann über 3000 neue einzelne Variablen in der Liste? |
Nein, die Umwandlung erfolgt nur temporär. Direkt danach wird die Summe berechnet und in die entsprechende Spalte der Ergebnismatrix geschrieben.
Grüße,
Harald
|
|
|
s3hannah |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 07.04.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2017, 16:29
Titel:
|
 |
Vielen Dank, das klappt nun wunderbar!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 08.05.2017, 17:17
Titel: Re: Aufsummieren von Werten der gleichen Kategorie
|
 |
Hallo s3hannah,
Bitte vermeide Cross-Posting. Wenn Du einen wirklich guten Grund hast, eine Frage in mehreren Foren zu posten, füge bitte Links zu den jeweiligen anderen Threads ein. Danke!
Gruß, Jan
|
|
|
s3hannah |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 07.04.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2017, 19:19
Titel:
|
 |
Tut mir leid, das wird nicht wieder vorkommen!
Ich habe direkt noch eine Follow-Up Frage für mein weiteres Vorgehen. Nun möchte ich die einzelnen Werte in meiner ursprünglichen Matrix durch die passende Kategoriesumme teilen, um den Share zu erhalten. Also die erste Reihe der ursprünglichen Matrix durch die passende Summe über alle Cat1 teilen, die zweite Reihe der ursrpünglichen Matrix durch die jeweilige Summe über Cat2 etc. Die neue Matrix ist somit wieder eine 3500x3500 Matrix.
Ich habe mir als Code folgendes überlegt, bin mir aber nicht sicher, ob dies richtig ist, da mein Matlab damit seeehr lange beschäftigt ist und mir kein Ergebnis anzeigen kann. Vielleicht kann man dies beschleunigen?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.05.2017, 19:33
Titel:
|
 |
Hallo,
das Berechnen der Inversen wird Zeit in Anspruch nehmen.
Wenn du zwei Vektoren komponentenweise durcheinander teilen möchtest, dann ist ./ deutlich effizienter und einfacher.
Inzwischen (seit R2016b) kann MATLAB auch implicit expansion, also mit Matrix A und Vektor C
In älteren Versionen kannst du dir mal
bsxfun
ansehen.
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.
|
|