一、获取代码方式

获取代码方式1:
完整代码已上传我的资源: 【滤波器】基于matlab GUI高通+低通+带通+带阻FIR滤波器设计【含Matlab源码 699期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、数字滤波器设计简介

1 设计原理

1.1 滤波器概念

1.2 数字滤波器的系统函数和差分方程

1.3 数字滤波器结构的表示


1.4 数字滤波器的分类


2.1 IIR滤波器与FIR滤波器的分析比较

2.2 FIR滤波器的原理








3 FIR滤波器的仿真步骤

三、部分源代码

%--------------------------------------------------------------------------
%利用kaiser窗设计低通滤波器m文件
%默认输入参数:   N=64
%                beta=5.568
%                wc=0.5pi
%输出参数:      通带边界(wp)
%               阻带边界(ws)
%               通带波纹
%               阻带衰减
%--------------------------------------------------------------------------
function varargout = lpfilter(varargin)
% LPFILTER M-file for lpfilter.fig
%      LPFILTER, by itself, creates a new LPFILTER or raises the existing
%      singleton*.
%
%      H = LPFILTER returns the handle to a new LPFILTER or the handle to
%      the existing singleton*.
%
%      LPFILTER('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in LPFILTER.M with the given input arguments.
%
%      LPFILTER('Property','Value',...) creates a new LPFILTER or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before lpfilter_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to lpfilter_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help lpfilter% Last Modified by GUIDE v2.5 29-Jun-2007 13:21:40% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @lpfilter_OpeningFcn, ...'gui_OutputFcn',  @lpfilter_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin & isstr(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before lpfilter is made visible.
function lpfilter_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to lpfilter (see VARARGIN)% Choose default command line output for lpfilter
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes lpfilter wait for user response (see UIRESUME)
% uiwait(handles.figure1);
%--------------------------------------------------------------------------
%设置滤波器长度,beta和截止频率编辑框的初始值
%设置窗体的标题
set(handles.figure1,'name','FIR低通滤波器');
set(handles.edit_N,'string','64');
set(handles.edit_beta,'string','5.568');
set(handles.edit_fc,'string','0.5');
%--------------------------------------------------------------------------
%由设置的初始值求取滤波器的理想单位脉冲响应
handles.wc=0.5*pi;
handles.M=64;
handles.hd=ideal_lp(handles.wc,handles.M);
%--------------------------------------------------------------------------
%绘制滤波器的理想单位脉冲响应
axes(handles.axes_hd);
n=[0:1:handles.M-1];
plot(n,handles.hd);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55title('滤波器理想脉冲响应');
axis([0 handles.M-1 min(handles.hd) max(handles.hd)+0.01]);
xlabel('n');
ylabel('hd(n)');
grid on;
guidata(hObject,handles);% --- Executes on button press in plot.
function plot_Callback(hObject, eventdata, handles)
% hObject    handle to plot (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%--------------------------------------------------------------------------
%从编辑框获取滤波器长度,beta和截止频率的值
handles.M = str2double(get(handles.edit_N,'String'));
handles.beta = str2double(get(handles.edit_beta,'String'));
handles.wc = str2double(get(handles.edit_fc,'String'))*pi;
%求取滤波器的理想单位脉冲响应
handles.hd=ideal_lp(handles.wc,handles.M);
%绘制滤波器的理想单位脉冲响应
axes(handles.axes_hd);
plot(0,0);
n=[0:1:handles.M-1];
plot(n,handles.hd);
title('滤波器理想脉冲响应');
axis([0 handles.M-1 min(handles.hd) max(handles.hd)]);
xlabel('n');
ylabel('hd(n)');
grid on;
%--------------------------------------------------------------------------
%求取kaiser窗函数
handles.w_kai=(kaiser(handles.M,handles.beta))';
%绘制kaiser窗函数
axes(handles.axes_wkaiser);
plot(n,handles.w_kai);
title('kaiser窗');
axis([0 handles.M-1 min(handles.w_kai) max(handles.w_kai)]);
xlabel('n');
ylabel('w(n)');
grid on;
%--------------------------------------------------------------------------
%求取滤波器的实际单位脉冲响应
handles.h=handles.hd.*handles.w_kai;
%绘制滤波器的实际单位脉冲响应
axes(handles.axes_h);
plot(n,handles.h);
title('滤波器实际脉冲响应');
axis([0 handles.M-1 min(handles.h) max(handles.h)]);
xlabel('n');
ylabel('h(n)');
grid on;
%--------------------------------------------------------------------------
%求取滤波器的频率特性,并绘制幅频特性(转换到0—pi)
[H,w] = freqz(handles.h,[1],handles.M*6,'whole');
% freqz(handles.h,[1],handles.M*6);
H=(H(1:1:handles.M*3))';
w=(w(1:1:handles.M*3))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
% pha=angle(H);
%绘制幅频特性(转换到0—pi)
axes(handles.axes_lp);
plot(w/pi,db);
title('FIR滤波器的幅频特性(0-pi)');
axis([0 1 min(db) max(db)]);
xlabel('Frequency in pi units');
ylabel('Decibels');
grid on;
guidata(hObject,handles);
%--------------------------------------------------------------------------
%由求得幅频特性计算通带边界,阻带边界,通带纹波和阻带衰减
%由beta值计算阻带衰减As
if handles.beta<4.5513As=fzero(@myfun,20,[],handles.beta)+21;
elseAs=handles.beta/0.1102+8.7;
end
%计算通带边界wp,阻带边界ws
w_w=(As-7.95)/((handles.M-1)*14.36)*2;
ws=0.5*(w_w+2*handles.wc/pi);
wp=0.5*(2*handles.wc/pi-w_w);
% mag=(mag+eps)/max(mag);
%计算通带纹波rp
% deta_w=2*pi/(handles.M*6);
% w_temp=mag(floor(ws/deta_w));
% mag_temp=abs(mag(1:floor(ws/deta_w))-w_temp);
rp=20*log10(max(mag));
%--------------------------------------------------------------------------
%在相应的编辑框中显示通带边界,阻带边界,通带纹波和阻带衰减
str=sprintf('%.2f',wp);
set(handles.edit_wp,'string',str);
str=sprintf('%.2f',ws);
set(handles.edit_ws,'string',str);
str=sprintf('%.4f',rp);
set(handles.edit_rp,'string',str);
str=sprintf('%.2f',-As);
set(handles.edit_As,'string',str);
%--------------------------------------------------------------------------
%退出程序
function exit_Callback(hObject, eventdata, handles)
% hObject    handle to exit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
close(handles.figure1);%--------------------------------------------------------------------------
%自定义函数,计算理想低通滤波器的单位脉冲响应
function hd=ideal_lp(wc,M);
alpha=(M-1)/2;
n = [0:1:(M-1)];
m=n-alpha+eps;
hd=sin(wc*m)./(pi*m);
% --- Outputs from this function are returned to the command line.
function varargout = lpfilter_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structure
varargout{1} = handles.output;% --- Executes during object creation, after setting all properties.
function edit_N_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit_N (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispcset(hObject,'BackgroundColor','white');
elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
endfunction edit_N_Callback(hObject, eventdata, handles)
% hObject    handle to edit_N (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_N as text
%        str2double(get(hObject,'String')) returns contents of edit_N as a double% --- Executes during object creation, after setting all properties.
function edit_beta_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit_beta (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispcset(hObject,'BackgroundColor','white');
elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
endfunction edit_beta_Callback(hObject, eventdata, handles)
% hObject    handle to edit_beta (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_beta as text
%        str2double(get(hObject,'String')) returns contents of edit_beta as a double

四、运行结果




五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.

【滤波器】基于matlab GUI高通+低通+带通+带阻FIR滤波器设计【含Matlab源码 699期】相关推荐

  1. 较高人工智能的人机博弈程序实现(多个算法结合)含C++源码

    较高人工智能的人机博弈程序实现(多个算法结合)含C++源码 本文由恋花蝶最初发表于http://blog.csdn.net/lanphaday 上,您可以转载.引用.打印和分发等,但必须保留本文完整和 ...

  2. 【手写数字识别】基于matlab GUI BP神经网络单个或连续手写数字识别系统【含Matlab源码 2296期】

    ⛄一.手写数字识别技术简介 1 案例背景 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性.由于手写体数字的随意性很大,如笔画粗细.字体大小. ...

  3. 【GA MTSP】基于matlab GUI遗传算法求解多旅行商问题(多起点不同终点)【含Matlab源码 935期】

    一.TSP简介 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择 ...

  4. 【Matlab图像去噪】高通+低通+带通+方向滤波器图像滤波【含源码 1209期】

    一.代码运行视频(哔哩哔哩) [Matlab图像去噪]高通+低通+带通+方向滤波器图像滤波[含源码 1209期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  5. 基于matlab的频率响应分析,基于MATLAB/GUI的二阶低通电路频率响应分析与仿真

    第 34 卷 第 5 期 2011 年 10 月 电 子 器 件 Chinese Journal of Electron Devices Vol. 34 No. 5 Oct. 2011 项目来源: 基 ...

  6. 21.失真/低高通/振铃效应/旁瓣泄漏效应/频域滤波/图像深度/频带/线性滤波源码分析 -- OpenCV从零开始到图像(人脸 + 物体)识别系列

    本文作者:小嗷 微信公众号:aoxiaoji 吹比QQ群:736854977 简书链接:https://www.jianshu.com/u/45da1fbce7d0 本文你会找到以下问题的答案: 失真 ...

  7. 【图像处理】基于matlab GUI多功能图像处理系统【含Matlab源码 1876期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像处理]基于matlab GUI多功能图像处理系统[含Matlab源码 1876期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  8. 基于Java毕业设计幼儿校园通系统的设计与实现源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计幼儿校园通系统的设计与实现源码+系统+mysql+lw文档+部署软件 基于Java毕业设计幼儿校园通系统的设计与实现源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目 ...

  9. 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  10. 【数字信号】基于matlab GUI电话按键识别【含Matlab源码 2382期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号]基于matlab GUI电话按键识别[含Matlab源码 2382期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

最新文章

  1. TS中补充的六个类型
  2. 1万属性,100亿数据,每秒10万吞吐,架构如何设计?
  3. 剑指offer(牛客)——从尾到头打印链表
  4. ELK报错hese locations are not writable or multiple nodes were started without inc
  5. mongoengine.NotUniqueError
  6. 最IN的云原生架构,阿里云 Serverless 事件总线 EventBridge 重磅发布
  7. c语言巩固,巩固一下C语言中的指针
  8. 腾讯2017暑期实习编程题3
  9. SQL server 表数据改变触发发送邮件
  10. 使用LINQ to SQL更新数据库(中):几种解决方案
  11. Docker入门之安装与卸载
  12. [Bug]Superset通过pyhive连接Spark SQL表名获取失败
  13. SEO优化:站群的操作方法有哪些,网站集群系统是什么?
  14. windows server2008 安装iscsi服务
  15. SIM868烧写自己MT2503开发的程序过程
  16. 抖音的服务器究竟有多大
  17. 计算机指数函数表示法,指数函数e^x的快速计算方法
  18. 【调剂】上海海洋大学物理海洋学专业招收理学调剂硕士生
  19. 云时代的阡陌纵横”的数据网络?
  20. cpi 计算机体系结构 转移指令,计算机体系结构题目.ppt

热门文章

  1. LoadRunner Vuser测试脚本添加前置条件举例
  2. HDU - 2087 剪花布条(kmp)
  3. [Django]Windows下的Django安装——通过pip
  4. NET代码运行在服务器JS运行在客户端
  5. 第四次黄鹤楼之老照片
  6. [IOS]使用UIScrollView和UIPageControl显示半透明帮助蒙板
  7. 『nForce主板』巧妙去掉“安全删除硬盘”图标!
  8. 人机交互,情感计算,,人工智能相关研究的科研团队
  9. Atitit 缓存实施遇到的问题与解决 s420 attilax 艾提拉总结 Atitit 缓存增加最佳实践与实施流程 1. 业务准确性问题正确性问题 1 1.1. 缓存key正确性问题 1
  10. Atitit.wrmi web rmi框架新特性