matlab如何对一段数据用滤波器提取高频分量?

已有一段差值数据diN,绘制的曲线图如下,现在想要用滤波器初步对它进行高频分量的提取,想问一下该怎么实现呢?代码要怎么写😭😭
(数据量较大,纵坐标-1到1*10^5,认为绝对值超过0.3就算是高频分量)

img

可以使用MATLAB中的Butterworth滤波器来实现高频分量的提取。具体步骤如下:

  1. 确定采样频率和想要截止的高频的边界频率(即0.3在频率域上的位置)。
Fs = 1000; % 采样频率
f_high = 50; % 想要截止的高频的边界频率
Wn = f_high/(Fs/2); % 归一化截止频率
  1. 计算Butterworth滤波器的系数。
[b,a] = butter(6, Wn, 'high'); % 高通滤波器,阶次为6
  1. 对数据进行滤波。
filtered_data = filter(b,a,diN);
  1. 提取高频分量。根据题目要求,绝对值超过0.3的部分即为高频分量。
high_pass_data = filtered_data(abs(filtered_data) > 0.3);

完整代码如下:

Fs = 1000; % 采样频率
f_high = 50; % 想要截止的高频的边界频率
Wn = f_high/(Fs/2); % 归一化截止频率
[b,a] = butter(6, Wn, 'high'); % 高通滤波器,阶次为6
filtered_data = filter(b,a,diN);
high_pass_data = filtered_data(abs(filtered_data) > 0.3);

注意,这里仅提取了高频分量,如果还需要保留低频分量,可以使用一个带通滤波器或者将高频分量去除后得到低频分量。