|
|
Matrix-Spalten aufsummieren und am Ende speichern |
|
MRBBB |
Forum-Anfänger
|
|
Beiträge: 16
|
|
|
|
Anmeldedatum: 15.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.01.2015, 17:25
Titel: Matrix-Spalten aufsummieren und am Ende speichern
|
|
Hallo zusammen,
Ich bin grad ein bisschen verloren in Matlab. Das Problem ist folgendes:
Ich habe eine 152x3 Matrix. In der ersten Zeile befinden sich bestimmte Werte. In der jeweiligen Spalte folgen die zugehörigen Häufigkeitsverteilungen. Ich möchte nun, bis auf die erste Zeile, die gesamte Spalte aufsummieren und am Ende der Spalte, also in Zeile 153 "speichern".
Da ich aber manchmal mehr Spalten habe außer 3, wollte ich das ganze mit einer For-Schleife realisieren, damit diese mir das ganze automatisiert.
Folgendermaßen sieht gerade mein Code aus:
.......
.......
Habe wirklich schon einiges probiert, aber als Laie nicht das gewünschte Ergebnis erzielt. Wäre über jede Hilfe sehr dankbar.
LG MRBBB
|
|
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 15.01.2015, 18:55
Titel:
|
|
|
|
|
hallo mrbbb bei deinem code sind einige sachen schief gelaufen ich würde dir raten das getting startet von matlab einmal durchzuarbeiten die documentation von matlab ist wirklich sehr gut und das hilft doch sehr
die standart schrittweite ist immer 1 also kann man sich die angabe dieser schrittweite spaaren.
der befehl length giebt immer die größte diemension wieder. das kann zu unbeabsichtigten ergebnissen führen. ich würde daher zur verwendeung des befehls
mit entsprechender diemensions angabe raten.
du versuchst hir eine zeile eine einzige zahl zuzuweisen. das geht zwar ist aber nicht das was du willst. guck dir mal den befehl sum in der dokumentation an. es ist möglich die dimension über die summiert werden soll mit angzugeben. das macht die schleife unnötig.
es ist zwar möglich die laufwariable temporär zu überschrieben aber nicht langfristig. die laufvariable wird immer wieder auf ihren richtigen wert zurück gesetzt werden beim schleifen anfang. außerdem glabe ich das das ganze überhaubt nix mit deinem problem zu tun hat. der sinn dieser zeile erschließt sich mir jedenfalls nicht.
des weiteren ist es immer wichtig fehlermeldungen zu posten wenn etwas nicht geht und zu sagen was nicht geht
neuligen kann ich dazu den thread aus meiner signatur empfehlen. das erspaart allen viel arbeit und ermöglicht es uns dir schnell und efizient zu helfen.
grüße winkow
_________________
richtig Fragen
|
|
|
MRBBB |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 16
|
|
|
|
Anmeldedatum: 15.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.01.2015, 08:35
Titel:
|
|
Hallo Winkow,
erstmal vielen herzlichen Dank für deine Ratschläge und Hilfe!
Deinen Rat werde ich folgen .
Eine Fehlermeldung gibt es nicht. Mein Code funktioniert somit richtig, nur macht es halt nicht das was ich möchte
Hier wird lediglich die erste Spalte korrekt aufsummiert.
Die For-Schleife habe ich nur geschrieben, damit mir aufsteigend, also Spalte 1 aufsummiert wird, dann Spalte 2, Spalte 3....
Das hier ist quasi mein Start.
Also das Ergebnis der ersten aufsummierten Spalte soll in Zeile (153,1) gespeichert werden.
Dann soll Spalte 2 drankommen, aufsummiert und in (153,2) gespeichert werden und das für alle vorhandenen Spalten...
Mit
soll inkrementiert werden, also von Spalte 1 aus hochzählen und alle Spalten nacheinander aufsummieren.
Danke nochmals sehr für deine Bemühungen!
LG MRBBB
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.01.2015, 08:57
Titel:
|
|
Hallo,
hast du denn nun mal die Doku zu sum gelesen? Dort steht nämlich, dass sum auf Matrizen standardmäßig spaltenweise operiert (wie übrigens viele andere statistische Funktionen auch).
liefert also die gewünschten Informationen, und mit
werden sie ans Ende der Matrix angefügt.
Grüße,
Harald
|
|
|
MRBBB |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 16
|
|
|
|
Anmeldedatum: 15.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.01.2015, 10:04
Titel:
|
|
Hallo Harald,
auch ein Dankeschön an dich!
Ja die Doku zu sum habe ich erneut mehrmals gelesen, habe sie aber auch schon mehrmals korrekt in anderen Codes richtig umgesetzt.
Vielleicht habe ich mich zu meiner Problematik nicht richtig ausdrücken können. Ich gehe es mal Schritt für Schritt durch:
Soll meine For-Schleife definieren, um die Spalten (je nach Größe der Matrix automatisch durchzugehen und aufsummieren soll, da die Größe variiert.
Bsp:
Hiermit sollen die aufsummierten Spalten am Ende der Matrix, hier Zeile 153, abgelegt werden.
Das soll mein Inkrement sein, dass wenn die erste Spalte aufsummiert und abgelegt ist, in die nächste Spalte gesprungen wird und diese dann aufsummiert ablegt und für die ganzen weiteren Spalten dies wiederholt..
Gerade wird in meiner Matrix in die gewünschte Zeile (153) zwar ein Wert abgelegt, was aber weder der korrekte Wert ist, noch ich weiß woher dieser Wert eigentlich stammt bzw. errechnet wird..
Grüßee MRBBB
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.01.2015, 10:27
Titel:
|
|
Hallo,
ich meine, durchaus verstanden zu haben, was du erreichen möchtest.
Warum bestehst du aber darauf, eine for-Schleife zu verwenden, obwohl ich dir einen m.E. sehr einfachen Weg gezeigt habe, wie das ohne for-Schleife erledigt werden kann?
Grüße,
Harald
|
|
|
MRBBB |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 16
|
|
|
|
Anmeldedatum: 15.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.01.2015, 10:46
Titel:
|
|
Hallo,
jetzt bin ich total verwirrt...
Die For-Schleife benutze ich nur, damit alle Spalten automatisch nacheinander aufsummiert werden und nicht nur immer dieselbe Spalte für alle dasselbe Ergebnis liefert.
Daher dachte ich, dass die For-Schleife dafür bestens geeignet ist.
Grüße MRBBB
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.01.2015, 10:55
Titel:
|
|
Hallo,
man kann dafür eine for-Schleife verwenden, aber ohne geht es eben viel einfacher. MATLAB ist sehr vektor- und matrizenorientiert, so dass for-Schleifen häufig einfach unnötig sind.
Nochmal speziell für dein Beispiel:
Grüße,
Harald
|
|
|
MRBBB |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 16
|
|
|
|
Anmeldedatum: 15.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.01.2015, 11:53
Titel:
|
|
Hallo Harald,
auch dir ein dickes Dankeschön für deine Hilfe!
Allerdings scheint igwas nicht zu stimmen..
Das hier funktioniert tadellos:
warum aber nicht, wenn ich das für mein Code anwende...?
Habe die Ausgangsmatrix transponiert, kann es vielleicht daran legen?
So siehts gerade aus:
Grüße MRBBB
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.01.2015, 12:36
Titel:
|
|
Hallo,
die letzte Zeile summiert jede Spalte von III und schreibt das Ergebnis darunter. Das Problem liegt wenn in den beiden Zeilen darüber. Ob du da nun das machst was du möchtest und falls nicht inwiefern nicht, wirst nur du beantworten können.
Grüße,
Harald
|
|
|
MRBBB |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 16
|
|
|
|
Anmeldedatum: 15.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.01.2015, 13:26
Titel:
|
|
Hallo,
also die erste Zeile tut mir nur, wie bereits erwähnt, die Häufigkeitsverteilung der Matrix B2 ausgeben. B2 ist eine Matrix mit diversen Werten. Zu jedem vorkommenden Wert, wird hier dessen Häufigkeit ermittelt. Da ich aber die AA Matrix in transponierter Form brauche, tu ich dies in Zeile zwei einfach transponieren und neu unter der III Variable speichern. Und der Rest ist ja genau die Problematik, die ich habe....
Grüße MRBBB
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.01.2015, 13:34
Titel:
|
|
Hallo,
willst du denn in der transponierten Form nun über die Spalten oder die Zeilen summieren?
summiert über die Spalten, egal was du davor oder danach anstellst.
summiert über die Zeilen (siehe auch Dokumenation)
Falls du letzteres willst, wäre es allerdings geschickter, erst zu spaltenweise zu summieren und dann zu transponieren.
Grüße,
Harald
|
|
|
MRBBB |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 16
|
|
|
|
Anmeldedatum: 15.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.01.2015, 13:41
Titel:
|
|
Hallo Harald,
in der transponierten Form möchte ich die Spalten summieren.
Habe nun folgendes gemacht; die Summen nicht in die vorhandene Matrix abgelegt:
sondern als eine Variable deklariert und abgespeichert:
So funktioniert wie es sein soll, allerdings möchte ich die Summanden eben in der Matrix III, wo die jeweiligen Werte stehen und nicht separat eine Matrix mit den Summanden..
Bzw wie wäre es umzusetzen, wenn ich in eine neue Matrix, die vorher nicht bekannte erste Zeile der Matrix III und drunter die jeweiligen Summanden ablegen möchte?
Grüße MRBBB
|
|
|
MRBBB |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 16
|
|
|
|
Anmeldedatum: 15.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.01.2015, 14:07
Titel:
|
|
Hallo zusammen,
vielen Dank für die tolle Unterstützung!
Mein besonderer Dank geht an Harald!
Diese Hürde ist dann mal gemeistert..
Habe meine letzte Frage selbest beantwortet.
Grüße MRBBB
|
|
|
|
|
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 - 2024
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.
|
|