C语言提取已知心率信号x的高频分量,低频分量,标准差值与均方根差值的完整代码,能在devc++上运行
时间: 2024-03-23 09:36:09 浏览: 14
以下是一个示例代码,可以在 Dev-C++ 上运行,用于提取已知心率信号 x 的高频分量、低频分量、标准差值和均方根差值:
```c
#include <stdio.h>
#include <math.h>
#define N 100 // 信号数据点数
#define Fs 1000 // 采样频率
#define HR 60 // 心率(每分钟心跳数)
int main()
{
int i;
double x[N]; // 心率信号数据
double lp[N], hp[N], std, rms;
// 生成心率信号数据
double t = 0;
for (i = 0; i < N; i++) {
x[i] = sin(2 * M_PI * HR * t / 60);
t += 60.0 / (HR * Fs);
}
// 计算低频分量和高频分量
for (i = 0; i < N; i++) {
if (i == 0) {
lp[i] = x[i];
hp[i] = 0;
}
else {
lp[i] = 0.99 * lp[i-1] + 0.01 * x[i];
hp[i] = x[i] - lp[i];
}
}
// 计算标准差值
std = 0;
for (i = 0; i < N; i++) {
std += (x[i] - lp[i]) * (x[i] - lp[i]);
}
std = sqrt(std / N);
// 计算均方根差值
rms = 0;
for (i = 0; i < N; i++) {
rms += x[i] * x[i];
}
rms = sqrt(rms / N);
// 输出结果
printf("Low-frequency component: %lf\n", lp[N-1]);
printf("High-frequency component: %lf\n", hp[N-1]);
printf("Standard deviation: %lf\n", std);
printf("Root-mean-square deviation: %lf\n", rms);
return 0;
}
```
这个示例代码生成了一个由正弦波组成的心率信号,每分钟心跳数为 60 次,采样频率为 1000Hz,数据点数为 100。它使用了一个简单的低通滤波器来计算低频分量和高频分量,并计算了标准差值和均方根差值。你可以根据自己的需求修改代码,以适应不同的心率信号处理任务。