用matlab实现2. 某地震台以采样频率50Hz记录到的发生在某省的地震。由于震级很小,在原始波形上无法识别,需要设计FIR带通滤波器,把低频段和高频段干扰滤除。现选择0.8~5Hz的频段成分通过。滤波器设计要求:阻带衰减30dB、过渡带宽为0.5Hz。请画该滤波器的幅频与相频响应图,及输入输出对比图。
时间: 2024-03-08 22:45:05 浏览: 226
好的,我会根据你的要求进行回答。以下是回答:
首先,我们可以使用MATLAB中的fir1函数来设计FIR带通滤波器。根据题目要求,我们可以设置滤波器的参数如下:
```matlab
Fs = 50; % 采样频率
fpass = [0.8 5]; % 通带频率范围
fstop = [0.3 5.5]; % 阻带频率范围
apass = 1; % 通带最大衰减
astop = 30; % 阻带最小衰减
dev = [(10^(apass/20)-1)/(10^(apass/20)+1) 10^(-astop/20)]; % 转换为幅度响应上的参数
[N,fo,ao,w] = firpmord([0.8 5], [0.3 5.5], [dev(1) dev(2)], Fs); % 求取最小阶数和截止频率
b = firpm(N,fo,ao,w); % 使用最小阶数和截止频率设计FIR滤波器
```
然后,我们可以使用freqz函数来绘制该滤波器的幅频响应和相频响应图,代码如下:
```matlab
freqz(b,1,Fs);
```
最后,我们可以读取地震数据并将其输入到所设计的滤波器中,代码如下:
```matlab
load earthquake_data.mat; % 读取地震数据
y = filter(b,1,x); % 将地震数据输入所设计的滤波器中
plot(t,x,t,y); % 绘制输入输出对比图
```
其中,earthquake_data.mat包含了地震数据x和采样时间t。
阅读全文