Matlab中向量的谱熵和谱能

时间:2014-01-17 16:07:45

标签: matlab fft entropy spectrum frequency-domain

我将使用Spectral Energy和Spectral Entropy作为基于窗口的时间序列数据的功能。但是,我对在线使用的公式有点困惑,特别是关于特殊的熵。

我使用了Matlab的熵,但这不适用于时间序列数据。它只是给我一切零。 http://www.mathworks.nl/help/images/ref/entropy.html 测试窗口此版本的熵结果= 0

然后我使用了这个版本。 http://www.mathworks.com/matlabcentral/fileexchange/28692-entropy 测试窗口此版本的熵结果= 4.3219

在将imhist应用于数据窗口后,我也尝试了-sum(p。* log2(p))(p = imhist(aw1(:));)。通过在线帮助获得此信息 测试窗口此版本的熵结果= 0.0369

所有人都报告了不同的价值观。

对于光谱能量,我使用fft系数的平方和。 总和(ABS(FFT(数据窗口))。^ 2)

任何机构都可以给我任何正确版本的建议吗?

2 个答案:

答案 0 :(得分:4)

对于光谱熵,步骤如下:

  • 计算功率谱密度(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));
    

答案 1 :(得分:-1)

I have calculated the spectral entropy of signal. I followed the same steps.But I did not add that 1e-12.Why did you add that 1e-12? You can use sum(d) instead of sum(d+1e-12)