探地雷达数据剖面IIR滤波Matlab代码
时间: 2023-10-03 22:02:29 浏览: 143
【心电信号】瞬时抑制心电信号IIR滤波【含Matlab源码 1533期】.zip
以下是一个简单的探地雷达数据剖面 IIR 滤波的 Matlab 代码:
```matlab
% 设置参数
fc = 1000; % 我们想要滤波的中心频率
fs = 2000; % 采样率
bw = 200; % 我们想要滤波的带宽
% 计算滤波器系数
[b, a] = butter(6, [fc-bw/2, fc+bw/2]/(fs/2), 'bandpass');
% 载入探地雷达数据
load('data.mat');
% 滤波处理
filtered_data = filter(b, a, data);
% 绘制结果
t = 1:length(data);
t = t/fs;
subplot(2,1,1); plot(t, data); xlabel('时间 (秒)'); ylabel('振幅');
title('原始数据');
subplot(2,1,2); plot(t, filtered_data); xlabel('时间 (秒)'); ylabel('振幅');
title('滤波后的数据');
```
在这个示例中,我们使用 `butter` 函数计算了一个 6 阶的带通 IIR 滤波器,然后使用 `filter` 函数将滤波器应用于载入的探地雷达数据。最后,我们使用 `subplot` 和 `plot` 函数将原始数据和滤波后的数据绘制在同一张图中。
需要注意的是,IIR 滤波器可能会引入一些相位失真和不稳定性,因此在使用时需要谨慎。
阅读全文