Matlab中向量的谱熵和谱能量

Posted

技术标签:

【中文标题】Matlab中向量的谱熵和谱能量【英文标题】:Spectral Entropy and Spectral Energy of a vector in Matlab 【发布时间】:2014-01-17 16:07:44 【问题描述】:

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

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

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

在将 imhist 应用于数据窗口 (p = imhist(aw1(:));) 后,我还尝试了 -sum(p.*log2(p))。这是从在线帮助中获得的。 此版本的测试窗口熵结果 = 0.0369

他们都报告了不同的值。

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

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

【问题讨论】:

【参考方案1】:

对于谱熵,步骤是:

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

【讨论】:

【参考方案2】:

我已经计算了信号的谱熵。我遵循相同的步骤。但我没有添加那个 1e-12。你为什么添加那个 1e-12?您可以使用 sum(d) 代替 sum(d+1e-12)

【讨论】:

以上是关于Matlab中向量的谱熵和谱能量的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB中向量数组的向量范数

关于用matlab进行向量归一化的问题

matlab中如何提取一个向量中的元素作为一个变量的下标?

怎么用MATLAB比较两个行向量中相同位置的元素

MATLAB-向量相关计算

matlab里如何把一个矩阵相同列向量的列序号依次输出出来?