Matlab滤波器设计——基于filter函数的低通、高通、带通、带阻滤波器
文章目录
- 问题提出
- 一、低通滤波器
- 1.保留5Hz
- 2.运行结果
- 二、高通滤波器
- 1.保留30Hz
- 2.运行结果
- 三、带通滤波器
- 1.保留20Hz
- 2.运行结果
- 四、带阻滤波器
- 1.滤除5Hz和30Hz
- 2.运行结果
- 最后
问题提出
有频率为5Hz、15Hz、30Hz的叠加余弦信号,进行如下设计:
(1)设计低通滤波器保留5Hz的频率分量;
(2)设计高通滤波器保留30Hz的频率分量;
(3)设计带通滤波器保留20Hz的频率分量;
(4)设计带阻滤波器滤除5Hz和30Hz的频率分量。
一、低通滤波器
1.保留5Hz
clear
clc
f1=5;%第一个点频信号分量频率
f2=15;%第二个点频信号分量频率
f3=30;%第三个点频信号分量频率
fs=150;%采样率
T=2;%时宽
B=10;%FIR截止频率
n=round(T*fs);%采样点个数
t=linspace(0,T,n);
y=cos(2*pi*f1*t)+cos(2*pi*f2*t)+cos(2*pi*f3*t);%叠加信号
figure;
subplot(221)
plot(t,y);
title('原始信号时域');
xlabel('t/s');
ylabel('幅度');
fft_y=fftshift(fft(y));%将fft结果以fs/2为中心左右互换
f=linspace(-fs/2,fs/2,n);
subplot(222)
plot(f,abs(fft_y));
title('原始信号频谱');
xlabel('f/Hz');
ylabel('幅度');
axis([ 0 50 0 100]);
b=fir1(80, B/(fs/2),'low'); %低通
y_after_fir=filter(b,1,y);%
subplot(223)
plot(t,y_after_fir);
title('滤波后信号时域');
xlabel('t/s');
ylabel('幅度');
fft_y1=fftshift(fft(y_after_fir));%将fft结果以fs/2为中心左右互换
f=linspace(-fs/2,fs/2,n);
subplot(224)
plot(f,abs(fft_y1));
title('滤波后信号频谱');
xlabel('f/Hz');
ylabel('幅度');
axis([ 0 50 0 100]);
figure;
freqz(b);%数字滤波器频率响应
2.运行结果
二、高通滤波器
1.保留30Hz
clear
clc
f1=5;%第一个点频信号分量频率
f2=15;%第二个点频信号分量频率
f3=30;%第三个点频信号分量频率
fs=150;%采样率
T=2;%时宽
B=25;%FIR截止频率
n=round(T*fs);%采样点个数
t=linspace(0,T,n);
y=cos(2*pi*f1*t)+cos(2*pi*f2*t)+cos(2*pi*f3*t);
figure;
subplot(221)
plot(t,y);
title('原始信号时域');
xlabel('t/s');
ylabel('幅度');
fft_y=fftshift(fft(y));
f=linspace(-fs/2,fs/2,n);
subplot(222)
plot(f,abs(fft_y));
title('原始信号频谱');
xlabel('f/Hz');
ylabel('幅度');
axis([ 0 50 0 100]);
b=fir1(80, B/(fs/2),'high'); %高通
y_after_fir=filter(b,1,y);
subplot(223)
plot(t,y_after_fir);
title('滤波后信号时域');
xlabel('t/s');
ylabel('幅度');
fft_y1=fftshift(fft(y_after_fir));
f=linspace(-fs/2,fs/2,n);
subplot(224)
plot(f,abs(fft_y1));
title('滤波后信号频谱');
xlabel('f/Hz');
ylabel('幅度');
axis([ 0 50 0 100]);
figure;
freqz(b);%数字滤波器频率响应
2.运行结果
三、带通滤波器
1.保留20Hz
clear
clc
f1=5;%第一个点频信号分量频率
f2=15;%第二个点频信号分量频率
f3=30;%第三个点频信号分量频率
fc1=10;
fc2=25;
fs=150;%采样率
[n,Wn,beta,ftype]=kaiserord([7 13 17 23] ,[0 1 0], [0.01 0.01 0.01] ,100) ;
w1=2*fc1/fs; w2=2*fc2/fs ;
window=kaiser(n+1 ,beta) ;%使用kaiser窗函数
b=fir1 (n, [w1 w2],window) ;%使用标准频率响应的加窗设计函数fir1
T=2;%时宽
n=round(T*fs);%采样点个数
t=linspace(0,T,n);
s = cos(2*pi*t*f1) +cos (2*pi*t*f2) +cos (2*pi*t*f3) ;
sf = filter (b,1,s) ;%对信号s进行滤波
f=linspace(-fs/2,fs/2,n);
S=fftshift(fft(s)) ;
SF=fftshift(fft(sf)) ;
figure
subplot(2,2,1) ;
plot(t,s)
%画出时域内的号
subplot(2,2,3) ;
plot(t,sf)
%画出时域内的信号
subplot(2,2,2) ;
f1=abs(S);
f2=abs(SF);
plot(f,f1) ; %画出频域内的信号
title('原始信号频谱');
axis([ 0 50 0 100]);
subplot(2,2,4) ;
plot(f,f2);%画出频域内的信号
title('滤波后信号频谱');
axis([ 0 50 0 100]);
figure;
freqz (b,1,512) ;%数字滤波器频率响应
2.运行结果
四、带阻滤波器
1.滤除5Hz和30Hz
clear
clc
f1=5;%第一个点频信号分量频率
f2=15;%第二个点频信号分量频率
f3=30;%第三个点频信号分量频率
fs=150;
T=2;%时宽
n=round(T*fs);%采样点个数
t=linspace(0,T,n);
y=cos(2*pi*f1*t)+cos(2*pi*f2*t)+cos(2*pi*f3*t);
flp=0;
fhp=30;
fls=15;
fhs=25;
wlp=2*pi*flp/fs;
whp=2*pi* fhp/fs;
wls=2*pi*fls/fs;
whs=2*pi* fhs/fs;
wc=[(wlp+wls)/(2* pi),(whp+whs)/(2*pi)];
delta1=wls-wlp;
delta2=whp-whs;
delta_w=min(delta1 ,delta2);
N=ceil(1.8*pi/delta_w); %不同的窗要选择系数不同
N=N+rem(N,2);
window=boxcar(N+1); %选择窗函数
b=fir1 (28, wc,window) ;
ylb=filter(b,1,y);
f=linspace(-fs/2,fs/2,n);
y1=fftshift(fft(y));
ylb1=fftshift(fft(ylb)) ;
figure(1)
subplot(221)
plot(t,y)
subplot(222)
y1=abs(y1);
plot(f,y1)
title('原始信号频谱');
axis([ 0 50 0 100]);
subplot(223)
plot(t,ylb)
subplot(224)
ylb1=abs(ylb1);
plot(f,ylb1)
title('滤波后信号频谱');
axis([ 0 50 0 100]);
figure
freqz (b,1,512) ;%数字滤波器频率响应
2.运行结果
最后
不定期发布一些matlab设计内容,敬请期待。包括但不限于如下内容:信号处理、通信仿真、gui设计、matlab appdesigner,simulink仿真。有任何有关MATLAB的问题可以关注公众号MatpyMaster加小英雄学长欧~
Matlab滤波器设计——基于filter函数的低通、高通、带通、带阻滤波器相关推荐
- matlab fir1 filter,Matlab滤波器设计
滤波器设计是一个创建满足指定滤波要求的滤波器参数的过程.滤波器的实现包括滤波器结构的选择和滤波器参数的计算.只有完成了滤波器的设计和实现,才能最终完成数据的滤波. 滤波器设计的目标是实现数据序列的频率 ...
- Matlab滤波器设计
滤波器设计是一个创建满足指定滤波要求的滤波器参数的过程. 滤波器的实现包括滤波器结构的选择和滤波器参数的计算.只有完成了滤波器的设计和实现,才能最终完成数据的滤波. 滤波器设计的目标是实现数据序列的频 ...
- Matlab滤波器设计示例
目录 1. 概要 2. 低通滤波器设计例 with designfilt() 2.1 要点一:归一化频率 2.2 要点二:如何使用所生成的滤波器 3. designfilt() 的功能 3.1 能设计 ...
- 用matlab设计滤波器实验报告,数字信号出来实验报告--matlab滤波器设计
数字信号出来实验报告--matlab滤波器设计 广 西 工 学 院 实 验 报 告 用 纸 实验名称 IIR数字滤波器的设计 实验成绩 指导老师 陈艳 系(院) 计算机工程系 班级 学号 学生姓名 一 ...
- python源码 高通滤波、低通滤波、带通滤波
创作不易,如果此文使您有收获,记得点赞哦! 一. 傅里叶变化原理: https://www.cnblogs.com/wojianxin/p/12529809.html 二. 高通滤波.低通滤波.带通滤 ...
- matlab中最好用的滤波函数,谁有matlab滤波器设计实例,想找个参考,最好是hamming窗,低通 fir滤波器。...
满意答案 doublesx 2013.06.29 采纳率:45% 等级:11 已帮助:8601人 利用汉宁窗设计Ⅰ型数字高通滤波器 clear all; Wp=0.6*pi; Ws=0.4*pi ...
- matlab滤波器设计双陷滤波,基于MATLAB 双线性变换法IIR 滤波器的设计
摘要:滤波是信号处理的基础,因此滤波器的设计也就成为数字信号处理的基本问题之一.数字滤波是对数字信号处理不可或缺的环节,其好处远远大于模拟滤波器.本文应用MATLAB,实现了用双线性变换法设计IIR滤 ...
- matlab emi滤波器设计,基于Matlab-GUI的EMI滤波器设计
电子工业技术的飞速发展,带动了一系列新兴学科,电磁兼容也成为新秀并不断发展和壮大.经过10年发展,尤其随着变频器以及高频脉宽调制等变流技术在各种电源设备.传动设备等的广泛使用,其工作频率的不断提高,形 ...
- matlab二阶滤波器设计,基于matlab的各类滤波器设计
描述 一. 采用fir1 采用了窗函数设计方法 语法如下: 各项参数意义: b:返回的FIR滤波器单位脉冲响应,脉冲响应为偶对称,长度为n+1 n:滤波器的阶数,需要注意的是,设计出的滤波器长度为n+ ...
最新文章
- CSE 3100 Systems Programming
- 压力管道流量计算公式_带你全面了解各种流量计!
- flutter 调用原生安卓插件_Flutter 如何调用Android和iOS原生代码-阿里云开发者社区...
- 考研英语一2016年真题4篇阅读词汇句子积累(详细!!!)
- formal method里面的并发问题
- 学物理也能拿数学世界级奖!每逢实验失败就跑步......河大女生太励志了!!
- rtt学习记录、面向对象oopc等分享
- 腐蚀rust高速箭怎么做不了_高速公路波形护栏板安装时的设置要求
- MySQL中Checkpoint技术
- 2022年PMP考试安排
- glnxa64 matlab 什么版本_Matlab 2014a 免费版-Matlab2014 Mac版下载 V2014b免费版-PC6苹果网...
- 工具类-BasePopupWindow
- 经典单片机c语言教程 pdf下载,51单片机经典教程.pdf
- python12306买票_Python 使用 selenium 实现半自动购买12306火车票
- 【linux内核分析与应用-陈莉君】中断处理机制
- python 抓取上交所、深交所互动版块的投资者提问(散户评论)
- AP 计算机 一次完美的逆袭
- Partial Multi-Label Learning(PML)-文献学习
- KANZI入门第一篇之kanzi详解,教你轻松学kanzi
- 《勋伯格和声学》读书笔记(八):转调