【滤波器】基于Matlab设计巴斯 切比雪夫 椭圆 低通高通带通带阻数字滤波器附GUI界面

简介: 【滤波器】基于Matlab设计巴斯 切比雪夫 椭圆 低通高通带通带阻数字滤波器附GUI界面

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

介绍了基于Matlab的IIR数字滤波器设计方法.先确定数字滤波器的性能指标,再按照一定的映射规则(冲激响应不变法或双线性变换法)变换成模拟滤波器的性能指标,然后采用一定的逼近方法(巴特沃斯型或切比雪夫型)设计模拟滤波器,最后将模拟滤波器按照同样的映射规则转变成数字滤波器.同时介绍了设计IIR数字滤波器常用的Matlab函数.通过Matlab实验仿真,利用介绍的数字滤波器的设计方法,成功地设计出了满足预定指标的各型IIR数字滤波器.

⛄ 部分代码

function varargout = Butterworth_bandpass(varargin)


% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

                  'gui_Singleton',  gui_Singleton, ...

                  'gui_OpeningFcn', @Butterworth_bandpass_OpeningFcn, ...

                  'gui_OutputFcn',  @Butterworth_bandpass_OutputFcn, ...

                  'gui_LayoutFcn',  [] , ...

                  'gui_Callback',   []);

if nargin && ischar(varargin{1})

   gui_State.gui_Callback = str2func(varargin{1});

end


if nargout

   [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

   gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT



% --- Executes just before Butterworth_bandpass is made visible.

function Butterworth_bandpass_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 Butterworth_bandpass (see VARARGIN)


% Choose default command line output for Butterworth_bandpass

handles.output = hObject;


% Update handles structure

guidata(hObject, handles);


% UIWAIT makes Butterworth_bandpass wait for user response (see UIRESUME)

% uiwait(handles.figure1);



% --- Outputs from this function are returned to the command line.

function varargout = Butterworth_bandpass_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 muestreo_CreateFcn(hObject, eventdata, handles)

% hObject    handle to muestreo (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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

   set(hObject,'BackgroundColor','white');

end



% --- Executes on button press in menu.

function menu_Callback(hObject, eventdata, handles)

% hObject    handle to menu (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

FILTER

close Butterworth_bandpass



% --- Executes on button press in calcular.

function calcular_Callback(hObject, eventdata, handles)

% hObject    handle to calcular (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

Fs=str2double(get(handles.muestreo,'String'));

Fpb=str2double(get(handles.b_pb,'String'));

Fpb1=str2double(get(handles.dos0,'String'));

Fsb=str2double(get(handles.b_rb,'String'));

Fsb1=str2double(get(handles.dos1,'String'));

Rpb=str2double(get(handles.edit4,'String'));

Rsb=str2double(get(handles.edit5,'String'));

if (Fs<0 | isnan(Fs))

  errordlg('El valor debe ser num閞ico positivo ',' ERROR ');

  set(handles.muestreo,'String',10);

  handles.muestreo=10;

end

 

if (Fpb<0 | isnan(Fpb))

  errordlg('El valor debe ser num閞ico positivo ',' ERROR ');

  set(handles.b_pb,'String',1);

  handles.muestreo=1;

end

 

if (Fsb<0 | isnan(Fsb))

  errordlg('El valor debe ser num閞ico positivo ',' ERROR ');

  set(handles.b_rb,'String',4);

  handles.b_rb=4;

end

 

if (Rpb<0 | isnan(Rpb))

  errordlg('El valor debe ser num閞ico positivo ',' ERROR ');

  set(handles.edit4,'String',10);

  handles.edit4=10;

end

 

if (Rsb<0 | isnan(Rsb))

  errordlg('El valor debe ser num閞ico positivo ',' ERROR ');

  set(handles.edit5,'String',30);

  handles.edit5=30;

end




fs=Fs/2;    %Frec. de muestreo


fpb=[Fpb Fpb1]/fs;  %Frec. de borde pasa banda

fpb


fsb=[Fsb Fsb1]/fs; % Frec. de borde rechaza banda

fsb


%------------------------------------------------------------


[n,wn]=buttord(fpb, fsb, Rpb, Rsb);

[b,a] =butter(n,wn,'bandpass');

[H,w]=freqz(b,a,512,1);


%Trazado de la respuesta en Magnitud


axes(handles.axes1)

plot(w,20*log10(abs(H)));

grid on;

title (['Filtro pasa-bajos, Respuesta en magnitud, orden=', num2str(n)]);

xlabel('frecuencia');

ylabel('H(f) db')

axis([0 0.5 -Rsb-10 0])


axes(handles.axes2)

plot(w,angle(H));

grid on;

title (['Filtro pasa-bajos, Respuesta en magnitud, orden=', num2str(n)]);

xlabel('frecuencia')

ylabel('醤gulo de H rad')


%Resp al impulso

axes(handles.axes3)

[y,t]= impz(b,a,60);

stem(t,y);

title (['Filtro pasa-bajos, Respuesta al impulso, orden=', num2str(n)]);


%Ploteo de los polos y ceros


z= roots(b);  %Zeros

p = roots(a);  % Polos


axes(handles.axes4)

zplane(z,p)

title(['Trazade polos y ceros para Butter'])

⛄ 运行结果

⛄ 参考文献

[1]王艳文, 史先红. 基于MATLAB的切比雪夫Ⅱ型数字低通滤波器设计[J]. 科技视界, 2013(17):1.

[2]贾建科, 韩团军, 朱宁洲. 基于MatlabGUI的模拟带通滤波器的设计[J]. 现代电子技术, 2010, 33(10):5.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
9天前
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
|
7天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
10天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
|
16天前
|
机器学习/深度学习 算法 语音技术
【语音分离】通过分析信号的FFT,根据音频使用合适的滤波器进行语音信号分离(Matlab代码实现)
【语音分离】通过分析信号的FFT,根据音频使用合适的滤波器进行语音信号分离(Matlab代码实现)
|
25天前
|
传感器 算法 数据可视化
【卡尔曼滤波跟踪】跟踪目标的轨迹,并将滤波器输出与原始轨迹进行比较(Matlab实现)
【卡尔曼滤波跟踪】跟踪目标的轨迹,并将滤波器输出与原始轨迹进行比较(Matlab实现)
|
2月前
|
机器学习/深度学习 资源调度 算法
【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)
【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)
|
9天前
|
算法 计算机视觉
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
|
9天前
|
编解码 人工智能 算法
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
|
7天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
86 14

热门文章

最新文章