样本熵的matlab程序
来源:互联网 发布:node.js 进入目录 编辑:程序博客网 时间:2024/05/09 02:57
转自http://www.ilovematlab.cn/thread-89427-1-1.html MATLAB下的动态样本熵计算
- function SampEnVal = SampEn(data, m, r)
- %SAMPEN 计算时间序列data的样本熵
- % data为输入数据序列
- % m为初始分段,每段的数据长度
- % r为阈值
- % $Author: lskyp
- % $Date: 2010.6.20
- % Orig Version: V1.0--------分开计算长度为m的序列和长度为m+1的序列
- % 这一版的计算有些问题,需要注意两个序列总数都要为N-m
- % Modi Version: V1.1--------综合计算,计算距离时通过矩阵减法完成,避免重循环
- % V1.1 Modified date: 2010.6.23
- data = data(:)';
- N = length(data);
- Nkx1 = 0;
- Nkx2 = 0;
- % 分段计算距离,x1为长度为m的序列,x2为长度为m+1的序列
- for k = N - m:-1:1
- x1(k, :) = data(k:k + m - 1);
- x2(k, :) = data(k:k + m);
- end
- for k = N - m:-1:1
- % x1序列计算
- % 统计距离,由于每行都要与其他行做减法,因此可以先将该行复制为N-m的矩阵,然后
- % 与原始x1矩阵做减法,可以避免两重循环,增加效率
- x1temprow = x1(k, :);
- x1temp = ones(N - m, 1)*x1temprow;
- % 可以使用repmat函数完成上面的语句,即
- % x1temp = repmat(x1temprow, N - m, 1);
- % 但是效率不如上面的矩阵乘法
- % 计算距离,每一行元素相减的最大值为距离
- dx1(k, :) = max(abs(x1temp - x1), [], 2)';
- % 模板匹配数
- Nkx1 = Nkx1 + (sum(dx1(k, :) < r) - 1)/(N - m - 1);
-
- % x2序列计算,和x1同样方法
- x2temprow = x2(k, :);
- x2temp = ones(N - m, 1)*x2temprow;
- dx2(k, :) = max(abs(x2temp - x2), [], 2)';
- Nkx2 = Nkx2 + (sum(dx2(k, :) < r) - 1)/(N - m - 1);
- end
- % 平均值
- Bmx1 = Nkx1/(N - m);
- Bmx2 = Nkx2/(N - m);
- % 样本熵
- SampEnVal = -log(Bmx2/Bmx1);
阅读全文
0 0
- 样本熵的matlab程序
- 自己套用的简单程序样本
- 用matlab生成样本
- Matlab样本增加
- Matlab的svmtrain从数据集中抽样训练样本和测试样本的方法
- 用 Matlab 验证:部分样本空间 可以预测 总体样本的性质
- matlab中训练样本随机打乱的方法
- MATLAB 数据分析一: 描述样本数据的几个基本特征
- matlab中样本相关系数的计算与测试
- Matlab与随机变量和样本的数字特征
- matlab预处理图像样本均衡
- 反样本程序
- 第四十篇:opencv训练的正负样本的剪裁程序
- 试述样本程序比赛的几个理由
- 试述样本程序比赛的几个理由
- 试述样本程序比赛的几个理由
- 试述样本程序比赛的几个理由
- 《试述样本程序比赛的几个理由》读后感
- android7.0+关闭wifi连接CA验证
- android其实很简单 -- roaster 以代码构建代码
- LLVM学习笔记(24)
- Android屏幕适配
- Python基础篇之__len__
- 样本熵的matlab程序
- 新一代的Fetch
- 网站图片优化技巧有哪些
- 51单片机中的复位电路的原理
- Oracle 创建普通用户,并赋予权限
- C++ 判断double 类型 是否为0 编译器
- PHP 的 BC MATH 系列数学函数
- 英语音标
- 前端知识图谱