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

Fehlermeldung reshape

 

weltbewohnerin
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 05.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2009, 14:37     Titel: Fehlermeldung reshape
  Antworten mit Zitat      
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:

Code:


for i=1:n for j=1:n-1
indik2=setdiff(1:n,i);
el_w=w(i,indik2);
ausgew=el_w(r);
dd=ausgew*el_w;
e(ind5)=sum(dd);
Y=reshape(e,n-1,n);
Y_tr=Y';
wikh=sum(Y_tr,2)';
ind5=ind5+1;
end
end



 


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!
Private Nachricht senden Benutzer-Profile anzeigen


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 20.08.2009, 17:27     Titel:
  Antworten mit Zitat      
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:

Code:


Das Produkt von mehreren Elementen läßt sich folgendermaßen berechnen:

Code:


Keine Ahnung ob dir das hilft schreib mal zurück.

Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 20.08.2009, 17:38     Titel:
  Antworten mit Zitat      
Achso,

wegen dem Reshape, dass ist so, es dürfen keine Einträge in der neuen Matrix leer sein. Oder anders ausgedrückt bei:

Code:

B=reshape(A,m,n)
[a,b]=size(A);
 


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
Private Nachricht senden Benutzer-Profile anzeigen
 
weltbewohnerin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 05.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2009, 09:34     Titel:
  Antworten mit Zitat      
Ok, dann hier also noch mal der volle Code:

Code:

n=4;
w=[0 1 0 1; 1 0 1 0;0 1 0 0;1 0 0 0];
Y=0;
ind5=1:
for f=1:n for r=1:n-1
indik2=setdiff(1:n,f);
el_w=w(f,indik2);
ausgew=el_w(r);
dd=ausgew*el_w;
e(ind5)=sum(dd);
Y=reshape(e,n-1,n);
Y_tr=Y';
wikh=sum(Y_tr,2)';
ind5=ind5+1;
end
end


 


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!
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 - 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.