已有一段差值数据diN,绘制的曲线图如下,现在想要用滤波器初步对它进行高频分量的提取,想问一下该怎么实现呢?代码要怎么写😭😭
(数据量较大,纵坐标-1到1*10^5,认为绝对值超过0.3就算是高频分量)
可以使用MATLAB中的Butterworth滤波器来实现高频分量的提取。具体步骤如下:
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);
完整代码如下:
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);
注意,这里仅提取了高频分量,如果还需要保留低频分量,可以使用一个带通滤波器或者将高频分量去除后得到低频分量。