function bandpass_pushbutton10_Callback(~, eventdata, handles) % hObject handle to bandpass_pushbutton10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

global x; global Fs; global tl; global x2;

x1=x; % fp = [2000,3000]; % fs = [1800,3300]; % Wp = 2fp/Fs; % Ws = 2fs/Fs; % if(Wp >= 1) % Wp = 0.99; % end % if(Ws >= 1) % Ws = 0.99;
% end fp = get(handles.edit3,'string');
fp = str2double(fp)2; fs = get(handles.edit4,'string');
fs = str2double(fs)2; if get(handles.radiobutton1,'value') [n, Wn]=buttord(Wp,Ws, 2, 15); [b, a]=butter(n, Wn,'bandpass'); axes(handles.axes3); [h,w]=freqz(b,a); plot(w/piFs/2,abs(h)); x1=filter(b,a,x1); elseif get(handles.radiobutton4,'value') b2=fir1(30,[fp/Fs fs/Fs],boxcar(31)); axes(handles.axes3); [h,w]=freqz(b2, 1,512); plot(w/pi
Fs/2,20log(abs(h))); x1=fftfilt(b2,x1); elseif get(handles.radiobutton5,'value') b2=fir1(30,[fp/Fs fs/Fs], triang(31)); axes(handles.axes3); [h,w]=freqz(b2, 1,512); plot(w/piFs/2,20log(abs(h))); x1=fftfilt(b2,x1); elseif get(handles.radiobutton6,'value') b2=fir1(30,[fp/Fs fs/Fs],hamming(31)); axes(handles.axes3); [h,w]=freqz(b2, 1,512); plot(w/piFs/2,20log(abs(h))); x1=fftfilt(b2,x1); elseif get(handles.radiobutton7,'value') b2=fir1(30,[fp/Fs fs/Fs],hanning(31)); axes(handles.axes3); [h,w]=freqz(b2, 1,512); plot(w/piFs/2,20log(abs(h))); x1=fftfilt(b2,x1); elseif get(handles.radiobutton8,'value') b2=fir1(30,[fp/Fs fs/Fs],blackman(31)); axes(handles.axes3); [h,w]=freqz(b2, 1,512); plot(w/piFs/2,20log(abs(h))); x1=fftfilt(b2,x1); elseif get(handles.radiobutton9,'value') b2=fir1(30,[fp/Fs fs/Fs],kaiser(31)); axes(handles.axes3); [h,w]=freqz(b2, 1,512); plot(w/piFs/2,20log(abs(h))); x1=fftfilt(b2,x1); end; axes(handles.axes5); plot(tl,x1); title('高通滤波器作用下的波形图'); xlabel('鏃堕棿/s'); N=length(x1); df=Fs/N; w=[0:df:df(N-1)] - Fs/2; %棰戠巼灏哄害 X=fft(x1); X=fftshift(X); axes(handles.axes6); plot(w,abs(X)/max(abs(X))); axis([-10000,10000,0,1]); title('婊ら櫎鍣0鍚庤闊抽璋?'); xlabel('棰戠巼/Hz'); grid on; x2=x1;

% 代码逐句详细解释内容:该函数是一个高通滤波器的回调函数,用于实现高通滤波器的功能。以下是代码的逐句详细解释:

  1. 首先声明了全局变量x、Fs、tl和x2,用于存储音频数据和采样率、时间轴和滤波后的数据。

  2. 将全局变量x的值赋给x1,以便进行滤波操作。

  3. 从GUI界面中获取用户输入的参数,即通带截止频率和阻带截止频率,并进行转换。

  4. 判断用户选择的滤波器类型,分别进行滤波操作。

  5. 在滤波器的频域中绘制滤波器的幅频特性,并在GUI界面中显示出来。

  6. 将滤波后的数据x1绘制在GUI界面的波形图中,并更改标题和横轴标签。

  7. 对滤波后的数据进行傅里叶变换,并在GUI界面中显示出来。

  8. 将滤波后的数据x1赋给全局变量x2,以便后续使用。

总体来说,该函数的作用就是对输入的音频数据进行高通滤波,并在GUI界面中显示出滤波器的幅频特性和滤波后的波形和频谱图。

MATLAB 高通滤波器回调函数实现

原文地址: https://www.cveoy.top/t/topic/nKf8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录