Rekursive Funktion in matlab
Wie Schreibe ich eine rekursive Funktion in matlab, die es im Grunde als eine Markov-Kette!
Ich habe versucht, schreiben Sie einen pseudo-code für it und neue zu MATLAB:
Die Funktion geht so:
P= Probability
x= status(0,1)
Dij= probability to pick a site
P(Status of Site(i) being x at next time step)= Summation[P(Status of Site(i) being x at previous time step)*Dij]
Habe ich versucht-code, kann jemand tel mir, ob Ihr Recht:
function [t,index]= CopyingInfluenceModel
%%Define constants
StatusP1=rand(1,0);
StatusP0=rand(1,0);
% Initializing the variables
t=[];
index=[];
i=[];
%assigining the initial conditions
t(1)=0;
%set index no i to 1(initial condition for i=1)
i=1;
%% If the probability is zero, terminate while loop
while p(i)>=0
%calculate time step for given index no
t(i+1)= t(i);
%calculate the status_probability at given time t=(i+1)
StatusP1(i+1)=StatusP1(i)+sum(StatusP1(i)*Dij);
%index i increases by 1 to calculate next probability
i=i+1;
end
end
Wenn ich so direkt sein darf (und wahrscheinlich falsch), es scheint mir, dass dies würde mehr sauber gemacht ohne Rekursion wie in der linearen Lösung für die Generierung der fibonacci-Folge (das ist, was Sie zu sein scheinen, versuchen zu tun)
nicht ein fibonnacci!!
nicht ein fibonnacci!!
InformationsquelleAutor happyme | 2012-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten rekursiven "Hallo Welt" factorial-Funktion in matlab:
Kann es benannt werden:
Nicht zu wissen viel über Markov-Ketten, dass ich eine Vermutung hier an, was deine Funktion machen soll. Zuerst der code:
Den Parametern D und p0 die das system beschreiben und sind soeben durch unverändert. Die Verwendung von globalen Variablen oder beim spielen mit Funktion verschachteln funktioniert auch für Sie, solange Sie zugänglich sind.
Staat ist eine Ganzzahl zwischen 1 und der Gesamtzahl der Staaten, dass Sie sich mit, t ist eine ganze Zahl, stellt die Zeit Schritt.
At t==0 können wir den Einsatz von staatlichen als index in p0 zu bekommen die Wahrscheinlichkeit.
Für t>0 habe ich umgeschrieben, die Summe als matrix-Multiplikation:
Müssen wir die Zeile von Dij (was ist D - (Zustand:) gegeben durch den aktuellen Zustand und multiplizieren Sie ihn mit dem Vektor der Wahrscheinlichkeiten aller möglichen Zustände in der letzten Zeit Schritt.
Die Linie
ist ein Spalten-Vektor mit 1,2,3,...,letzter Zustand und benötigt in der nächsten Zeile. Arrayfun ruft eine Funktion (das erste argument) wird für jedes element ein array ist (zweites argument) und stopft das Ergebnis in einen Vektor. Das erste argument ist eine Kurzform für die Definition der folgenden Funktion:
Bitte beachten Sie, dass matlab ist case-Sensitiv, also, wenn Sie eine Funktion definieren, die "Markov" dann matlab noch nicht jetzt über die "markov".
Edit: Sorry, Sie haben aktualisiert, Ihr code, während ich verfassen dieser Antwort, so dass es möglicherweise oder möglicherweise nicht auf die aktualisierte version.
InformationsquelleAutor mars