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

Summe, Limes und Matrizen: brauche dringend Hilfe!

 

Kati
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.04.2011, 19:54     Titel: Summe, Limes und Matrizen: brauche dringend Hilfe!
  Antworten mit Zitat      
Hallo zusammen,

Ich möchte in Matlab mit der im Bild im Anhang enthaltenen Formel (der mir vorliegenden Literatur zufolge nennt sich das die Césaro-Summe) rechnen. "W" ist dabei eine 18*18 Matrix mit vielen Null-Einträgen und einigen Einträgen ungleich null. Die Matrix ist spaltenstochastisch, also alle Spalteneinträge addieren sich zu 1 auf - außer die Spalten, die in der Summe Null ergeben.

Als Ergebnis (so sagt mir mein schlaues Buch) sollte in jeder Zeile ungefähr die gleiche Zahl stehen. Außerdem habe ich gelesen, dass in der Regel statt dem "k gegen unendlich" ein k=60 bereits genügen müsste, um konstante Werte zu erhalten.

Ich habe die Formel so umgesetzt (B bezeichnet die Matrix)

for k=1:60
B=(1/60)*B+B^k;
end;

was nicht richtig sein kann, weil das (1/60) doch separat und auf keinen Fall in jeder Schleife multipliziert werden müsste, richtig? Wenn ich aber die (1/60) erst am Ende multipliziere, gibt mir Matlab eine Matrix mit allen Einträgen "NaN", was wohl irgendeine Fehlermeldung ist.

Kenne mich mit Matlab wirklich überhaupt nicht aus, und bin über jeder Hilfe sehr dankbar, da ich diese Geschichte ganz dringend umsetzen muss!

Vielen Dank schon einmal für Eure Hilfe!!

Viele Grüße
Kati

Formel.jpg
 Beschreibung:

Download
 Dateiname:  Formel.jpg
 Dateigröße:  3.45 KB
 Heruntergeladen:  802 mal
Private Nachricht senden Benutzer-Profile anzeigen


Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 10.04.2011, 00:59     Titel:
  Antworten mit Zitat      
Hallo,

Ich habe folgendes gebastelt:
Code:

xsize = 18;
ysize = 18;
N = 60;

W = rand(xsize,ysize);
mat = zeros(xsize,ysize);

for k = 1:N;
   temp = W.^k;
   mat = mat+temp;
end
mat = mat./N;

% ohne Schleife, i.d.R schneller

k2 = repmat(reshape(1:N,1,1,N),[xsize,ysize,1]);
W2 = repmat(W,[1 1 N]);
mat2 = sum(W2.^k2,3)./N;
 


Natürlich solltest du überprüfen ob die Werte welche herauskommen mit deinem Erwartungen übereinstimmen. Was ich allerdings nicht wusste ist, ob das entgültige Ergebnis wieder eine 18x18 Matrix sein soll (also der Mittelwert jedes Matrixelementes) oder ein Skalar. Ich ging vom 1. Fall aus, ansonsten müsstest du eben noch 2 mal ein "sum" davorpacken.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Kati
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2011, 15:11     Titel:
  Antworten mit Zitat      
Hallo Sco,

vielen, vielen Dank, das hilft mir schon mal sehr viel weiter!

Ja, das endgültige Ergebnis sollte wieder eine 18x18-Matrix sein mit dem Mittelwert jedes Matrixelementes. Idealerweise sollten sich die Spalten in ihren Werten pro Zeile sehr ähneln.

W2 ist die Ergebnismatrix, sehe ich das richtig? Was ich nur nicht ganz verstehe ist, warum in manchen Spalten so große Abweichungen entstehen (auch für hohe N), ich nehme an, das liegt daran, dass die Matrix beim Potenzieren womöglich zykliert (weshalb wahrscheinlich auch die Mittelwertbildung notwendig ist)...

Viele Grüße,
Kati
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 10.04.2011, 15:46     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

W2 ist die Ergebnismatrix, sehe ich das richtig?

Nein! Die Endergebnisse (Césaro-Summe) sind die Matrizen "mat" bzw "mat2". Ich habe dir 2 Methoden aufgezeigt deine Formel umzusetzen, einmal mit (Variable mat) und einmal ohne Schleife (Variable mat2). k2 und W2 sind umgeformte (reshape) und replizierte (repmat) Versionen der Variablen k und W. Dies ist nötig um die Formel auch ohne Schleife lösen zu können (was wie bereits gesagt, besonders bei vielen Schleifendurchgängen schneller sein sollte). Wenn du auf Anhieb nicht verstehts wie das geschieht so empfehle ich dir vielleicht N und W einmal auf wenige Werte zu reduzieren bzw. einfache Werte zuzuweisen, also z.B.:

Code:

N = 2;
W = [1 2;3 4];
.
.
.
 

Nun kannst du im Debugger Modus den Code in jeder Zeile anhalten und schauen was an welcher Stelle wie passiert. Ansonsten natürlich auch mal die Matlab Hilfe verwenden. Ich denke die Umsetzung der Gleichung mittels for-Schleife sollte selbsterklärend sein.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Kati
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2011, 15:51     Titel:
  Antworten mit Zitat      
Hallo,

achso... Die Umsetzung mit der for-Schleife leuchtet mir ein, bei der anderen müsste ich noch ein bisschen rumprobieren.

Aber auch wenn ich mir das Ergebnis für mat oder mat2 ausgeben lasse, sind die Matrixeinträge nicht einheitlich. Sollte nicht überall dann der Mittelwert der Matrixeinträge stehen, also ich meine in jeder Spalte in etwa ähnliche Werte? Ich dachte das wäre das gewünschte Ergebnis der Césaro-Summe, oder gibt es Ausnahmen?

Viele Grüße
Kati
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 11.04.2011, 16:02     Titel:
  Antworten mit Zitat      
Hallo,


Zitat:

Aber auch wenn ich mir das Ergebnis für mat oder mat2 ausgeben lasse, sind die Matrixeinträge nicht einheitlich. Sollte nicht überall dann der Mittelwert der Matrixeinträge stehen, also ich meine in jeder Spalte in etwa ähnliche Werte? Ich dachte das wäre das gewünschte Ergebnis der Césaro-Summe, oder gibt es Ausnahmen?


Also ich muss erstmal dazu sagen, dass ich die Césaro-Summe bisher nicht kannte und auch deren Verwendung nicht weiss, ich habe dir nur gezeigt wie man die Formel in Matlab umsetzen kann. Ich gehe aber erstmal davon aus, dass du fuer "W" deine Matrix eingesetzt hasst, ich benutze in meinem Beispiel ja nur eine Zufaellige (rand Befehl). Eine zufaellige Matrix wird naehmlich deiner gegebenen Matrix nicht entsprechen:
Zitat:

Die Matrix ist spaltenstochastisch, also alle Spalteneinträge addieren sich zu 1 auf - außer die Spalten, die in der Summe Null ergeben.


Ansonsten kann ich dir leider bezueglich der Deutung der Ergebnisse nicht weiterhelfen, da muesstest du jemand anderes oder weitere Literatur befragen.

MFG

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