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

Zustände einer Markow-Kette erzeugen

 

SkKa
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2013, 00:05     Titel: Zustände einer Markow-Kette erzeugen
  Antworten mit Zitat      
Hallo zusammen,
ich habe die Übergangsmatrix zu einer Markow-Kette vorliegen und möchte damit, ausgehend von einem zuvor ermittelten Ausgangswert, eine Folge von Zuständen erzeugen.

Mein bisheriger Ansatz dazu ist, zunächst für jeden Zustandsübergang einen zufälligen Wert zwischen 0 und 1 zu erzeugen. Dieser Wert wird dann mit der jeweils relevanten Zeile der (zeilenweise) kumulierten Übergangsmatrix verglichen. Der nachfolgende Zustand ist dann also der, bei dem in der kumulierten Übergangsmatrix der Wert größer ist als der zufällige Wert.
(Zum finden dieses Wertes habe ich bisher sowohl find(...), als auch eine for-Schleife mit if-Abfrage benutzt, beide Varianten scheinen sich geschwindigkeitsmäßig nicht viel zu tun.)

Das beschriebene Verfahren funktioniert, jedoch würde ich es nach Möglichkeit gerne so weit wie möglich beschleunigen, da ich über 35000 Schritte erzeugen muss und die Übergangsmatrix 8000 Zeilen und Spalten hat. Bisher benötigt das Ganze ungefähr eine Stunde (also ca. 0,1s pro Schritt).
Ansonsten ist noch zu sagen, dass die Übergangsmatrix größtenteils (geschätzt 99%) aus Nullen besteht. Sie liegt bisher als sparse-Matrix vor.

Für Ideen zur Beschleunigung wäre ich sehr dankbar. Wenn jemand irgendeine Idee hat, wie man den Prozess parallelisieren könnte, wäre das ebenfalls hervorragend, da ich 12 Worker zur Verfügung habe. Bei Bedarf stelle ich gerne morgen früh meinen bisherigen Code hier ein, heute habe ich leider keinen Zugriff mehr darauf.

Schon jetzt vielen Dank an alle, die sich zu meinem Problem Gedanken machen.

Grüße
SkKa
Private Nachricht senden Benutzer-Profile anzeigen


SkKa
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2013, 16:36     Titel:
  Antworten mit Zitat      
Hallo nochmal,
ich habe mitterweile eine Möglichkeit gefunden, die Ausführung ungefähr um den Faktor 1000 zu beschleunigen und möchte diese jetzt hier kurz schildern, falls später jemand ein ähnliches Problem haben sollte.
Wie in meinem vorherigen Post geschrieben, besteht meine Übergangsmatrix stark überwiegend aus Nullen. Das habe ich mir zunutze gemacht, indem ich eine "komprimierte" Übergangsmatrix erstellt habe, die nur die Werte ungleich Null enthält. Um die jeweils zugehörigen Spalten wiederfinden zu können, habe ich diese in einem zweiten Array gespeichert. Dadurch muss sich die find-Funktion nicht mehr durch 8000, sondern eher 200 Werte kämpfen.

Grüße
SkKa
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.