MATLAB代做  | MATLAB代写  | MATLAB有偿编程
首 页
当前位置:MATLAB代做|MATLAB代写|MATLAB有偿编程matlab源码信号处理
信号提取、频谱分析、滤波、阈值设定、寻找极值点        [↓跳到下载地址]
官方主页:源码共享网站:www.buycode.cn

联系方式:客服QQ:1747812398 买代码源码软件站,欢迎咨询

运行环境:Win9X/2000/XP/2003/

源码语言:简体中文

源码类型:源码程序 - 信号处理

推荐星级:

更新时间:2012-11-21 23:19:29

源码简介

第一步,产生数据
由于原始数据过大不便粘贴,这里模拟出一组数据,在Matlab命令行输入:
t=[0:0.002:5.998]';      % 时间轴
d = 0:1/1.8:6;           % 尖峰信号
nNoiseECG=sin(2*pi*0.24*t)+2*pulstran(t,d,'tripuls',0.1,1)+0.1*randn(3000,1); % 叠加正弦漂移和尖峰信号以及随机白噪声
plot(t,nNoiseECG)
xlabel('t(s)')
ylabel('Voltage(v)')
title('Original Signal')
得到原始波形,如图1所示
好的作业题目可以激起人挑战的欲望,并指引着自己学习一系列的东西。可是这样的题目并不常见,上一次见到是什么时候我已经不记得了,昨天,一道让人忍不住叫好的作业题目摆在我的面前。

先看题目,是某大学大四学生的课程作业:
-------
题目
Heart Beat Period Detection
背景交代
In clinic, it is frequently required to detect heart rate. The heart rate is usually computed from RR-interval, which is obtained from ECG.
However, while ECG measuring, noises are frequently superposed.
任务
Process the noised signal to obtain ECG signal
Propose algorithm to acquire RR intervals
The Heart Rate is calculated from averaging 10 RR-intervals
数据
The signal is given in the data file, ‘nNoiseECG.txt’, the sampling frequency is 500Hz
要求
Finish the tasks individually and independently
Write a project report in English. Give and explain the full processes with Matlab programs
--------

点评一下,这个题目中一组脉冲信号被噪声所调制,噪声包含有规律的正弦信号,以及没有规律的白噪声。题目要求从被测信号,即被调制后的信号中提取出有用的脉冲信号,并分析它的周期和频率。

典型的信号处理题目,包含了频谱分析、滤波、阈值设定、选择极值点等一系列方法,采用Matlab进行解题,可以非常清楚的熟悉信号软件处理的全过程、回顾信号与系统、传感器技术等专业知识,非常有意义。

解题过程

第一步,产生数据
由于原始数据过大不便粘贴,这里模拟出一组数据,在Matlab命令行输入:
t=[0:0.002:5.998]';      % 时间轴
d = 0:1/1.8:6;           % 尖峰信号
nNoiseECG=sin(2*pi*0.24*t)+2*pulstran(t,d,'tripuls',0.1,1)+0.1*randn(3000,1); % 叠加正弦漂移和尖峰信号以及随机白噪声
plot(t,nNoiseECG)
xlabel('t(s)')
ylabel('Voltage(v)')
title('Original Signal')
得到原始波形,如图1所示


图 1 原始波形(模拟的测得信号)


第二步,分析信号中的频率成分
命令行输入:
Y = fft(nNoiseECG,16384);%进行16384个点的fft变换
Pyy = Y.* conj(Y) / 16384;  %功率谱转换
f = 500*(0:8192)/16384;
plot(f,Pyy(1:8193))
title('Frequency content of y')
xlabel('frequency (Hz)')
axis([0 10 0 1500]);
grid on;
得到功率谱图形如图2所示,根据图2,可知原始信号中的低频信号(可以理解为漂移)的频率构成,大约在4Hz以下
 




图 2 功率谱图,不同频率下的功率分布


第三步,滤掉低频成分
调用fdatool设计高通滤波器(命令行输入fdatool),如图3所示,下限截止频率4Hz,上限20Hz(值越大,滤波后可用的尖峰越多)。

 



图 3 FDATOOL设计界面


利用M语言进行滤波
在图3所示的fdatool中File->Export,导出到Workspace中。
在命令行输入:
a=filter(Num,1,nNoiseECG);% 其中Num即为滤波器的极点参数,1为零点参数,a即滤波后的数据。
plot(t,a) % 滤波后画图
xlabel('t(s)')
ylabel('Voltage(v)')
title('Signal After Filtering')
图形同图4
 



图 4 滤波后的波形


第四步,阈值去噪
设定阈值为0.5,小于0.5的点设置为0
命令行输入:
for i=1:3000
if (a(i)<0.5)
a(i)=0;
end
end
b=find(diff(sign(diff(a)))<0)+1;% 求解极值点序号
plot(t, a,t(b), a(b),'r*') % 画出去噪声后的波形,由于滤波的关系,前一秒钟的信号异常,因此只画1s以后的数据
xlabel('t(s)')
ylabel('Voltage(v)')
axis([1 6 0 2]);
title('Final Signal')
grid on
如图5所示。图5中红色的十字叉为极值点。


 

图 5 阈值处理之后的图形


第五步,调整阈值去噪
根据图6,可以看到在第5,6个波峰处出现了多个极值点,因此考虑调高阈值进行去噪。设定阈值为0.85,小于0.85的点设置为0
命令行输入:
for i=1:3000
if (a(i)<0.5)
a(i)=0;
end
end
b=find(diff(sign(diff(a)))<0)+1;% 求解极值点序号
plot(t, a,t(b), a(b),'r*')% 画出去噪声后的波形,由于滤波的关系,前一秒钟的信号异常,因此只画1s以后的数据
xlabel('t(s)')
ylabel('Voltage(v)')
axis([1 6 0 2]);
title('Final Signal')
grid on
如图6所示。图6中红色的十字叉为极值点。
 



第六步,确定RR时间间隔
取最后9个脉冲时间间隔取平均,得到RR时间间隔和频率
命令行输入:
(t(b(9))-t(b(1)))/10
10/(t(b(9))-t(b(1)))


提 示:本站所有源码只提供浏览,需要定制的朋友可以联系在线客服!
注意:价格根据项目的难易程度来定价格业务咨询

信号提取、频谱分析、滤波、阈值设定、寻找极值点 --下载地址

注意:为避免不必要的误会,本站项目里的源码只公开部分需要的联系在线客服

本站长期招聘程序代写高手,欢迎加入华南地区matlab团队

想创业却没有经验的人

无论你是否有过网上开店的经验,都可以随时联系在线客服,建立自己独立的网站
想开网店却不知道如何入手

淘宝创业成本低而且风险小,如果想开淘宝店的朋友可以联系在线客服。
想兼职创业,却不擅长交际与服务的人

在家创业月入5000元。网站程序+百套群发工具+网赚资料+域名+空间+本站终身代理资格,这样你网赚的条件全具备了。每天3小时管理、推广、收钱。
缺乏能快速赢利型产品的人

导入多种最新流行营销软件+网赚教程,让入驻者轻松加盟、复制有效成交技巧、快速赚钱。
·上一源码:信号变换
·下一源码:simulink命令集

源码评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

浏览说明

* 本站所有源码全部公开,随时随地浏览!
* MATLAB软件如用于商业用途,请购买正版!
* 如果您发现下载链接错误,请点击报告错误谢谢!
* 站内提供的所有软件包含破解及注册码均是由网上搜集,若侵犯了你的版权利益,敬请来信通知我们!
Copyright © 2008-2014 www.buycode.cn. All Rights Reserved.
页面执行时间:187.50000 毫秒