Я только начал играть с Matlab, и я хотел бы получить значение энтропии для движущегося окна.Расчет энтропии в окне перемещения серии времени
У меня есть временная серия 1432x1, и я хотел бы получить значение энтропии для длины движущегося окна = N, поэтому, если N = 40, я должен получить первое значение энтропии для ts (1:40), тогда ts (2:41) и так далее до последней точки ts.
Выходной сигнал должен быть массивом 1392x1 (N точек короче, чем время ввода).
Меня интересует любой другой метод энтропии.
Редактировать Я попробовал этот пример нашел в Matlab центре, но он не работает
function [vectorout]=entropy_moving(vectorin,eFave)
l_vectorin=length(vectorin);
l_half_interval=eFave;
ifor1=1;
for ifor1=1:l_vectorin
if ifor1>l_half_interval&&ifor1<(l_vectorin-l_half_interval)
vectorout(ifor1)=shannon_entro(vectorin(ifor1-l_half_interval:ifor1+l_half_interval));
elseif ifor1>=(l_vectorin-l_half_interval)
vectorout(ifor1)=shannon_entro(vectorin(ifor1:l_vectorin));
end
end
где я использовал shannon_entro вместо wentropy. Любая помощь действительно ценится.
PS размещен здесь также, так как не получил ответа в центральном центре Матлаба.
Обновление: Чтобы лучше объяснить, что я должен получить, я создал 5 различных 40-точечных серий и вычислил для каждой из них разогрев.
Результат показан здесь
для цикла должна возвращать массив 861x1, чьи первые 5 значений должны быть out1_40, out2_41, out3_42 и так далее.
Я uploded здесь
Все файлы txt, которые я использовал. Спасибо
Как вы вычисляете энтропию? – NKN
Существуют различные способы расчета энтропии: одна из них - функция e = goropy (ts, 'shannon'), которая возвращает значение для ts, переданного как параметр, в противном случае существуют различные методы, доступные в центральном обмене Matlab. –
@Albertoacepsut вы пробовали простой цикл 'for'? – Dan