医学信号处理 实验指导书
医学信号处理实验1 离散时间信号的表示一、实验目的1.加深对离散时间信号特点的理解2.掌握MATLAB 中一些常用离散时间信号的表示方法 3.学习MATLAB 中M 文件的使用和调用函数方法二、实验方法与示例1.正弦信号离散正弦序列的MATLAB 表示与连续信号类似,只不过是用stem 函数而不是用plot 函数来画出序列的波形。
下面是正弦序列k ⎪⎭⎫⎝⎛6sin π的MATLAB 源程序。
%正弦序列实现程序 k=0:39;fk=sin(pi/6*k); stem(k,fk)title('正弦序列sin(pi/6*k)的波形') 程序运行结果如图1–1所示。
510152025303540-1-0.8-0.6-0.4-0.200.20.40.60.81正弦序列sin(pi/6*k)的波形图1–1 正弦序列波形2.实指数序列离散实指数序列的一般形式为kca ,可用MA TLAB 中的数组幂运算(即点幂运算)c*k a .^来实现。
可直接实现 也可调用用MATLAB 编写绘制离散时间实指数序列波形的函数。
下面为实指数序列的波形函数。
function dszsu(c,a,k1,k2) %c :指数序列的幅度 %a :指数序列的底数%k1:绘制序列的起始序号 %k2:绘制序列的终止序号 k=k1:k2; x=c*(a.^k); stem(k,x,'filled')3.复指数序列对于复指数序列,其一般形式为[]kj kf k r eω=,可以通过调用下面绘制复指数序列时域波形的MATLAB 函数。
function dfzsu(n1,n2,r,w)%n1:绘制波形的虚指数序列的起始时间序号 %n2:绘制波形的虚指数序列的终止时间序号 %w :虚指数序列的角频率 %r: 指数序列的底数 k=n1:n2;f=(r*exp(i*w)).^k; Xr=real(f); Xi=imag(f); Xa=abs(f); Xn=angle(f);subplot(2,2,1), stem(k,Xr,'filled'),title('实部'); subplot(2,2,3), stem(k,Xi,'filled'),title('虚部'); subplot(2,2,2), stem(k,Xa,'filled'),title('模'); subplot(2,2,4), stem(k,Xn,'filled'),title('相角');4.单位抽样序列可以通过借助MA TLAB 中的零矩阵函数zeros 表示。
全零矩阵zeros(1,N)产生一个由N 个零组成的列向量,对于有限区间的[]k δ可以通过以下MATLAB 程序表示。
% 单位抽样序列实现程序 k=-30:30;delta=[zeros(1,30),1,zeros(1,30)]; stem(k,delta)程序运行结果如图1–2所示。
-30-20-1010203000.10.20.30.40.50.60.70.80.91单位抽样序列的波形-30-20-1010203000.10.20.30.40.50.60.70.80.91单位阶跃序列的波形图1–2 单位抽样序列波形 图1–3 单位阶跃序列波形5.单位阶跃序列可以通过借助MATLAB 中的单位矩阵函数ones 表示。
单位矩阵ones(1,N)产生一个由N 个1组成的列向量,对于有限区间的[]k u可以通过以下MA TLAB程序表示。
% 单位阶跃序列实现程序k=-30:30;uk=[zeros(1,30),ones(1,31)];stem(k,uk)程序运行结果如图1–3所示。
6.Matlab函数、及其调用方法在MA TLAB语言中,M文件有两种形式:脚本和函数。
脚本没有输入/输出参数,只是一些函数和命令的组合。
它可以在MA TLAB环境下直接执行,也可以访问存在于整个工作空间内的数据。
由脚本建立的变量在脚本执行完后仍将保留在工作空间中可以继续对其进行操作,直到使用clear命令对其清除为止。
函数是MA TLAB语言的重要组成部分。
MATLAB提供的各种工具箱中的M文件几乎都是以函数的形式给出的。
函数接收输入参数,返回输出参数,且只能访问该函数本身工作空间中的变量,从命令窗或其他函数中不能对其工作空间的变量进行访问。
读者可以在信号处理的基本理论和MATLAB信号处理工具箱函数的基础上,自己编写一些子程序以便调用。
(1) 函数结构MATLAB语言中提供的函数通常由以下五个部分组成:函数定义行:以function开头,函数名(必须与文件名相同)及函数输入输出参数在此定义;H1行:第一注释行,供lookfor和help在线帮助使用;函数帮助文件;通常包括函数输入输出参数的含义,调用格式说明;函数体:它包括进行运算和赋值的所有MATLAB程序代码。
函数体中可以包括流程控制、输入/输出、计算、赋值、注释以及函数调用和脚本文件调用等。
在函数体中完成对输出参数的计算;注释。
这五个部分中最重要的是函数定义行和函数体。
函数定义行是一个MATLAB函数所必需的,其他各部分的内容可以没有,这种函数称为空函数。
例:function dszsu(c,a,k1,k2)%c:指数序列的幅度%a:指数序列的底数%k1:绘制序列的起始序号%k2:绘制序列的终止序号k=k1:k2; %定义序列的起止范围x=c*(a.^k); %实指数序列的运算stem(k,x,'filled') %画图此函数为自定义的实现实数序列的函数,此函数包括有函数定义行,函数帮助文件,函数体,注释四部分。
2.函数调用函数调用的过程实际上就是参数传递的过程。
例如,在一个脚本文件里调用函数“max”可采用如下面的方式进行。
n=1:20;a=sin(2*pi*n/20);[Y,I]=max(a);该调用过程把变量“a ”传给了函数中的输入参数“x ”,然后把函数运算的返回值传给输出参数“Y ”和“I ”。
其中,Y 是a 序列的最大值,I 是最大值Y 对应的坐标值。
在数字信号处理的基本理论和MATLAB 信号处理工具箱函数的基础上,可以自己编写一些子程序以便调用。
(1)单位抽样序列0()n n δ-的生成函数impseq.m function [x,n]=impseq(n0,ns,nf)n=[ns:nf];x=[(n-n0)==0]; %序列起点为ns ,终点为nf ,在n=n0处生成一个单位脉冲。
(2)单位阶跃序列0()u n n -的生成函数stepseq.mfunction [x,n]=stepseq(n0,ns,nf)n=[ns:nf];x=[(n-n0)>=0]; %序列起点为ns ,终点为nf ,在n=n0处生成单位阶跃。
三、实验内容1.画出正弦序列2sin()7k π,计算其周期性,并根据画出的序列图进行验证。
2.在一幅图柄中画出四个实指数波形nca ,其中2c =,a 值分别为43,45,43,45--,并分析a 取值不同时实指数序列的收敛性。
3.画出虚指数波形k j k j e e24,π,分析这两个序列的周期性。
4.画出复指数序列波形[]kj ker k f ω=,其中(1) 1.7,4r ωπ==。
(2)0.7,6r ωπ==。
(3)1,3r ωπ==。
分析当r>1时,当0<r<1时,当r=1时,复指数序列的实部和虚部的变化趋势。
5.编写程序来产生下列基本脉冲序列。
(1)单位抽样序列,起点n s =0,终点n f =10,在n 0=3处有一单位脉冲。
(2)单位阶跃序列,起点n s =0,终点n f =10,在n 0=3前为0,在n 0=3后为1。
四、实验要求1.每个实验内容都要求建立一个脚本文件来实现。
2.在实验内容实现时,学习函数文本的建立和调用。
3.在实验报告中写出完整的自编程序,并给出实验结果和对应的分析。
4.在绘制图形时要求图形的完整性,每个图形都要有图标标示。
五、思考题1.无限长信号和周期信号在计算机中是如何表示的? 2.离散时间信号和连续时间信号区别是什么?3.如何实现连续时间信号的离散化,离散化后是否会有误差存在?实验2 序列的基本运算一、实验目的1.加深对序列基本运算的理解2.掌握MATLAB 中常用序列基本运算的实现方法3.继续熟悉MATLAB 中M 文件的使用和调用函数方法二、实验方法与示例1.加法对于离散序列来说,序列相加是将信号对应时间序号的值逐项相加,在这里不能像连续时间信号那样用符号运算来实现,而必须用向量表示的方法,即在MATLAB 中离散序列的相加需表示成两个向量的相加,因而参加运算的两序列向量必须具有相同的维数。
下面为实现离散序列相加的MATLAB 实用子程序。
function [f,k]=lsxj(f1,f2,k1,k2)%实现f(k)=f1(k)+f2(k),f1,f2,k1,k2是参加运算的二离散序列及其对应的时间序列向量,f 和k 为返回%的和序列及其对应的时间序列向量k=min(min(k1),min(k2)):max(max(k1),max(k2));%构造和序列长度 s1=zeros(1,length(k));s2=s1; %初始化新向量s1(find((k>=min(k1))&(k<=max(k1))==1))=f1;%将f1中在和序列范围内但又无定义的点赋值为零s2(find((k>=min(k2))&(k<=max(k2))==1))=f2;%将f2中在和序列范围内但又无定义的点赋值为零f=s1+s2; %两长度相等序列求和 stem(k,f,'filled')axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)]) 2.乘法与离散序列加法相似,这里参加运算的两序列向量必须具有相同的维数。
下面为实现离散时间信号相乘的MATLAB 实用子程序。
function [f,k]=lsxc(f1,f2,k1,k2)%实现f(k)=f1(k)+f2(k),f1,f2,k1,k2是参加运算的二离散序列及其对应的时间序列向%量,f 和k 为返回的和序列及其对应的时间序列向量k=min(min(k1),min(k2)):max(max(k1),max(k2));%构造和序列长度 s1=zeros(1,length(k));s2=s1; %初始化新向量s1(find((k>=min(k1))&(k<=max(k1))==1))=f1;%将f1中在和序列范围内但又无定义的点赋值为零s2(find((k>=min(k2))&(k<=max(k2))==1))=f2;%将f2中在和序列范围内但又无定义的%点赋值为零f=s1.*s2; %两长度相等序列求积 stem(k,f,'filled')axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)]) 3.移位序列移位0()()y n x n n =-的生成函数sigshift.m 可以用下面的MATLAB 程序实现。
医学信号处理实验2
实验二诱发响应的提取--消除潜伏期的影响1 仿真信号生成响应信号x(t)=15*e^(-at)*sin(2*pi*f*t)a=0.2,f=1/20,t=0~19 a越小衰减的越慢响应信号长度为20噪声信号长度为100,噪声为正态分布;仿真信号总长度为100信号的潜伏期,自己设定。
要求做50组信号,各组信号的潜伏期不同2 消除潜伏期影响采用求互相关的方法,消除潜伏期影响,应用xcorr函数,具体参见help 3 消除潜伏期后的信号,对齐,叠加平均实验报告要求:要求先写出诱发响应的提取--消除潜伏期的步骤;然后附上程序。
clear all% 生成响应信号a=0.2,f=1/20;for i=1:20x(i)=15*exp(-a*i)*sin(2*pi*f*i);endplot(x);%生成白噪声信号n=randn(35,100);%生成35组潜伏期在15的仿真信号b=cat(2,zeros(1,15),x,zeros(1,100-15-size(x,2)));b=repmat(b,35,1);b=b+n;% 生成另外15组信号nindex=[7 10 20 13 9 17 21 22 18 14 19 16 22 8 11];bb=zeros(15,100);for i=1:15bb(i,nindex(i):nindex(i)+19)=x;endnn=randn(15,100);bb=bb+nn;%总的信号bx=cat(1,bb,b);test1=[1 1 2 3 4 1 1 ];test2=[2 3 4 1 1 1 1];save data bx test1 test2A=mean(bx,1);subplot(121)plot(A)for i=1:50r(i,:)=xcorr(bx(i,:),A,'unbiased');endfor i=1:50B=max(r(i,:));[x1,y1]=find(r(i,:)==B);tao=y1-100;if tao>0C(i,:)=[bx(i,tao+1:100),bx(i,1:tao)];endif tao<0C(i,:)=[bx(i,100-abs(tao)+1:100),bx(i,1:100-abs(tao))]; endendsubplot(122)C=C';plot(C)。
医学信号处理课程设计
频率采样法设计FIR滤波器的设计步骤
1.根据指标要求, 画出理想滤波器的频率响应; 2.根据设计要求, 得到采样序列H(k);
依据Hk 的对称特点,可以使问题得以简化;
根据线性相位的约束条件,求出k ;
3.将 H(k)Hk e jθk 代入FIR的频响表达式.
4.将 H(k)Hk e jθk 求IDFT变换得h(n).
四、选题
1-7 基于MATLAB的心电信号的分析与处理 设计
8,16 使用FFT实现任意三个同频带信号的频 分复用 9-15 基于MATLAB的声音信号的分析与处 理设计
基于MATLAB的心电信号分析与处理设计(1)
1.找到一段心电信号,画出心电信号的时域波形和频谱 图(幅频和相频); 2.给该段心电信号加上随机噪声信号(噪声幅值为心电 信号最大幅值的3%),画出加噪信号的时域波形和频谱 图(幅频)。 3.根据心电信号频率范围及噪声的频率范围选择一种滤 波器(高通,低通,带通,带阻中的一种)并设置滤波 器性能指标,用冲激响应不变法设计一个IIR巴特沃斯滤 波器以消除2中加噪心电信号中的噪声干扰,输出所设计 的滤波器的阶次和分子、分母多项式的系数,画出滤波 器的频率响应(幅频响应和相频响应)曲线; 4.用该滤波器对2中的加噪心电信号进行滤波,画出滤 波以后心电信号的时域波形和频谱(幅频);分析信号 滤波前后时域和频域的变化;
基于MATLAB的声音信号分析与处理设 计(1)
1.录制2秒自己的声音,如发音“河南科技大学”等简 短的语句,抽样率是7000Hz/s,共得14000个数据。 2.抽取7000个数据进行频谱分析,得到幅度谱。 3.取这14000个数据进行频谱分析,得到幅度谱。比较 二者异同并分析原因。 4.分析人声的频率范围,根据所录制的声音信号的频谱 特性,选择合适的滤波器参数,选择矩形窗用窗函数法 设计一个FIR低通滤波器;要求输出所设计的滤波器的阶 次,画出滤波器的单位抽样响应,分析其对称性;画出 滤波器的频率响应(幅频响应和相频响应)曲线,根据 相频曲线判断滤波器是否为线性相位滤波器; 5.用滤波器对信号进行滤波,画出滤波以后信号的时域 波形和频谱,与原信号进行时域和频域的对比。 6.再把处理后的所有数据储存为声音文件,与原始声音 进行比较。
医学信号处理 实验指导书
医学信号处理实验1 离散时间信号的表示一、实验目的1.加深对离散时间信号特点的理解2.掌握MATLAB 中一些常用离散时间信号的表示方法 3.学习MATLAB 中M 文件的使用和调用函数方法二、实验方法与示例1.正弦信号离散正弦序列的MATLAB 表示与连续信号类似,只不过是用stem 函数而不是用plot 函数来画出序列的波形。
下面是正弦序列k ⎪⎭⎫⎝⎛6sin π的MATLAB 源程序。
%正弦序列实现程序 k=0:39;fk=sin(pi/6*k); stem(k,fk)title('正弦序列sin(pi/6*k)的波形') 程序运行结果如图1–1所示。
510152025303540-1-0.8-0.6-0.4-0.200.20.40.60.81正弦序列sin(pi/6*k)的波形图1–1 正弦序列波形2.实指数序列离散实指数序列的一般形式为kca ,可用MA TLAB 中的数组幂运算(即点幂运算)c*k a .^来实现。
可直接实现 也可调用用MATLAB 编写绘制离散时间实指数序列波形的函数。
下面为实指数序列的波形函数。
function dszsu(c,a,k1,k2) %c :指数序列的幅度 %a :指数序列的底数%k1:绘制序列的起始序号 %k2:绘制序列的终止序号 k=k1:k2; x=c*(a.^k); stem(k,x,'filled')3.复指数序列对于复指数序列,其一般形式为[]kj kf k r eω=,可以通过调用下面绘制复指数序列时域波形的MATLAB 函数。
function dfzsu(n1,n2,r,w)%n1:绘制波形的虚指数序列的起始时间序号 %n2:绘制波形的虚指数序列的终止时间序号 %w :虚指数序列的角频率 %r: 指数序列的底数 k=n1:n2;f=(r*exp(i*w)).^k; Xr=real(f); Xi=imag(f); Xa=abs(f); Xn=angle(f);subplot(2,2,1), stem(k,Xr,'filled'),title('实部'); subplot(2,2,3), stem(k,Xi,'filled'),title('虚部'); subplot(2,2,2), stem(k,Xa,'filled'),title('模'); subplot(2,2,4), stem(k,Xn,'filled'),title('相角');4.单位抽样序列可以通过借助MA TLAB 中的零矩阵函数zeros 表示。
医学信号处理实验报告
医学信号处理实验报告医学信号处理实验报告班级:生医1201 姓名:葛然学号:12282002 实验一:基本函数图形 12 第一题3 第二题第一小题源代码:n=-10::10; x1=n.*n.*([n>=-5]-[n>=6]); subplot(2,2,1); stem(n,x1); title(‘n*n*[u(n+5£?-u(n-6)]’); xlabel(‘n’); ylabel(‘x(n)’); x2=10.*[n==0]; subplot(2,2,2); stem(n,x2); title(‘10*[n==0]’); xlabel(‘n’); ylabel(‘x(n)’); x3=20.*.*([n>=4]-[n>=10]); subplot(2,2,3); 4stem(n,x3); title(‘20.*.*([n>=4]-[n>=10])’); xlabel(‘n’); ylabel(‘x(n)’);x4=n.*n.*([n>=-5]-[n>=6])+10.*[n==0]+2 0.*.*([n>=4]-[n>=10]); subplot(2,2,4); stem(n,x4); title(‘x1+x2+x3’); xlabel(‘n’); ylabel(‘x(n)’); 运行结果:5 第二题第二小题源代码:n=-20::20; x1=cos(*pi.*n); x2=cos(*pi.*n); subplot(3,1,1); stem(n,x1); title(‘cos(*pi.*n)’);xlabel(‘n’);ylabel(‘x1(n)’); grid on; subplot(3,1,2); stem(n,x2);title(‘cos(*pi.*n)’);xlabel(‘n’);ylabel(‘x2(n)’); grid on; n=-40::40; x1=cos(*pi.*n); subplot(3,1,3); stem(n,x1); title(‘cos(*pi.*n)’);xlabel(‘n’);ylabel(‘x1(n)’); grid on;6 运行结果:A小问:cos()(-20答:上图可以看出cos(*pi*n)是周期序列,基本的周期是20.序列cos(*pi*n)是周期为5的周期序列。
《生物医学信号处理》课程实验教学大纲
《生物医学信号处理》课程实验教学大纲课程名称(中文)生物医学信号处理课程名称(英文) Biomedical signal processing课程编号 55000054课程性质非独立设课课程属性专业必修课教材及实验指导书名称生物医学信号处理实验学时学分:总学时 54 总学分2实验学时 6实验学分开出时间:四年级第七学期适用专业生物医学工程先修课程工程数学、电路基础、模拟电子技术、数字电子技术机、信号与系统、DSP一、课程简介及基本要求《生物医学信号处理实验》作为一门重要的专业课程对学生抽象思维能力,科学实验及知识更新能力的培养都有独特的作用。
生物医学信号处理课程实验教学目的就是要在学习课程知识的过程中,培养学生的科学思想素质,提高学生的抽象思维能力、科学的实验动手能力。
实践能力是理工科大学生必备的重要能力。
为了使学生更清楚地认识本课程的研究对象生物医学信号,全面培养学生的实际动手能力,本课程用现代DSP 器件实验装置,设计了与理论课相配套的实验课程《生物医学信号处理实验》,共安排6学时,实验内容如下:实验一常用指令验证实验(基础性实验)实验二 I/O接口指令验证实验(基础性实验)实验三 LCD显示的研究实验(基础性实验)实验四卷积(Convolve)算法实验(综合实验)实验五快速傅立叶变换(FFT)算法实验(综合实验)实验六有限冲击响应滤波器(FIR)算法实验(综合实验)实验七无限冲击响应滤波器(IIR)算法实验(综合实验)实验八相关(Correlation)算法(研究性实验)二、适用专业生物医学工程本科。
三、主要仪器设备上位机、仿真器、DSP器件联机实验教学装置四、实验方式与基本要求1、本课程以实验为主,开课后,课程负责教师首先需向学生介绍课程的性质、任务、要求、课程安排和进度、考核内容、期末考试方式、实验守则及实验室安全制度等。
2、本课程主要设置三种层次的实验:(1)基本操作训练,验证性质及鉴别设计实验;(2)分析综合实验;(3)研究型设计实验。
《生物医学信号处理》实验指导书
生物医学信号处理实验指导书2009年8月目录实验一随机信号的数字特征分析 (1)实验二数字相关和数字卷积 (4)实验三维纳-霍夫方程 (7)实验四Yule-Walker方程 (11)实验一 随机信号的数字特征分析(一)实验目的了解随机信号的特征。
掌握随机信号的数字特征分析算法。
(二)实验原理对于平稳各态遍历随机过程,可以用单一样本函数的时间平均代替集总平均,即通过测量过程的单一样本来估计信号的统计特征量。
样本均值:∑==n i i x x n m 11ˆ 样本均方值:[]∑==n i i n x n x E 1221 样本方差:()∑=-=n i x i xm x n 122ˆ1ˆσ(三)实验内容和步骤用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 bcase 1L = input('每段数据长度L \n');N = input('数据共多少段N \n');x = randn(1, L*N);case 2load ecgdata;display(['数据总长度',num2str(length(x)),'点']);L = input('每段数据长度L \n');N = input('数据共多少段N \n');x = x(1:(N*L));case 3load 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:Nxs = 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); % 绘制数据直方图,观察信号大致的概率分布实验二 数字相关(一)实验目的熟悉数字相关的运算,初步在信号处理中应用相关技术。
医学信号处理实验指导书2015
陈明
前言
一、写在实验之前
以前的实验都是在 Matlab 软件平台上进行的,这次是用 C 语言的程序包来做实验,只 需要用到 Matlab 平台中的一些简单功能,主要是显示功能。 C 语言的好处是, 通过一行一行的代码, 把要实现的功能一步一步清清楚楚的展现出来, 缺点就是对大家的 C 语言知识和能力有一定要求,可能有些同学会觉得困难。但是这个缺 点可以通过分层次的学习来克服, 比如刚开始你只需要掌握一些重要函数的使用, 而不用纠 结于它内部的实现过程和所调用的其他函数的功能, 然后随着你对程序掌握的层次提高, 你 可以逐步去学习它内部的实现过程以及其他函数的功能。 你对程序的理解 (随之而来的是对 理论的理解)就会逐渐提高。我在实验一的内容中,一般仅要求掌握重要函数的使用,而在 滤波器设计和实现的实验中,则会对理解函数实现的过程有一定的要求。 在正式开始实验之前,提醒大家注意,这是数字信号处理课的实验,不是 C 语言课的 实验, 因此要求掌握好数字信号处理理论课上的内容。 如果你在实验过程中发现有些理论知 识不清楚的,请及时复习理论知识。
实验一:序列的时域和频域分析
学习内容包括: 1、 cmglobal 模块: 掌握其中定义的宏和类型名,以及学会使用路径配置相关函数。 实验过程中需要保存一些数据文件,建议大家在开始实验前为自己建立一个文件目录, 并在 main 函数中调用 SetDefaultPath 函数,将该目录设置为缺省路径。 2、 cmseq 模块: 除了前面两个函数无须掌握以外,其他函数都要求学会使用。这个模块是整个程序包的 基础模块,也是用来表示一个一维数组(序列)的模块,一定要熟练掌握它。函数有些多, 希望大家耐着性子好好学习一下。 练习如下: 1) 编写程序生成序列 x1 ( n) {1.3, 2.4,3.5}, x2 ( n) {10.0, 11.8, 3.7} ,计算两个
医学信号处理实验
实验一常见的离散信号MATLAB产生和图形显示实验(1)(2)(3)(4)如下:n=-5:5;x=[(n+2)==0]-2*[(n-1)==0];subplot(2,2,1);stem(n,x); %绘制离散图title('抽样序列');xlabel('n');ylabel('x(n)');n=0:10;x=[n>=0]-[(n-5)>=0];subplot(2,2,2);stem(n,x);title('阶跃序列');xlabel('n');ylabel('x(n)');n=0:50;x=2*sin(0.04*pi*n+pi/3);subplot(2,2,3);stem(n,x);title('正弦序列');xlabel('n');ylabel('x(n)');n=0:10;x=0.8.^n;subplot(2,2,4);stem(n,x);title('实指数序列');xlabel('n');ylabel('x(n)');实验(5)图如下:-20-1001020实部n -20-1001020虚部n -20-1001020幅值n-20-1001020相位n抽样序列nx (n )阶跃序列nx (n )正弦序列nx (n )510实指数序列nx (n )实验(6)1.程序:n=-10:10;x1=n.*n.*([(n+5)>=0]-[(n-6)>=0]); subplot(2,2,1); stem(n,x1); xlabel('n');ylabel('x1(n)'); x2=10*(n==0); subplot(2,2,2); stem(n,x2); xlabel('n');ylabel('x2(n)');x3=20*0.5.^n.*([(n-4)>=0]-[(n-10)>=0]); subplot(2,2,3); stem(n,x3); xlabel('n');ylabel('x3(n)'); x=x1+x2+x3;subplot(2,2,4); stem(n,x); xlabel('n'); ylabel('x(n)');图如下nx 1(n)nx 2(n )nx 3(n )nx (n )2 程序:n=-20:20;x1=cos(0.3*pi*n); subplot(3,1,1); stem(n,x1); xlabel('n');ylabel('x1(n)'); x2=cos(0.4*pi*n); subplot(3,1,2); stem(n,x2); xlabel('n');ylabel('x2(n)'); n=-40:40;x3=cos(0.3*n); subplot(3,1,3); stem(n,x3); xlabel('n');ylabel('x3(n)');图如下:nx 1(n )-20-15-10-505101520nx 2(n )nx 3(n )答:a.由上图可以看出cos(0.3*pi*n)是周期序列,基本的周期是20.序列cos(0.4*pi*n)是周期为5的周期序列。
信号处理综合实践说明书(2篇)
第1篇一、实践目的信号处理是电子工程、通信工程、生物医学工程等领域的重要基础学科。
本实践旨在通过综合运用信号处理的理论和方法,培养学生解决实际工程问题的能力,提高学生的创新意识和团队协作能力。
通过本次实践,使学生能够:1. 理解信号处理的基本概念、原理和方法;2. 掌握信号处理的基本工具和算法;3. 能够运用信号处理技术解决实际问题;4. 提高学生的实践操作能力和团队协作能力。
二、实践内容1. 信号处理基本概念与原理(1)信号的分类与表示方法;(2)信号的时域分析、频域分析;(3)信号的时域处理、频域处理;(4)采样定理与信号恢复。
2. 信号处理工具与算法(1)离散傅里叶变换(DFT)及其快速算法(FFT);(2)离散余弦变换(DCT);(3)小波变换;(4)卡尔曼滤波;(5)信号检测与估计。
3. 信号处理应用实例(1)语音信号处理:语音信号的预处理、特征提取、语音识别;(2)图像信号处理:图像增强、图像压缩、图像分割;(3)生物医学信号处理:心电图(ECG)信号处理、脑电图(EEG)信号处理;(4)通信信号处理:调制解调、信道编码与解码。
4. 综合实践项目(1)项目一:语音信号处理——实现一个简单的语音识别系统;(2)项目二:图像信号处理——实现一个图像压缩与解压缩系统;(3)项目三:生物医学信号处理——实现一个ECG信号处理与分析系统;(4)项目四:通信信号处理——实现一个基于DFT的调制解调系统。
三、实践方法与步骤1. 理论学习:通过查阅相关书籍、文献,了解信号处理的基本概念、原理和方法。
2. 工具学习:学习MATLAB、Python等编程语言,熟悉信号处理工具箱,掌握基本操作。
3. 算法实现:根据实践内容,选择合适的算法,进行编程实现。
4. 综合实践:根据项目要求,完成各个实践项目,并进行调试和优化。
5. 撰写实践报告:总结实践过程中的收获与体会,对实践结果进行分析和评价。
四、实践要求1. 实践过程中,学生应严格遵守实验室纪律,保持实验环境整洁。
[2016]医学信号处理实验指导书
医学信号处理实验指导河北工业大学电气工程学院生物医学工程专业专用实验一、随机信号的产生及其数字特征分析实验项目的目的和任务:了解随机信号的产生以及随机信号的特征。
实验内容:1.随机信号序列的产生2.随机信号的数字特征分析实验步骤:一、随机信号序列的产生1、利用matlab函数rand和randn产生随机信号序列2、利用同余算法生成随机信号序列同余算法:k(i+1)=(c*k(i))(mod M) i=0 1 2 ....mk(0) 给定,后面的数由k与c的乘积与M取余求得,c与M都可以任意指定,一般情况下M=2^b,k(0)为一奇数c=8t(+/-)3 t取整数。
具体b和t取值,可由试验得出。
随机信号不重复的长度:2^(b-2)次,b取值越大,随机信号序列长度越长建议b=12 即2^10次不会重复,此时c=2^9+3 即t=2^6。
k的取值范围,0~M-1之间。
k在0~M-1上是均匀分布的。
生成随机信号序列要求:1 用同余算法产生均匀分布的随机序列,长度N=100,均值为零,方差为0.1。
2 用matlab函数构造正态分布序列,要求长度N=100,均值为零,方差为0.1。
3用matlab函数构造均匀分布序列,要求长度N=100,均值为零,方差为0.1。
3、用matlab编程验证正态分布随机信号序列在mx(+/-)q的取值概率为68%,在mx(+/-)2q 的取值概率为95.4%,在mx(+/-)3q 的取值概率为99.7%。
二、随机信号的数字特征分析一维利用函数mean求随机信号序列均值,利用函数cov求随机信号序列方差多维每一列作为一次观察,共进行N次观察,每次M个数,求得M*N的矩阵,构造函数x(t)=Asin(wt)+w(t)Asin(wt)为确定信号,w(t)为随机信号,用随机数实现要求:构造多维随机信号,N=10,M=500,f=20hz求均值向量,协方差矩阵实验要求:完成每一步实验要求,并将结果画图输出本实验中主要用的到matlab函数:rand,randn,mean,cov,plot实验二、医学信号潜伏期的消除实验项目的目的和任务:采用相干平均方法来消除信号潜伏期的影响实验内容:1.生成仿真试验信号2.消除潜伏期的影响3.诱发响应信号的提取实验步骤:一、生成仿真试验信号令响应信号为 x(t)=10*e^(-at)*sin(2*pi*f*t),其中a=0.2,f=1/20,t=1-20 ,表达式中a的值越小,信号衰减的越慢,t取1-20则响应信号的长度为20。
