请给我一个利用具体矩形窗函数的带通滤波器的MATLAB函数,要求高频低频的截至频率作为入口参数输入,待滤波的信号也是入口参数,返回值是滤波后的信号
时间: 2023-12-10 13:37:38 浏览: 66
以下是一个利用具体矩形窗函数的带通滤波器的MATLAB函数,其中输入参数包括待滤波的信号,截至频率以及采样率。函数返回滤波后的信号。
```matlab
function filtered_signal = rectangular_bandpass_filter(input_signal, low_freq, high_freq, sampling_rate)
% 计算滤波器系数
N = 100; % 滤波器阶数
fc = [low_freq, high_freq] / (sampling_rate / 2); % 计算截至频率
b = fir1(N, fc); % 生成滤波器系数
% 应用滤波器
filtered_signal = filter(b, 1, input_signal);
end
```
使用方法:
```matlab
% 生成待滤波信号
t = 0:0.001:1;
input_signal = sin(2*pi*50*t) + sin(2*pi*200*t) + sin(2*pi*500*t);
% 带通滤波
low_freq = 100;
high_freq = 400;
sampling_rate = 1000;
filtered_signal = rectangular_bandpass_filter(input_signal, low_freq, high_freq, sampling_rate);
% 绘制原始信号和滤波后的信号
subplot(2,1,1);
plot(t, input_signal);
title('原始信号');
subplot(2,1,2);
plot(t, filtered_signal);
title('滤波后的信号');
```
其中,`low_freq` 和 `high_freq` 分别代表带通滤波器的低频和高频截止频率,`sampling_rate` 是采样率。函数中使用了 `fir1` 函数来生成滤波器系数,该函数生成一个N阶的FIR滤波器,其中 `fc` 是截止频率,`b` 是滤波器系数。最后使用 `filter` 函数对输入信号进行滤波。
阅读全文