2019-12-15

DTMF信号滤出单音

matlab程序如下
如有错误欢迎指正。

f1=852;f2=1336;%选择数字8      IIR巴特沃斯带通设计
N=1024;n=0:N-1;f=8000;T=1/f;xn=n*T;%N一般取2的整数次方 在减少计算量为由N取的较少。
fk=n/N*8000;
x=sin(2*pi*f1*xn)+sin(2*pi*f2*xn);%DTMF时域信号
wpz1=2*[(f1-20)/f,(f1+20)/f];
wsz1=2*[(f1-80)/f,(f1+80)/f];Rp=1;As=20;%这里的幅度失真Rp和衰减As因为没给出要求,我多次试验,选此参数效果较好。
[N1,wc1]=buttord(wpz1,wsz1,Rp,As);[B1,A1]=butter(N1,wc1);%设计的低频信号的带通滤波器
wpz2=2*[(f2-20)/f,(f2+20)/f];
wsz2=2*[(f2-80)/f,(f2+80)/f];[N2,wc2]=buttord(wpz2,wsz2,Rp,As);[B2,A2]=butter(N2,wc2);
%设计的高频信号的带通滤波器
[h,w]=freqz(B1,A1,256,f);
h=20*log10(abs(h));
figure;
plot(w,h);title('所设计的滤波器的通带曲线');grid on;
figure;
subplot(3,2,1);plot(fk,x);grid on;
title('DTMF的时域波形');
subplot(3,2,2);fft1=fft(x,N);%对原始信号进行离散快速傅里叶,将信号变换到频域。
plot(fk,abs(fft1));
grid on;%abs(fft1)用于画频谱
title('DTMF的信号频谱');
y1=filter(B1,A1,x);%把x经过设计的低频分量带通数字滤波器滤波
subplot(3,2,3);plot(fk,y1);grid on;
title('提取的852Hz信号的时域波形');
subplot(3,2,4);
fft2=fft(y1,N);%对原始信号进行离散快速傅里叶,将信号变换到频域。
plot(fk,abs(fft2));grid on;
title('提取的852Hz信号频谱');
y2=filter(B2,A2,x);%把x经过设计的高频分量带通数字滤波器滤波
subplot(3,2,5);plot(fk,y2);
grid on;
%abs(fft2)用于画频谱
title('提取的1366Hz信号的时域波形');
subplot(3,2,6);
fft3=fft(y2,N);%对原始信号进行离散快速傅里叶变换,将信号变换到频域。
plot(fk,abs(fft3));
grid on; %abs(fft3)用于画频谱
title('提取的1366Hz信号频谱');

滤出单音的时域和频域信号
滤波器幅频响应曲线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度逍习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值