地理与生物信息学院
2011 / 2012 学年第 二 学期
实 验 报 告
课程名称:
实验名称:
医学信号处理
样本熵算法实现
班 级 学 号:
11111111
学 生 姓 名:
AAAAAAA
指 导 教 师:
BBBBB
日
期:
2012 年 6 月
一、 实验题目:
实现样本熵算法并能够在 Matlab 平台上编写出程序,用样本熵
算法分析医学信号并得出结果。
二、实验要求:
可以熟练使用 Matlab 进行编程。
三、实验内容:
对一个 N 点的时间序列
1:)({
ju
Nj
}
,
构 成
mN
1
个 矢 量
)(iX m
1{
i
mNi
}1
, 其 中
)(
iX m
({
iu
k
0:)
mk
}1
是从 )(iu 到
(
miu
)1
的 m 个数据点的矢
量。
两个矢量的距离定义为:
),([
(
juiud
)]
max{
(
ix
k
)
(
ju
k
})
0
mk
}1
即它们的对应的标量分量的最大差额。
iB 为距离矢量 )(iX m 为 r 的矢量
X m 的数量, iA 为距离矢量
)( j
X m 为 r 的矢量
)(1 i
X m 的数量。则样本熵定义为:
)(1
j
log( BA
SampEn
其中 r 为时间序列 )( ju 大小的标准差乘以 15.0 ,即:
)
r
15.0
STD
((
ju
))
2
四、实验过程:
实现代码:
clear;
yf=textread('d:\nsrdb-16786.txt');
N=1000;
random=fix(rand(1)*10000);
X(1:N)=yf(random:(random-1+N),2)*100+2100;
r=0.15*std(X);
A=0;
B=0;
m=3;
for k=1:m
Y(1:N-m+1,k)=X(k:(N-m+k));
end
for i=1:N-m
for j=(i+1):N-m+1
dij(1:m)=abs(Y(i,1:m)-Y(j,1:m));
d=max(dij);
if(d<=r)
B=B+1;
end
end
end
m=m+1;
for k=1:m
Y(1:N-m+1,k)=X(k:(N-m+k));
end
for i=1:N-m
for j=(i+1):N-m+1
dij(1:m)=abs(Y(i,1:m)-Y(j,1:m));
d=max(dij);
if(d<=r)
A=A+1;
end
end
end
实验结果:
SampEn =0.1784
3
六、实验小结:
通过实验了解了很多有关样本熵算法的公式,样本熵定义为:
SampEn
log( BA
)
。这对医学信号处理这门课的学习也有很大帮助,
此次实验的主要内容是使用 Matlab 软件编写、实现样本熵算法并处
理生物医学信号。
4