diese Frage zu einem früheren in Fortsetzung ist gefragt Matlab : Plot of entropy vs digitized code lengthMatlab: Hilfe in Entropieschätzung einer disretized Zeitreihe
Ich mag die Entropie einer Zufallsvariablen berechnen, die diskretisierten Version (0/1) eines ist kontinuierliche Zufallsvariable x
. Die Zufallsvariable bezeichnet den Zustand eines nichtlinearen dynamischen Systems, das als Tent Map bezeichnet wird. Iterationen der Tent Map ergeben eine Zeitreihe der Länge N.
Der Code sollte beendet werden, sobald die Entropie der diskretisierten Zeitreihe gleich der Entropie des dynamischen Systems wird. Es ist theoretisch bekannt, dass die Entropie des Systems log_2 (2) ist. Der Code wird beendet, aber die ersten 3 Werte des Entropy-Arrays sind fehlerhaft - entropy(1) = 1, entropy(2) = NaN and entropy(3) = NaN
. Ich kratze mich am Kopf, warum das passiert und wie ich es loswerden kann. Bitte helfen Sie bei der Korrektur des Codes. Danke.
clear all
H = log(2)
threshold = 0.5;
x(1) = rand;
lambda(1) = 1;
entropy(1,1) = 1;
j=2;
tol=0.01;
while(~(abs(lambda-H)<tol))
if x(j - 1) < 0.5
x(j) = 2 * x(j - 1);
else
x(j) = 2 * (1 - x(j - 1));
end
s = (x>=threshold);
p_1 = sum(s==1)/length(s);
p_0 = sum(s==0)/length(s);
entropy(:,j) = -p_1*log2(p_1)-(1-p_1)*log2(1-p_1);
lambda = entropy(:,j);
j = j+1;
end
plot(entropy)
Hallo dort. Bitte lösche, ändere oder vandalisiere deine Fragen nicht, nachdem eine Antwort eingegangen ist. Ich sehe den Zweck deiner letzten Bearbeitung nicht, die so viel von der Frage entfernt hat, dass sie unklar/außer Thema wäre, also ich habe es zurückgerollt. – halfer