现代信号分析大作业 胎儿心电监护 自适应滤波 LMS RLS 消噪 MATLAB

本文档详细介绍了使用LMS和RLS算法进行胎儿心电监护信号消噪的MATLAB实现过程。作者指出了常见错误,并提供了正确的参考文献,包括数据源、算法迭代公式、代码示例和错误分析,旨在帮助后续研究者避免重复错误。
摘要由CSDN通过智能技术生成

【2021年5月11日 新增说明】

写下这篇文章已经很久了,应该被很多人阅读过。今日发现我的代码也存在一定问题,详见评论区。但我现在没有精力去完善,希望大家可以自己研究参考文献,修正我错误(应该也是某处小问题导致的)。
解决了旧的错误,又引入了新的错误,为我的误导致歉。向发现问题的各位表示感谢,还是那句话,望后来者有自己的思考。

写在前面

缘由

做现代信号分析大作业,遇到这道题的时候,发现搜索结果给的代码有错误,又找来了往届的大作业,“意外地”都错得一致。我想,可能是某年第一个做这道题的学长学姐做错了,然后就这么流传下来了,或许中间有人同样发现了问题,但是并没有在网上分享出来。所以,为了我之后的学弟学妹不再重蹈覆辙,我写了这篇文章,把我做的结果发出来。

错误参考

搜索出来结果最多的就是下面这篇文章了,里面的这道题代码是错的,不要再抄了。
现代信号分析课程大作业 百度文库

正确参考

我的代码主要是参考下面这篇论文写的,虽然没有MATLAB代码,但有很详细的推导过程和说明,推荐看一看。
基于自适应滤波的胎儿心电信号提取 中国知网

题目要求

利用自适应滤波中LMS和RLS方法进行处理,分析不同阶数、步长及指数加权因子对滤波结果的影响。同时给出迭代次数与滤波器系数,迭代次数与均方误差之间的关系曲线。(20分)(可任选一题)
(1)消除心电图的电源干扰(数据源:X1子目录)。
(2)胎儿心电监护(数据源:X2子目录)。

解答过程

先把我的解答过程发出来,后面再分析原答案到底哪里错了。

消噪原理

在这里插入图片描述
滤波器的输入为 s + n 0 s+n_0 s+n0,其中 s s s为有用信号, n 0 n_0 n0为一个与信号 s s s不相关的噪声,滤波器的参考信号为 n 1 n_1 n1 n 1 n_1 n1与信号 s s s不相关,却以某种未知的方式与噪声 n 0 n_0 n0相关,信号经自适应滤波器处理输出 y y y,即 n 0 n_0 n0的估计值,再从原始输入 s + n 0 s+n_0 s+n0中减去 y y y,得到所要提取信号的估计值 e = s + n 0 − y ≈ s e=s+n_0-y \approx s e=s+n0ys
本题中,输入信号 d ( n ) d(n) d(n)为母亲腹部心电信号,即胎儿心电和母亲心电的混合信号,参考信号 x ( n ) x(n) x(n)为母亲胸部心电信号,几乎完全由母亲心电组成,滤波器输出 y ( n ) y(n) y(n)为母亲腹部噪声估计,自适应滤波器的目的就在于从母亲心电和胎儿心电混合信号中提取出胎儿心电信号,即 e ( n ) − d ( n ) − y ( n ) e(n)-d(n)-y(n) e(n)d(n)y(n)

数据和代码

其实如果你搜到这篇文章,肯定是有题目才来的,不过我还是贴出来原始数据文件吧:
现代信号分析大作业数据
以下是MATLAB源代码文件,如果没积分的下载的话,我后面也直接贴出来:
胎儿心电监护 MATLAB代码

原始信号

首先把母亲胸部和腹部的原始信号数据显示出来。

MATLAB代码

clear;

%数据
X2_thorax=importdata('怀孕母亲胸部心电图数据.txt');%载入胸部数据,参考信号
X2_abdomen=importdata('怀孕母亲腹部心电图数据.txt');%载入腹部数据,输入信号

%绘图
figure(1);
subplot(2,1,1),plot(X2_thorax);
title('怀孕母亲胸部心电图');
xlabel('采样点');ylabel('幅值');
subplot(2,1,2),plot(X2_abdomen);
title
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值