|
weltbewohnerin |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 05.08.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.08.2009, 14:37
Titel: Fehlermeldung reshape
|
|
Hallo,
ich habe folgendes Problem:
Ich habe eine Matrix (W) und aus dieser möchte ich immer eine Zeile (i) auswählen und dann folgendes berechnen:
Aus jeder Zeile will ich die Nebendiagonalenelemente auswählen und dann möchte ich jedes dieser Elemente mit allen anderen Nebendiagonalenelementen multiplizieren und dann alle Ergebnisse zusammen aufaddieren.
Mein Versuch ist bisher der folgende:
Hierbei ist nur das Problem, dass er meckert, dass reshape keine sich ändernden Argumente haben will.
Kann man das nicht auch viel besser machen?
Vielen Dank!
|
|
|
|
|
derOli |
Forum-Meister
|
|
Beiträge: 579
|
|
|
|
Anmeldedatum: 19.03.08
|
|
|
|
Wohnort: Leipzig
|
|
|
|
Version: 2010a
|
|
|
|
|
|
Verfasst am: 20.08.2009, 17:27
Titel:
|
|
Hi,
du solltest dir angewöhnen ein lauffähiges Beispiel zu posten. Ich verstehe nicht was du genau machen willst. Bedenke auch, dass es für "Nebendiagonalen" mehrere Definitionen gibt.
Ich schätze mal du meinst diese:
[ 0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0 ] ?
Dann macht es allerdings nicht viel Sinn jedes dieser einzelnen Elemente mit allen anderen zu multiplizieren und dann irgendwas aufzusummieren.
Wenn du diese Nebendiagonale oben meinst so kann man die Elemente folgendermaßen generieren:
Das Produkt von mehreren Elementen läßt sich folgendermaßen berechnen:
Keine Ahnung ob dir das hilft schreib mal zurück.
Grüße,
der Oli
|
|
|
derOli |
Forum-Meister
|
|
Beiträge: 579
|
|
|
|
Anmeldedatum: 19.03.08
|
|
|
|
Wohnort: Leipzig
|
|
|
|
Version: 2010a
|
|
|
|
|
|
Verfasst am: 20.08.2009, 17:38
Titel:
|
|
Achso,
wegen dem Reshape, dass ist so, es dürfen keine Einträge in der neuen Matrix leer sein. Oder anders ausgedrückt bei:
muss : a * b gleich m*n sein. Bzw. wenn A ein Vektor ist muss m*n gleich der Länge des Vektors sein. Das ist bei deinem Problem anscheinend nicht so.
Auch solltest du weder i noch j und schon garnicht beide zusammen als Variablen benutzen, da diese zur Kennzeichnung von komplexen Zahlen genutzt werden.
Viele Grüße,
der Oli
|
|
|
weltbewohnerin |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 05.08.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.08.2009, 09:34
Titel:
|
|
Ok, dann hier also noch mal der volle Code:
Was ich will ist, dass für eine Zeile alle die Elemente ausgewählt werden, deren INdex aus zwei unterschiedlichen Zahlen besteht. Diese sollen dann alle miteinander multipliziert werden und dann aufaddiert werden. Also bei einer 3x3-Matrix würde das für die erste Zeile bedeuten: w_12*w_12#+w_12*w_13+w_13*w_12+w_13*w_13 und für die anderen Zeilen entsprechend. Die Eregbnisse für alle n Zeilen sollen dann in einem Vektor stehen.
Die Indizes habe ich nun verändert und die Bemerkung zu Reshape habe ich auch verstanden. Nun bin ich bloß immer noch nicht schlauer, wie ich meine Elemente auswähle, miteinander multipliziere und dann summiere.
Danke aber schon mal!
|
|
|
|
|
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.
|
|