当前位置:首页 » 《随便一记》 » 正文

matlab(实例):滤波器(低通、带通、高通,使用butter函数、filter函数)

20 人参与  2024年04月29日 15:55  分类 : 《随便一记》  评论

点击全文阅读


一、题目:已知一个时域信号,包含三个频率(50Hz、150Hz、300Hz),分别设计并使用低通滤波器、带通滤波器、高通滤波器,对其进行滤波,画出滤波信号的时域图和频谱图。

x = sin(2\pi*50t )+sin(2\pi*150t )+sin(2\pi*300t )

二、解题过程:

①函数介绍:

本次编码使用函数butter函数和filter函数

1、butter()

用于计算滤波器系数

语法:

      [b,a] = butter(n,Wn)
      [b,a] = butter(n,Wn,ftype)

      [z,p,k] = butter(___)
      [A,B,C,D] = butter(___)

      [___] = butter(___,'s')

输入参数
      n - 滤波器阶数
        整数标量
      Wn - 截止频率,注意:Wn = fc_low/(fs/2)
        标量 | 二元素向量
      ftype - 滤波器类型
        'low' | 'bandpass' | 'high' | 'stop'

输出参数
      b,a - 传递函数系数
        行向量
      z,p,k - 零点、极点和增益
        列向量、标量
      A,B,C,D - 状态空间矩阵
        矩阵

2、filter()

使用滤波器对信号进行滤波

语法
      y = filter(b,a,x)
      y = filter(b,a,x,zi)
      y = filter(b,a,x,zi,dim)
      [y,zf] = filter(___)

输入参数
      b - 有理传递函数的分子系数
        向量
      a - 有理传递函数的分母系数
        向量
      x - 输入数据
        向量 | 矩阵 | 多维数组
      zi - 滤波器延迟的初始条件
        [] (默认值) | 向量 | 矩阵 | 多维数组
      dim - 沿其运算的维度
        正整数标量

输出参数
      y - 滤波后的数据
        向量 | 矩阵 | 多维数组
      zf - 滤波器延迟的最终条件
        向量 | 矩阵 | 多维数组

②代码

1、低通滤波器

clc clearclose all% 创建一个测试信号fs = 1000; % 采样频率t = 0:1/fs:1; % 时间向量x = sin(2*pi*50*t) + sin(2*pi*150*t) + 0.5*sin(2*pi*300*t); % 包含50Hz、150Hz和300Hz成分的信号fc_low = 100; % 低截止频率fc_high = 200; % 高截止频率N = 7; % 滤波器阶数[b, a] = butter(N, fc_low/(fs/2), 'low'); % 计算低通滤波器系数% [b, a] = butter(N, [fc_low/(fs/2), fc_high/(fs/2)], 'bandpass'); % 计算中通滤波器系数% [b, a] = butter(N, fc_high/(fs/2), 'high'); % 计算中高通滤波器系数% 使用中通滤波器对信号进行滤波y = filter(b, a, x);% 绘制原始信号和滤波后的信号figure;subplot(2,1,1);plot(t, x);title('原始信号');xlabel('t/s');ylabel('幅值');subplot(2,1,2);plot(t, y);title('滤波信号');xlabel('t/s');ylabel('幅值');% 傅里叶变换,画频谱图Ns = 100; % 傅里叶变换采样点数delta_f = fs/Ns; % 频率分辨率x_f = (0:Ns-1)*delta_f; % 频域信号横轴S_f = fft(x(1:Ns));figure(2)subplot(2,1,1)stem(x_f, abs(S_f), 'filled');title('原信号频谱')xlabel('f/Hz')ylabel('幅值')y_f = (0:Ns-1)*delta_f; % 频域信号横轴Y_f = fft(y(1:Ns));subplot(2,1,2)stem(y_f, abs(Y_f), 'filled');title('滤波信号频谱')xlabel('f/Hz')ylabel('幅值')

2、带通滤波器

clc clearclose all% 创建一个测试信号fs = 1000; % 采样频率t = 0:1/fs:1; % 时间向量x = sin(2*pi*50*t) + sin(2*pi*150*t) + 0.5*sin(2*pi*300*t); % 包含50Hz、150Hz和300Hz成分的信号fc_low = 100; % 低截止频率fc_high = 200; % 高截止频率N = 7; % 滤波器阶数% [b, a] = butter(N, fc_low/(fs/2), 'low'); % 计算低通滤波器系数[b, a] = butter(N, [fc_low/(fs/2), fc_high/(fs/2)], 'bandpass'); % 计算中通滤波器系数% [b, a] = butter(N, fc_high/(fs/2), 'high'); % 计算中高通滤波器系数% 使用中通滤波器对信号进行滤波y = filter(b, a, x);% 绘制原始信号和滤波后的信号figure;subplot(2,1,1);plot(t, x);title('原始信号');xlabel('t/s');ylabel('幅值');subplot(2,1,2);plot(t, y);title('滤波信号');xlabel('t/s');ylabel('幅值');% 傅里叶变换,画频谱图Ns = 100; % 傅里叶变换采样点数delta_f = fs/Ns; % 频率分辨率x_f = (0:Ns-1)*delta_f; % 频域信号横轴S_f = fft(x(1:Ns));figure(2)subplot(2,1,1)stem(x_f, abs(S_f), 'filled');title('原信号频谱')xlabel('f/Hz')ylabel('幅值')y_f = (0:Ns-1)*delta_f; % 频域信号横轴Y_f = fft(y(1:Ns));subplot(2,1,2)stem(y_f, abs(Y_f), 'filled');title('滤波信号频谱')xlabel('f/Hz')ylabel('幅值')

3、高通滤波器

clc clearclose all% 创建一个测试信号fs = 1000; % 采样频率t = 0:1/fs:1; % 时间向量x = sin(2*pi*50*t) + sin(2*pi*150*t) + 0.5*sin(2*pi*300*t); % 包含50Hz、150Hz和300Hz成分的信号fc_low = 100; % 低截止频率fc_high = 200; % 高截止频率N = 7; % 滤波器阶数% [b, a] = butter(N, fc_low/(fs/2), 'low'); % 计算低通滤波器系数% [b, a] = butter(N, [fc_low/(fs/2), fc_high/(fs/2)], 'bandpass'); % 计算中通滤波器系数[b, a] = butter(N, fc_high/(fs/2), 'high'); % 计算中高通滤波器系数% 使用中通滤波器对信号进行滤波y = filter(b, a, x);% 绘制原始信号和滤波后的信号figure;subplot(2,1,1);plot(t, x);title('原始信号');xlabel('t/s');ylabel('幅值');subplot(2,1,2);plot(t, y);title('滤波信号');xlabel('t/s');ylabel('幅值');% 傅里叶变换,画频谱图Ns = 100; % 傅里叶变换采样点数delta_f = fs/Ns; % 频率分辨率x_f = (0:Ns-1)*delta_f; % 频域信号横轴S_f = fft(x(1:Ns));figure(2)subplot(2,1,1)stem(x_f, abs(S_f), 'filled');title('原信号频谱')xlabel('f/Hz')ylabel('幅值')y_f = (0:Ns-1)*delta_f; % 频域信号横轴Y_f = fft(y(1:Ns));subplot(2,1,2)stem(y_f, abs(Y_f), 'filled');title('滤波信号频谱')xlabel('f/Hz')ylabel('幅值')

三、结语

对于傅里叶变换,本文不再赘述,可看本人之前的文章;

要注意截止频率Wn的取值,需要除以二倍的采样频率;

有问题可以留言,本人尽量解答


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/102035.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -
  • 《漫天烟火不及你》陈浩然傅启完本小说_完结版小说全文免费阅读《漫天烟火不及你》陈浩然傅启 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1