Этот вопрос находится в продолжении к предыдущему спросил Matlab : Plot of entropy vs digitized code lengthMatlab: Помощь в оценке энтропии disretized временных рядов
Я хочу, чтобы вычислить энтропию случайной величины, которая дискретизованная версия (0/1) из непрерывная случайная величина x
. Случайная величина обозначает состояние нелинейной динамической системы, называемой Tent Map. Итерации карты теней дают временные ряды длины N.
Код должен выйти, как только энтропия дискретизированных временных рядов станет равна энтропии динамической системы. Теоретически известно, что энтропия системы равна log_2 (2). Код выходит, но значения frst 3 энтропийного массива ошибочны - entropy(1) = 1, entropy(2) = NaN and entropy(3) = NaN
. Я почесываю голову, почему это происходит и как я могу избавиться от нее. Пожалуйста, помогите в исправлении кода. Спасибо.
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)
Привет. Пожалуйста, не удаляйте, не изменяйте или не подвергайте вандализму свои вопросы после того, как ответ пришел. Я не вижу цели вашего последнего редактирования, который устранил столько вопросов, что было бы непонятно/не по теме, поэтому я вернули его. – halfer