Advertisement

matlab在生物学中的应用,MATLAB在生物医学信号处理中的应用

阅读量:

福建电脑

2010年第2期

MATLAB在生物医学信号处理中的应用

高智贤,张业宏

(新乡医学院河南新乡453003)

摘要

摘要

【关键词】:MATLAB生物医学信号处理参数建模

0、绪论

生物医学工程涵盖理学、工学和医学科的交叉学科,在生命科学领域的拓展上具有巨大潜力。生物医学信号处理课程作为生物医学工程专业的重要基础课程,在当今数字化与信息化高速发展的背景下愈发重要。其主要职责在于根据生物医学信号的特点运用信息科学的基本理论与方法,在被干扰与噪声淹没的数据中提取并解析各种携带信息的生物医学信号,并对其进行分类整理。在生理信号分析的过程中通常会借助计算机来实现这一过程。MA TLAB在生物医学信号分析中的应用能够简化生理信号处理过程并使其更加实用化:原本复杂的数学运算通过简单的命令输入即可快速获得处理结果。随着学科发展FTRAN语言C语言等计算语言应运而生这些语言均要求较高的语法规范相比之下MA TLAB提供了一种类似于演草纸式的计算环境相比BasicDelphiFortran及C语言等其他编程语言使用MA TLAB能够在同等条件下提升工作效率约几倍

1、生物医学信号处理基础

生物医学 signal的研究主要对象是复杂的人体生理 signal,其主要目标在于利用滤波技术对生理 signal进行有效分离与提取,并对其组成成分进行定量分析,深入揭示其本质特征,并对生理 signal的变化趋势进行预测,以便预判未来可能出现的生理信息.通过分析所得数据结果来评估人体的生理状况,在临床诊断中具有重要的辅助价值.生物医学 signal processing的核心内容主要包括频谱分析与数字滤波技术的应用、未知物理信息的有效识别以及目标信息精确估计的方法.具体的数学运算主要包括差分方程求解过程、矩阵运算过程以及DFT变换的具体运算步骤等基本方法.此外,功率谱密度的具体估算方法以及卷积积分的具体实现途径等也是其中的重要组成部分.对于大部分 signal processing问题而言,可以通过合理组合上述基本数学运算与其他基础算法来实现预期的目标

2、Matlab在生物医学信号处理中的应用

2.1基本序列运算的实现

生物医学信号处理基于数字信号处理原理研究离散信号与离散系统特性其计算过程主要涉及卷积运算及其相关算法在MATLAB环境下具有高效的实现效果。具体而言首先建立两个测试信号其中x₁为0至15序列共16点x₂则由八个连续的单位数组成随后设定卷积长度k等于两序列长度之和减一即k=length(x₁)+length(x₂)-1接着将这两个序列分别通过快速傅里叶变换(FFT)转化为频域表示得到Y₁与Y₂最后通过反向快速傅里叶变换(IFFT)即可获得最终的卷积结果y=IFFT(Y₁·Y₂)

2.2在频谱分析中的应用

如图1所示为一段未知脑电EEG序列,通过MATLAB软件进行功率谱分析,获得图中显示的256点谱分析结果.其中,如第4行所示,程序依次计算并绘制了频域数据.具体而言,原始信号通过傅里叶变换法实现了道奇功率谱.

2.3利用参数建模对信号进行估计

生物医学信号处理中的信号估计技术起到关键作用,并被视为其中的重要组成部分。现有的常用估计方法多依赖于建立基于AR模型的算法来实现对信号特性的分析与预测。下面我们将深入探讨一个基于AR模型的典型应用实例。

主程序:p=input('输入AR模型的阶数p:');

a=zeros(1,p);

for i=1:p,

str=sprintf('请输入AR模型的参数a(%d)',i);

a(i)=input(str);

end

deltaW=input('请输入白噪声方差:');

L=input('请输入信号s(n)样本个数L:');

w=randn(1,L);

s=zeros(1,L);

for i=1:L,

temp=0;

for m=1:p,

if i-m>0,

temp=temp+a(m)*s(i-m);

end

s(i)=w(i)-temp;

end

end

Rss=zeros(p+1,p+1);

for m=1:p+1,

for n=1:p+1,

Fi=0;

for i=1:L-abs(m-n),

Fi=Fi+s(i)*s(i+abs(m-n));

end

Fi=Fi/(L-abs(m-n));

Rss(m,n)=Fi;

end

end

A=zeros(p+1,1);

e=zeros(p+1,1);

e(1)=deltaW;

A=Rss^(-1)*e;

for i=1:p,

sprintf('a(%d)=%f\n',i,A(i+1))

end

deltaW_estimate=0;

for i=1:p,

deltaW_estimate=deltaW_estimate+a(i)*Rss(1,i+1);

end

deltaW_estimate=deltaW_estimate+Rss(1,1);

sprintf('deltaW_estimate=%f',deltaW_estimate)

运行AR模型参数估计程序,选择p=1,1a=-0.6,L=100,

观察得到,与理论值进行比较可以发现大致相同,但是有误差。

3、结束语

下转第90页

下转第90页

9811ee644ab5e2b9939d59ace0c6615b.png

)109

全部评论 (0)

还没有任何评论哟~