Спектральная энтропия и спектральная энергия вектора в 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 = PSDP=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)