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

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

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

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

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

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

Для спектральной энергии я использую квадратичную сумму коэффициентов БПФ. сумма (абс (FFT (данные окна)).^2)

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

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));
    

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

Другие вопросы по тегам