信号数据取包络 代码C++
时间: 2023-09-14 10:07:14 浏览: 242
特征数据提取_包络提取_特征数据提取_轴承信号_轴承_
5星 · 资源好评率100%
以下是一个简单的C++代码示例,用于从信号数据中提取包络:
```c++
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
vector<double> get_envelope(vector<double> signal, int window_size) {
vector<double> envelope(signal.size() - window_size + 1);
for (int i = 0; i < envelope.size(); i++) {
double sum = 0;
for (int j = 0; j < window_size; j++) {
sum += pow(signal[i + j], 2);
}
envelope[i] = sqrt(sum / window_size);
}
return envelope;
}
int main() {
// 示例信号数据
vector<double> signal = {0.1, 0.2, 0.3, 0.2, 0.1, -0.1, -0.2, -0.3, -0.2, -0.1};
// 提取包络
vector<double> envelope = get_envelope(signal, 5);
// 输出包络
for (int i = 0; i < envelope.size(); i++) {
cout << envelope[i] << " ";
}
cout << endl;
return 0;
}
```
上述代码使用了一个窗口大小为5的移动窗口,计算每个窗口内信号的均方根值作为包络值,并将所有的包络值存储在一个vector中返回。在实际应用中,窗口大小可以根据具体的信号特征进行调整。
阅读全文