低通滤波-matlab低通滤波程序

本例程展示了信号处理中低通滤波的作用,首先生成一个高斯白噪声,然后对其进行低通滤波。低通滤波器的截止频率和Q值可以自己设定,得到低通滤波器的传输函数后,在经过双线性变换法得到其单位脉冲响应。滤波后对原始信号的频谱和滤波后的信号的频谱进行了对比。

%% 低通滤波器演示程序
%% 生成白噪声信号
clc;clear all; close all;
N = 1000; %采样点数
fs = N;   %采样频率
fre_base = -N/2:N/2-1;
a = randn(N,1); %生成符合高斯分布的随机噪声
F = fftshift((fft(a)))*2/N;  %对其进行快速傅里叶变换
%% 生成低通滤波器
cut_off_freq = 50;          
Q = 0.625;                   
plot_enable_L = 1;            
[Hs, H_z] = produce_LPF(cut_off_freq, Q, fs, plot_enable_L);  
%% 进行低通滤波
filterd_signal = filter(H_z.num{:}, H_z.den{:}, a);    
filter_sig_f = fftshift(fft(filterd_signal))*2/N;
%% 绘图
figure;
subplot(2,1,1); %绘制子图
plot(fre_base,abs(F)); %绘制频率图
xlabel('Hz');
title('原始信号频谱图');
subplot(2,1,2); %绘制子图
plot(fre_base,abs(filter_sig_f)); %绘制频率图
xlabel('Hz');
title('低通滤波后信号频谱图');

产生低通滤波器的子函数代码如下:

function [Hs, H_z] = produce_LPF(cut_off_freq, Q, fs, plot_enable_L)
%% 构造低通滤波器
	w0 = 2*pi*cut_off_freq;					% 滤波器截止频率对应的角频率
	A=1; B=w0/Q; C=w0^2;                    % 传递函数构造因子
	numerator = C;                          % 传递函数的分子的矩阵表示
	denominator = [A B C];                  % 传递函数的分母的矩阵表示
	disp('二阶低通滤波器的传递函数');
	Hs = tf(numerator, denominator)         % 构造模拟低通滤波器传递函数

	H_z = c2d(Hs, 1/fs, 'tustin');          % 将滤波器的脉冲响应用双线性变换法离散化
    
%% 绘制图形     
    if plot_enable_L == 1
        %%计算坐标,画模拟滤波器的频率特性
        w = logspace(1,6);                        % 产生10^1到10^4次的对数坐标
        hs = freqs(numerator,denominator,w);      % 滤波器的幅频、相频特性曲线

        mag = abs(hs);          % 取幅值 
        phase = angle(hs);      % 取相角
        f = w/(2*pi);                           % 将横坐标的单位由rad变为Hz   
        phase = phase*180/pi;                   % 将纵坐标的单位变为度。

        figure; semilogx(f, mag); grid on    
        xlabel('频率(Hz)'); ylabel('增益'); title('滤波器的幅频特性曲线');
    
        figure; semilogx(f, phase); grid on; 
        xlabel('频率(Hz)'); ylabel('相位(°)'); title('滤波器的相频特性曲线');

        figure; impulse(Hs); grid on                    
        xlabel('时间'); ylabel('幅度'); title('模拟滤波器脉冲响应');
    
        figure; impz(H_z.num{:}, H_z.den{:}); grid on;     %画双线性变换后的数字滤波器的脉冲响应 
        xlabel('点数'); ylabel('幅度'); title('数字滤波器脉冲响应');
    end
    
end

在这里插入图片描述

图1. 低通滤波器的幅频特性曲线

在这里插入图片描述

图2. 原始信号及低通滤波后的信号频谱图
由上图我们可以知道,原始信号的频谱弥漫在整个频率轴上,经过低通滤波后的信号的频谱只剩下低频的通带内,高频的分量被抑制掉了。这就是低通滤波器的作用。
  • 8
    点赞
  • 196
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nwsuaf_huasir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值