关于熵的一个总结

1 篇文章 0 订阅
1 篇文章 0 订阅

近似熵

(Approximate Entropy,ApEn,AE)

  • 函数apen = ApEn( dim, r, data, tau )

  • 应用:用于量化时间序列波动的规律性和不可预测性的非线性动力学参数,它用一个非负数来表示一个时间序列的复杂性

  • 值的含义:反映了时间序列中新信息发生的可能性,越复杂的时间序列对应的近似熵越大

    • 如果一个时间序列的规律性比较强,则其近似熵值(ApEn)比较小,对应地,一个比较复杂的时间序列则对应一个较大的熵值。
  • 参数选择

    • dim:表示重构相空间的维度一般取2或3
    • r :表示“相似度”的度量值,r的选择在很大程度上取决于实际应用场景,通常选择 r=0.2*std,其中std表示原时间序列的标准差
    • data:输入的数据。
    • tau:为降采样参数,用于对原始信号进行降采样处理,程序中默认值为1,即不进行降采样处理。
  • 示例可参看——近似熵理论相关知识与代码实现 讲清了近似熵的原理及使用。

  • 优势:

    • a. 对数据长度的依赖性较小。 ApEn可以用于小数据样本(n<50),并可实现实时计算
    • b. 抗噪声能力较强。如果数据含有噪声,则可以将ApEn与噪声水平进行比较,以确定原始数据中真实信息的表达程度
  • matlab函数的代码如下
    该部分代码从近似熵理论相关知识与代码实现 中所得。
    备注:示例程序来自matlab社区File Exchange板块,由Kijoon Lee分享,在此表示感谢!

function apen = ApEn( dim, r, data, tau )
% ApEn
%   dim : embedded dimension
%   r : tolerance (typically 0.2 * std)
%   data : time-series data
%   tau : delay time for downsampling

%   Changes in version 1
%       Ver 0 had a minor error in the final step of calculating ApEn
%       because it took logarithm after summation of phi's.
%       In Ver 1, I restored the definition according to original paper's
%       definition, to be consistent with most of the work in the
%       literature. Note that this definition won't work for Sample
%       Entropy which doesn't count self-matching case, because the count
%       can be zero and logarithm can fail.
%
%       A new parameter tau is added in the input argument list, so the users
%       can apply ApEn on downsampled data by skipping by tau.
%---------------------------------------------------------------------
% coded by Kijoon Lee,  kjlee@ntu.edu.sg
% Ver 0 : Aug 4th, 2011
% Ver 1 : Mar 21st, 2012
%---------------------------------------------------------------------
if nargin < 4, tau = 1; end
if tau > 1, data = downsample(data, tau); end

N = length(data);
result = zeros(1,2);

for j = 1:2
    m = dim+j-1;
    phi = zeros(1,N-m+1);
    dataMat = zeros(m,N-m+1);
    
    % setting up data matrix
    for i = 1:m
        dataMat(i,:) = data(i:N-m+i);
    end
    
    % counting similar patterns using distance calculation
    for i = 1:N-m+1
        tempMat = abs(dataMat - repmat(dataMat(:,i),1,N-m+1));
        boolMat = any( (tempMat > r),1);
        phi(i) = sum(~boolMat)/(N-m+1);
    end
    
    % summing over the counts
    result(j) = sum(log(phi))/(N-m+1);
end

apen = result(1)-result(2);

end

以上来自——CSDN博主「木须耐豆皮」近似熵理论相关知识与代码实现

注: 当对一个或几个整数频率的正弦分量使用该熵值时,得出的结果接近于0。
当频率是一个小数时,得到的结果会变大,将几个小数频率的正弦信号相加会逐渐变大。

样本熵

(Sample Entropy, SampEn, SE)

  • 函数saen = SampEntropy( dim, r, data, tau )

  • 应用:基于近似熵(ApEn)的一种用于度量时间序列复杂性的改进方法,在评估生理时间序列的复杂性和诊断病理状态等方面均有应用。也常用于机械信号分析与故障诊断领域。

  • 值的含义:产生新模式的概率越大,序列的复杂性程度越高熵值就越大

  • 参数选择

    • 嵌入维数dim:一般取1或2
    • 相似容限r:的选择在很大程度上取决于实际应用场景,通常选择r=0.1∗std∼0.25∗std,其中std表示原时间序列的标准差
    • data :输入的数据。
    • tau:为降采样参数,用于对原始信号进行降采样处理,程序中默认值为1,即不进行降采样处理。
  • 优势

    • 样本熵的计算不依赖数据长度
    • 样本熵具有更好的一致性,即参数m和r的变化对样本熵的影响程度是相同的。
  • 代码
    该部分代码从 排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之样本熵中所得。可参见样本熵理论相关知识与代码实现 博客中具体的原理及示例。
    备注:示例程序是根据上文算法在Kijoon Lee分享的样本熵代码“SampE”的基础上修改得来的,在此表示感谢!

%% 样本熵函数
function sampEn = SampleEntropy( dim, r, data, tau )
%   注意:这个样本熵函数是在Kijoon Lee的基础上做的修改
%   样本熵算法的提出者:Richman J s,Moorman J R. Physiological time-seriesanalysis using approximate entropy and sample entropy[J. American Journal of Physiology Heart &. Circula-tory Physiology,2000278(6):2039-2049.
%   计算给定时间序列数据的样本熵
%
%   样本熵在概念上类似于近似熵,但有以下区别:
%       1)样本熵不计算自匹配,通过在最后一步取对数,避免了可能出现的log(0)问题;
%       2)样本熵不像近似熵那样依赖数据的长度。
% 
%   dim:嵌入维数(一般取1或者2)
%   r:相似容限( 通常取0.1*Std(data)~0.25*Std(data) )
%   data:时间序列数据,data须为1xN的矩阵
%   tau:下采样延迟时间(在默认值为1的情况下,用户可以忽略此项)
% 
if nargin < 4, tau = 1; end
if tau > 1, data = downsample(data, tau); end
N = length(data);
result = zeros(1,2);
for m = dim:dim+1
    Bi = zeros(N-m+1,1);
    dataMat = zeros(N-m+1,m);
    
    % 设置数据矩阵,构造成m维的矢量
    for i = 1:N-m+1
        dataMat(i,:) = data(1,i:i+m-1);
    end
    
    % 利用距离计算相似模式数
    for j = 1:N-m+1
        % 计算切比雪夫距离,不包括自匹配情况
        dist = max(abs(dataMat - repmat(dataMat(j,:),N-m+1,1)),[],2);
        % 统计dist小于等于r的数目
        D = (dist <= r);
        % 不包括自匹配情况
        Bi(j,1) = (sum(D)-1)/(N-m);
    end
 
    % 求所有Bi的均值
    result(m-dim+1) = sum(Bi)/(N-m+1);	
end
    % 计算得到的样本熵值
    sampEn = -log(result(2)/result(1));	
end

以上来自——CSDN博主「Zhi Zhao」 排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之样本熵

模糊熵

(Fuzzy Entropy, FuzzyEn, FE)

  • 函数fuzzyen = Fuzzy_Entropy( dim, r, data, tau )

    • 样本熵的基础上通过引入一种指数函数——模糊隶属度函数,得到了改进的样本熵,即模糊熵
  • 应用:衡量的是新模式产生的概率大小,测度值越大,新模式产生的概率越大,即序列复杂度越大。

  • 值的含义越复杂的时间序列对应的模糊熵越大

  • 参数选择

    • 嵌入维数dim:较大的m能更细致地重构系统的动态演化过程。
    • 相似容限r:过大的相似容限会导致信息丢失,相似容限值越大,丢失的信息越多,而太小的相似容限度则会增加结果对噪声的敏感性,一般定义r为r*SD,其中SD(Standard Deviation)为原一维时间序列的标准差
    • data :输入的数据。
    • tau:为降采样参数,用于对原始信号进行降采样处理,程序中默认值为1,即不进行降采样处理。
    • 代码一
%% 模糊熵函数
function FuzEn = FuzzyEntropy(data,dim,r,n,tau)
%
% This function calculates fuzzy entropy (FuzEn) of a univariate signal data
%
% Inputs:
%
% data: univariate signal - a vector of size 1 x N (the number of sample points)
% dim: embedding dimension
% r: threshold (it is usually equal to 0.15 of the standard deviation of a signal - because we normalize signals to have a standard deviation of 1, here, r is usually equal to 0.15)
% n: fuzzy power (it is usually equal to 2)
% tau: time lag (it is usually equal to 1)
% 模糊熵算法的提出者:Chen Weiting,Wang Zhizhong,XieHongbo,et al. Characterization of surfaceEMG signal based on fuzzy entropy. IEEE Transactions on Neural Systems and Rehabilitation Engineering. 2007,15(2):266-272.
%
if nargin == 4, tau = 1; end
if nargin == 3, n = 2; tau=1; end
if tau > 1, data = downsample(data, tau); end
 
N = length(data);
result = zeros(1,2);
 
for m = dim:dim+1
    count = zeros(N-m+1,1);
    dataMat = zeros(N-m+1,m);
    
    % 设置数据矩阵,构造成m维的矢量
    for i = 1:N-m+1
        dataMat(i,:) = data(1,i:i+m-1);
    end
    % 利用距离计算相似模式数
    for j = 1:N-m+1
        % 计算切比雪夫距离,不包括自匹配情况
        dataMat=dataMat-mean(dataMat,2);
        tempmat=repmat(dataMat(j,:),N-m+1,1);
        dist = max(abs(dataMat - tempmat),[],2);
        D=exp(-(dist.^n)/r);
        count(j) = (sum(D)-1)/(N-m);
    end
    result(m-dim+1) = sum(count)/(N-m+1);
end
    % 计算得到的模糊熵值
    FuzEn = log(result(1)/result(2));
end

以上来自——CSDN博主「Zhi Zhao」排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之模糊熵

  • 代码二
function fuzzyen = Fuzzy_Entropy( dim, r, data, tau )
% FUZZYEN Fuzzy Entropy
%   calculates the fuzzy entropy of a given time series data

% Similarity definition based on vectors' shapes, together with the
% exclusion of self-matches, earns FuzzyEn stronger relative consistency
% and less dependence on data length.

%   dim     : embedded dimension 
%   r       : tolerance (typically 0.2 * std)
%   data    : time-series data
%   tau     : delay time for downsampling (user can omit this, in which case
%             the default value is 1)
%

if nargin < 4, tau = 1; end
if tau > 1, data = downsample(data, tau); end

N = length(data);
Phi = zeros(1,2);

for m = dim:dim+1
    
    Ci = zeros(1,N-m+1);
    dataMat = zeros(m,N-m+1);
    
    % setting up data matrix - form vectors
    for j = 1:m
        dataMat(j,:) = data(j:N-m+j);
    end
    
    % baseline
    U0 = mean(dataMat);
    % remove baseline and calculate the absolute values
    Sm = abs(dataMat - repmat(U0,m,1));
    
    % Given vector Si, calculate the similarity degree between its'
    % neighboring vector Sj
    for i = 1:N-m+1
        
        Sm_tmp = Sm;
        Sm_tmp(:,i) = []; % excluded self-matches
        % maximum absolute difference of the corresponding scalar components
        % of Si and Sj (j≠i)
        dij = max(repmat(Sm(:,i),1,N-m) - Sm_tmp);
        % similarity degree
        Aij = exp(-log(2)*(dij/r).^2);
        % averaging all the similarity degree of its neighboring vectors Sj
        Ci(i) = sum(Aij)/(N - m);
        
    end
    
    % summing over the counts
    Phi(m-dim+1) = sum(Ci)/(N-m+1); % φ_m and φ_m+1
    
end
fuzzyen = log(Phi(1))-log(Phi(2));  % fuzzyen = ln(φ_m)-ln(φ_m+1)
end

以上来自——CSDN博主「木须耐豆皮」模糊熵理论相关知识与代码实现

排列熵

(Permutation entropy,PE)

  • 函数[pe ,hist] = PermutationEntropy(y,m,t)

  • 应用:熵可以表征信号的复杂性以及度量信息的不确定性,适用于处理非线性问题。排列熵通过比较相邻时间序列的值,检测时间序列的动态变化。一种检测动力学突变时间序列随机性的方法,能够定量评估信号序列中含有的随机噪声

  • 值的含义熵值越小,说明时间序列越简单,越规则;反之,熵值越大,则时间序列越复杂,越随机。

  • 参数选择

    • y:输入数据
    • m: 嵌入维数
    • t:延迟时间
      • 相空间重构eDim(m)为嵌入维数,eLag(t)为延迟时间
      • 当X具有多列和多行时,每列将被视为独立的时间序列,该算法对X的每一列假设相同的时间延迟和嵌入维度,并以标量返回ESTDIM和ESTLAG。
      • [~,eLag,eDim] = phaseSpaceReconstruction(X);
  • 代码:

%% 排列熵算法
function [pe ,hist] = PermutationEntropy(y,m,t)

%  Calculate the permutation entropy(PE)
%  排列熵算法的提出者:Bandt C,Pompe B. Permutation entropy:a natural complexity measure for time series[J]. Physical Review Letters,2002,88(17):174102.

%  Input:   y: time series;
%           m: order of permuation entropy 嵌入维数
%           t: delay time of permuation entropy,延迟时间

% Output: 
%           pe:    permuation entropy
%           hist:  the histogram for the order distribution
ly = length(y);
permlist = perms(1:m);
[h,~]=size(permlist);
c(1:length(permlist))=0;

 for j=1:ly-t*(m-1)
     [~,iv]=sort(y(j:t:j+t*(m-1)));
     for jj=1:h
         if (abs(permlist(jj,:)-iv))==0
             c(jj) = c(jj) + 1 ;
         end
     end
 end
hist = c;
c=c(c~=0);
p = c/sum(c);
pe = -sum(p .* log(p));
% 归一化
pe=pe/log(factorial(m));
end

以上来自——CSDN博主「Zhi Zhao」排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现

多尺度排列熵

(Multiscale entropy, MSE)

  • 函数[mse sf] = MSE_Costa2005(x,nSf,m,r)

  • 应用:多尺度熵将样本熵扩展到多个时间尺度,以便在时间尺度不确定时提供额外的观察视角。样本熵的问题在于它没有很好地考虑到时间序列中可能存在的不同时间尺度。

    • 在分析语音信号时,在单词时间尺度下统计信号的复杂度会比统计整个语音片段的复杂度更加有效。但如果你不知道音频信号代表语音,甚至对语音概念没有任何了解,你就不知道应该运用什么时间尺度以从原始信号中获得更多有用的信息。因此,通过多个时间尺度来分析问题将会得到更多信息。
    • 脑电图中,潜在的脑电模式是未知的,因此相关的时间尺度也是未知的。所以,需要通过多尺度样本熵来分析哪个尺度对特定场合下脑电信号的分析更有用。
  • 值的含义熵值越小,说明时间序列越简单,越规则;反之,熵值越大,则时间序列越复杂,越随机。

  • 参数选择

  • x:输入数据

  • nSf:比例因子数

  • m:比较的线段长度,一般选2

  • r:匹配的阈值。通常选择在时间序列样本偏差的10%到20%之间;当x进行z变换时:将公差定义为r乘以标准偏差。例如可以选*std(y)0.15。(为了避免噪声对样本熵估计的显著贡献,r必须大于大部分的信号噪声。选择r的另一个标准是基于信号的动态特性(signal dynamics)。)

  • 代码

function [mse,sf] = MSE_Costa2005(x,nSf,m,r)
% [mse(:,ii) sf] = MSE_Costa2005(y(:,ii),20,2,std(y(:,ii))*0.15);
 
% [mse sf] = MSE_Costa2005(x,nSf,m,r)
%
% x   - input signal vector (e.g., EEG signal or sound signal)
% nSf - number of scale factors
% m   - template length (epoch length); Costa used m = 2 throughout 
% r   - matching threshold; typically chosen to be between 10% and 20% of
%       the sample deviation of the time series; when x is z-transformed:
%       defined the tolerance as r times the standard deviation
%
% mse - multi-scale entropy
% sf  - scale factor corresponding to mse
%
% Interpretation: Costa interprets higher values of entropy to reflect more
% information at this scale (less predictable when if random). For 1/f
% pretty constant across scales.
%
% References:
% Costa et al. (2002) Multiscale Entropy Analysis of Complex Physiologic
%    Time Series. PHYSICAL REVIEW LETTERS 89
% Costa et al. (2005) Multiscale entropy analysis of biological signals.
%    PHYSICAL REVIEW E 71, 021906.
%
% Requires: SampleEntropy.m
%
% Description: The script calculates multi-scale entropy using a
% coarse-graining approach.
%
% ---------
%
%    Copyright (C) 2017, B. Herrmann
%    This program is free software: you can redistribute it and/or modify
%    it under the terms of the GNU General Public License as published by
%    the Free Software Foundation, either version 3 of the License, or
%    (at your option) any later version.
%
%    This program is distributed in the hope that it will be useful,
%    but WITHOUT ANY WARRANTY; without even the implied warranty of
%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%    GNU General Public License for more details.
%
%    You should have received a copy of the GNU General Public License
%    along with this program.  If not, see <http://www.gnu.org/licenses/>.
%
% ----------------------------------------------------------------------
% B. Herrmann, Email: herrmann.b@gmail.com, 2017-05-06
 
% pre-allocate mse vector
mse = zeros([1 nSf]);
 
% coarse-grain and calculate sample entropy for each scale factor
for ii = 1 : nSf
	% get filter weights
	f = ones([1 ii]);
	f = f/sum(f);
 
	% get coarse-grained time series (i.e., average data within non-overlapping time windows)
	y = filter(f,1,x);
	y = y(length(f):end);
	y = y(1:length(f):end);
	
	% calculate sample entropy
	mse(ii) = SampleEntropy(y,m,r,0);
end
 
% get sacle factors
sf = 1 : nSf;

以上来自——CSDN博主「木须耐豆皮」多尺度熵

参考网址

近似熵理论相关知识与代码实现
样本熵理论相关知识与代码实现
模糊熵理论相关知识与代码实现
排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之样本熵
排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之模糊熵
排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现
多尺度熵

  • 19
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 合金是一种特殊的材料,它具有高强度、高弹性和良好的耐腐蚀性。它们可以用于制造轻量级的零部件,从而为汽车、航空航天、军事装备和医疗器械提供轻量级的附件。合金的组成可以分为两类:熔点低的和熔点高的。其中,熔点低的合金可以通过铸造或锻造工艺制成,而熔点高的合金则可通过熔点焊接(TIG)工艺制成。合金的性能特性可以通过添加不同的元素来改变,从而满足不同的应用要求。 ### 回答2: 高合金是一种新型多元合金材料,其由多种原子组成,具有高度的原子混乱程度和增。为了提供关于高合金的综述,以下是一个框架: 1. 概述 - 解释高合金的定义和基本概念 - 突出其相对于传统合金的独特之处和优势 2. 组成元素 - 介绍高合金常用的基础元素以及添加的合金元素 - 强调元素的选择对合金性能的影响 3. 合金制备方法 - 简要介绍几种常见的高合金制备方法,如电弧熔炼、高能球磨和沉淀法 - 强调每种方法的特点及应用范围 4. 结构与性质 - 探讨高合金的晶体结构及其与制备方法和组成元素之间的关系 - 分析其物理、力学和化学性质的研究进展 5. 应用领域 - 总结合金在不同领域的应用,如航空航天、能源、汽车和电子等 - 强调其在特定应用领域中的优势和潜在应用价值 6. 挑战与前景 - 讨论目前高合金研究和应用中面临的挑战和问题 - 展望高合金的发展前景,包括进一步研究方向和潜在的创新应用 通过以上框架,读者将对高合金有一个整体的了解,并能深入了解其组成、制备、结构与性质,以及应用和未来前景。这将为高合金领域的研究者和工程师提供一个有益的参考。 ### 回答3: 高合金是指由五种或更多组元组成的合金,其特点是具有高度无序的原子排列。在高合金的合金体系中,原子不是按照一定的比例和排列方式组合在一起,而是以随机的方式分布,形成高状态。这种高度无序的原子排列导致了高合金独特的物理和化学性质。 本综述将以以下几个方面来讨论高合金的研究成果和相关应用。 首先,我们将介绍高合金的组成和制备方法。高合金采用了多元组元的设计思路,可以将不同原子组元混合在一起,形成复杂的合金体系。制备方法包括机械合金化、熔融混合等,这些方法可以实现原子的均匀分布和形成高合金。 接着,我们将探讨高合金的物理性质。由于高合金的原子排列无序,其具有较高的熔点、硬度和耐腐蚀性。这些独特的物理性质使高合金在航空航天、能源材料等领域具有广泛的应用前景。 然后,我们将讨论高合金的微观结构和相变行为。高合金由于其复杂的组元和无序的原子排列,其微观结构和相变行为比较复杂。研究高合金的微观结构有助于理解其性质和行为,并对合金的制备和应用进行指导。 最后,我们将展望高合金的未来发展方向。随着对高合金的研究逐渐深入,人们对其性质和应用的理解也会越来越深入。未来的研究可以从扩展高合金的组成范围、优化合金的制备方法和拓展新的应用领域等方面进行。 综上所述,本综述将围绕高合金的组成和制备方法、物理性质、微观结构和相变行为以及未来发展方向展开探讨。通过对高合金这一新型合金材料的系统总结和分析,有望为高合金的研究和应用提供有益的参考和指导。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值