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!
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.
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)...
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.:
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.
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?
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
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
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.