我明白
你
能够
删除
高频噪声的ECG数据
使用
MATLAB
,但不能
使用c++实现相同的。
你可以
实现
巴特沃斯低通滤波器
过滤器使用数字信号处理库
。
这是一个示例代码
没有
心电图数据数组输入
:
#包括< iostream >
#包括向量> <
#包括< dsp.h >
#包括< cmath >
使用名称空间性病;
intmain () {
/ /数量在心电图数据样本
常量int N = 1000;
/ /归一化截止频率
常量双f0 = 0.05;
/ /采样率(赫兹)
常量双fs = 500.0;
/ /截止频率(赫兹)
常量fc = f0 * f / 2.0的两倍;
/ /你的心电图数据数组输入
双ecg_data [N] = {…};
/ /初始化巴特沃斯低通滤波器
/ /过滤系数
向量<双> b;
/ /订单过滤器
常量int订单= 4;
/ /计算滤波器系数
黄油(顺序、fc、fs、低通滤波器,b, a);
/ /过滤心电图数据
双ecg_filtered [N];
为(int i = 0;我< N;我+ +){
ecg_filtered[我]= 0;
/ /应用过滤器
为(int j = 0;j < =秩序;j + +) {
如果(i - j > = 0) {
ecg_filtered[我]+ = b [j] * ecg_data (i, j);
}
如果(我- j - 1 > = 0) {
ecg_filtered[我]- = [j + 1] * ecg_filtered (i - j - 1);
}}}
/ /输出过滤心电图数据
为(int i = 0;我< N;我+ +){
cout< < ecg_filtered[我]< < " ";
}
cout< < endl;
返回0;
}