Спектральная энтропия и спектральная энергия вектора в Matlab

Я собираюсь использовать спектральную энергию и спектральную энтропию в качестве функций для данных временных рядов на основе окна. Тем не менее, я немного смущен формулой, используемой для этого в Интернете, особенно в отношении специальной энтропии.

Я использовал энтропию из Matlab, но это не работает с данными временных рядов. Это просто дает мне ноль за все. http://www.mathworks.nl/help/images/ref/entropy.html Тестовое окно Результат энтропии для этой версии = 0

Тогда я использовал эту версию. http://www.mathworks.com/matlabcentral/fileexchange/28692-entropy Результат тестового окна Entropy для этой версии = 4,3219

Я также попробовал -sum(p.*log2(p)) после применения imhist к окну данных ( p = imhist(aw1(:));). Получил это из интерактивной справки.
Тестовое окно Результат энтропии для этой версии = 0,0369

Все они сообщали разные значения.

Для спектральной энергии я использую квадрат суммы коэффициентов fft. сумма (abs (fft (окно данных)). ^ 2)

Может ли кто-нибудь дать мне какое-либо предложение, которое является правильной версией?


person utengr    schedule 17.01.2014    source источник


Ответы (2)


Для спектральной энтропии шаги следующие:

  • Вычислите спектральную плотность мощности (PSD)
  • Нормализовать PSD
  • Рассчитайте энтропию −∑(P)log2(P), где P = PSD

    P=sum(abs(fft(data-window)).^2)
    %Normalization
    d=P(:);
    d=d/sum(d+ 1e-12);
    
    %Entropy Calculation
    logd = log2(d + 1e-12);
    Entropy(inc) = -sum(d.*logd)/log2(length(d));
    
person ederwander    schedule 22.01.2014

Я рассчитал спектральную энтропию сигнала. Я выполнил те же шаги. Но я не добавил 1e-12. Почему вы добавили 1e-12? Вы можете использовать сумму (d) вместо суммы (d + 1e-12)

person user33584    schedule 03.02.2018