基于matlabGUI的fir滤波器
时间: 2023-08-23 18:08:28 浏览: 94
基于MATLAB的数字滤波器FIR设计实现,带GUI界面,matlab源码+word版说明文档
5星 · 资源好评率100%
实现一个基于MATLAB GUI的FIR滤波器的步骤如下:
1. 创建一个新的MATLAB GUI界面,在界面上添加一个按钮和一个文本框用于输入滤波器的阶数。
2. 在按钮回调函数中,读取文本框中的阶数,然后使用MATLAB内置函数fir1生成FIR滤波器系数。
3. 将FIR滤波器系数传递给filter函数,将要滤波的信号输入到filter函数中,得到滤波后的结果。
4. 将滤波后的结果绘制在GUI界面上的一个坐标系中,以便于用户观察。
下面是一个简单的示例代码:
```matlab
function fir_filter_gui
% 创建GUI界面
fig = figure('Name','FIR Filter','NumberTitle','off','Position',[200,200,500,400]);
% 添加文本框
uicontrol('Style','text','String','Filter Order:','Position',[10,350,100,20]);
order_edit = uicontrol('Style','edit','Position',[120,350,100,20]);
% 添加按钮
uicontrol('Style','pushbutton','String','Filter','Position',[250,350,100,20],'Callback',@filter_callback);
% 添加坐标系
axes_handle = axes('Units','pixels','Position',[50,50,400,250]);
% 回调函数
function filter_callback(~,~)
% 读取阶数
order = str2double(get(order_edit,'String'));
% 生成FIR滤波器系数
b = fir1(order,0.5); % 0.5为截止频率
% 生成信号
t = 0:0.01:10;
x = sin(2*pi*0.2*t) + sin(2*pi*0.5*t) + randn(size(t));
% 进行滤波
y = filter(b,1,x);
% 绘制结果
plot(axes_handle,t,x,'b',t,y,'r');
legend('Original','Filtered');
end
end
```
在GUI界面上输入滤波器的阶数,然后点击Filter按钮,即可看到滤波后的结果。
阅读全文