生物医学信号处理
实验指导书
2009年8月
目录
实验一 随机信号的数字特征分析............................................................................ 1 实验二 数字相关和数字卷积.................................................................................... 4 实验三 维纳-霍夫方程............................................................................................ 7 实验四
Yule-Walker方程 ........................................................................................ 11 实验一 随机信号的数字特征分析
(一)实验目的
了解随机信号的特征。
掌握随机信号的数字特征分析算法。
(二)实验原理
对于平稳各态遍历随机过程,可以用单一样本函数的时间平均代替集总平均,即通过测量过程的单一样本来估计信号的统计特征量。
1n?x??xi 样本均值:mni?11n2样本均方值:Ex??xi
ni?1??2n1n????xi?m?x?2 样本方差:?ni?12x
(三)实验内容和步骤
用matlab编制程序,分析信号的数字特征,包括均值、方差、均方值、协方差。可以使用matlab自带函数。观察信号的直方图,粗略估计其概率分布。
信号1:利用MATLAB中的伪随机序列产生函数randn()产生的长1000点的序列;
信号2:实际采集的生物医学信号(脑电,心电等)。
(四)思考题
(1)改变每段数据长度,观察各段数字特征的分布情况。数据长度对于数字特征估计值有什么样的影响?
(2)观察伪随机序列,心电信号和脑电信号的直方图,它们之间是否相似? (3)通过同一数据分段估计数字特征,大致判断该数据是否可以看作广义
平稳。
(五)实验报告要求
简述实验原理及目的;
按实验要求编程分析所给信号的数字特征,记录运行结果; 简要回答思考题。
附:参考程序
% 选择信号类型并设定参数,产生信号x(n) clear; clc;
disp('请选择信号');
disp('1 ---- 伪随机序列randn()'); disp('2 ---- 实际测量的心电信号'); disp('3 ---- 实际测量的脑电信号'); b = input('信号:');
% 输入序号,产生相应信号 switch b case 1
L = input('每段数据长度 L \\n'); N = input('数据共多少段 N \\n'); x = randn(1, L*N); case 2
load ecgdata;
display(['数据总长度',num2str(length(x)),'点']); L = input('每段数据长度 L \\n'); N = input('数据共多少段 N \\n'); x = x(1:(N*L)); case 3
load eegdata;
display(['数据总长度',num2str(length(x)),'点']);
L = input('每段数据长度 L \\n'); N = input('数据共多少段 N \\n'); x = x(1:(N*L)); end
% 估计信号的统计特征量
Xmean = zeros(1,N); % 每段数据均值 Xms = zeros(1,N); % 每段数据均方值 Xvar = zeros(1,N); % 每段数据方差 for k = 1:N
xs = x(((k-1)*L+1):(k*L)); Xmean(k) = mean(xs); Xms(k) = std(xs).^2; Xvar(k) = var(xs); end % 显示 n = 1:N; figure;
subplot(2,2,1); stem(n,Xmean,'.'); title('mean'); subplot(2,2,2); stem(n,Xms,'.'); title('mean square'); subplot(2,2,3); stem(n,Xvar,'.'); title('variance'); xlabel(['L=',num2str(L),' ','N=',num2str(N)]);
subplot(2,2,4); hist(x,100); % 绘制数据直方图,观察信号大致的概率分布