Matlab中向量的频谱熵和频谱能量

3

我将使用频谱能量和频谱熵作为基于窗口的时间序列数据的特征。然而,我对在线上使用的其公式有些困惑,尤其是关于特殊熵的部分。

我在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系数的平方和。 sum(abs(fft(data-window)).^2)

有人可以给我一些建议,哪个是正确版本吗?

2个回答

5
对于频谱熵,步骤如下:
  • Compute the Power Spectral Density(PSD)
  • Normalize the PSD
  • Calculate the Entropy −∑(P)log2(P), where 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

我已经计算了信号的光谱熵。我按照相同的步骤进行了操作,但是我没有添加那个1e-12。你为什么要添加那个1e-12呢?你可以使用sum(d)代替sum(d+1e-12)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接