【matlab】采样信号的低通滤波、高通滤波
基于二阶巴特沃斯滤波器,可选低通/高通
生成采样信号(包含低频和高频分量),其中
低频为10、20、30、40、50Hz
高频为100、200、300、400、500Hz
代码:
%低通、高通信号对比
clc
clear
close all
%% 创建信号
% 参数设置
fs = 1000; % 采样频率(Hz)
t = 0:1/fs:1; % 时间向量(1秒)
f1 = 10; % 低频分量频率(Hz)
f2 = 500; % 高频分量频率(Hz)
A1 = 1; % 低频分量幅度
A2 = 0.5; % 高频分量幅度% 生成采样信号(包含低频和高频分量)
%低频为10、20、30、40、50Hz
%高频为100、200、300、400、500Hz
signal = A1*sin(2*pi*f1*t) + A1*sin(2*pi*2*f1*t) + A1*sin(2*pi*3*f1*t) + A1*sin(2*pi*4*f1*t) + A1*sin(2*pi*5*f1*t) + ...
A2*sin(2*pi*f2*t) + A2*sin(2*pi*2*f2*t) + A2*sin(2*pi*3*f2*t) + A2*sin(2*pi*4*f2*t) + A2*sin(2*pi*5*f2*t);% 绘制原始信号
figure;
subplot(3,1,1);
plot(t, signal);
title('原始采样信号');
xlabel('时间 (s)');
ylabel('幅值');
%% 低通滤波
% 低通滤波器设计
fc_low = 20; % 低通滤波器截止频率(Hz),频率小于等于该频率的信号分量被保留
[b_low, a_low] = butter(2, fc_low/(fs/2), 'low'); % 二阶巴特沃斯低通滤波器% 应用低通滤波
signal_low = filter(b_low, a_low, signal);% 绘制低通滤波后的信号
subplot(3,1,2);
plot(t, signal_low);
title('低通滤波后的采样信号');
xlabel('时间 (s)');
ylabel('幅值');
%% 高通滤波
% 高通滤波器设计
fc_high = 100; % 高通滤波器截止频率(Hz),频率大于等于该频率的信号分量被保留
[b_high, a_high] = butter(2, fc_high/(fs/2), 'high'); % 二阶巴特沃斯高通滤波器% 应用高通滤波
signal_high = filter(b_high, a_high, signal);% 绘制高通滤波后的信号
subplot(3,1,3);
plot(t, signal_high);
title('高通滤波后的采样信号');
xlabel('时间 (s)');
ylabel('幅值');
效果: