1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 原型低通为切比雪夫I型的IIR高通滤波器设计

原型低通为切比雪夫I型的IIR高通滤波器设计

时间:2019-11-20 19:05:01

相关推荐

原型低通为切比雪夫I型的IIR高通滤波器设计

主要内容

按要求设计数字滤波器,并对音频信号进行滤波。设计内容如下:

选用给定音频信号,或自行录制一段音频,要求时长5~10秒。在音频信号中叠加单个或多个低频频率分量。

用双线性变换法设计原型低通为切比雪夫I型的数字IIR高通滤波器,通带截止频率、阻带截止频率自行设定,以能够滤除叠加的低频分量为准。通带最大衰减1dB,阻带最小衰减40dB。

利用所设计的数字高通滤波器,对叠加了低频噪声的音频信号进行高通滤波,对比滤波前后音频信号的变化。

利用MATLAB软件进行系统建模,编写程序实现设计方案。

代码

clearclc% 读取音频文件[x,fs] = audioread('D:\ceshi12.mp3');x = x(:);%生成噪声信号,将正弦信号当成噪声信号t_0 = (0:length(x)-1)/fs;% 生成时间轴f_zao = cos(2*pi*500*t_0)/2; % 加入频率为100Hz的正弦信号f_zao=f_zao';x=x+f_zao;% 将矩阵转换成向量Fs = 48000;Ner = length(x);%求取抽样点数yer = fft(x);%对信号进行傅里叶变换fer = fs/Ner*(0:round(Ner/2)-1);%显示实际频点的一半,频域映射,转化为HZfs=48000;% 设计切比雪夫I型数字低通滤波器fp = 300*2*pi;% 阻带截止频率,并将数字滤波器的频率特征转化为模拟滤波器的fs_stop = 600*2*pi; % 通带截止频率Rp = 1; % 通带最大波纹Rs = 40; % 阻带最小衰减% 计算数字滤波器的阶数[N,Wn] = cheb1ord(fs_stop,fp,Rp,Rs,'s');%[N,Wn] = cheb1ord(fs_stop,fp,Rp,Rs,'s');%创建切比雪夫一型低通滤波器模型[z,p,k]=cheb1ap(N,Rp);%零极点增益模型转化为空间状态模型[A,B,C,D]=zp2ss(z,p,k);%低通向高通转变[AT,BT,CT,DT]=lp2hp(A,B,C,D,Wn);%空间状态模型转化为传递函数模型[num1,den1]=ss2tf(AT,BT,CT,DT);%双线性变换法模拟转数字[num,den]=bilinear(num1,den1,fs);%频率响应[H,w]=freqz(num,den); %角频率化为实际频率f = w*fs/(2*pi);% 滤波前的时域波形和频谱图figure;subplot(2,2,1);plot(x);title('滤波前的时域波形');xlabel('时间');ylabel('幅度');subplot(2,2,2);specgram(x,1024,fs);title('滤波前的频谱图');xlabel('时间');ylabel('频率');% 对音频信号进行数字滤波y = filter(num,den,x);y2=fft(y);% 滤波后的时域波形和频谱图subplot(2,2,3);plot(y);title('滤波后的时域波形');xlabel('时间');ylabel('幅度');subplot(2,2,4);specgram(y,1024,fs);title('滤波后的频谱图');xlabel('时间');ylabel('频率');% 数字高通滤波器的幅频特性和相频特性图figure;subplot(2,1,1);plot(f,(abs(H)));axis([0 3000 0 1]);title('数字高通滤波器的幅频特性');xlabel('频率 (Hz)');ylabel('幅值');grid on;subplot(2,1,2);plot(f,angle(H));axis([0 3000 -4 4]);title('数字高通滤波器的相频特性');xlabel('频率 (Hz)');ylabel('相位 (rad)');grid on;figure;subplot(2,1,1);plot(fer,abs(yer(1:round(Ner/2))));axis([0 3000 0 500])xlabel('Frequency/Hz');ylabel('Amplitude');title('滤波之前信号的频谱');grid;subplot(2,1,2);yer1=fft(y);plot(fer,abs(yer1(1:round(Ner/2))));axis([0 3000 0 500])xlabel('Frequency/Hz');ylabel('Amplitude');title('滤波之后信号的频谱');grid;sound(y,48000)

所用函数分析如下

本次MATLAB设计中主要使用了如下几个函数及所对应的功能。

audioread:读取音频文件的函数。

fft:进行傅里叶变换的函数。

cheb1ord:计算切比雪夫I型数字低通滤波器的阶数和截止频率的函数。

cheby1:设计切比雪夫I型数字低通滤波器的函数。

lp2hp:将数字低通滤波器转换为数字高通滤波器的函数。

bilinear:将模拟滤波器的传输函数转换为数字滤波器的传输函数的函数。

filter:进行数字滤波的函数。

freqz:计算数字滤波器的幅频特性和相频特性的函数。

zplane:绘制数字滤波器的传输函数的零极点图

具体设计思路如下:

首先使用‘audioread’函数读取音频文件,然后生成一个频率为200Hz的正弦波作为噪声信号,最后将噪声信号加到原始音频信号上,以模拟真实信号中的噪声。

使用‘fft’函数对信号进行傅里叶变换,以将时域信号转换为频域信号。利用切比雪夫I型数字低通滤波器的设计方法,通过函数‘cheb1ord’和‘cheb1ap’设计出模拟低通滤波器的传输函数,再使用‘lp2hp’函数将数字低通滤波器转换为数字高通滤波器,最后使用‘bilinear’函数将模拟滤波器的传输函数转换为数字滤波器的传输函数。

滤波器设计完成之后使用filter函数将数字滤波器应用于信号上,得到滤波后的信号。并利用‘freqz’函数计算数字滤波器的幅频特性和相频特性,之后使用‘plot’函数将其绘制出来。

利用‘zplane’函数绘制数字滤波器的传输函数的零极点图。

使用‘plot’和‘specgram’函数将滤波前后的时域波形和频谱图绘制出来。最后再根据要求使用‘sound’函数播放滤波后的音频,来体会滤波前后音频的不同。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。