Matlab论坛
直播中

陶醉了的猫

12年用户 599经验值
私信 关注
[问答]

IIR低通滤波的结果分析

明明的低通为啥滤波后是空白?高通的也是空白。  求解释。详细点~
clear;close all
[z,fs,bits]=wavread('e:1234.wav')
y=z(1:8192)
Y=fft(y)
fp=1000;fc=1200;As=100;Ap=1;Fs=8000
wc=2*fc/Fs;wp=2*fp/Fs
[N,ws]=buttord(wc,wp,Ap,As)
[b,a]=butter(N,ws)
figure(1)
freqz(b,a,512,Fs)
x=filter(b,a,z)
X=fft(x,8192)
figure(2)
subplot(2,2,1);plot(abs(Y));axis([0,1000,0,1.0])
title('滤波前信号频谱')
subplot(2,2,2);plot(abs(X));axis([0,1000,0,1.0])
title('滤波后信号频谱')
subplot(2,2,3);plot(z)
title('滤波前信号波形')
subplot(2,2,4);plot(x)
title('滤波后信号波形')
b_large_AOwX_74d80000b8201262.jpg

b_large_QtcB_2af2000012a81261.jpg

回帖(9)

shawon

2012-6-14 15:27:31
是不是截止频率选的不合适啊?
举报

凌晨3点睡

2012-6-14 15:29:07
FS如果是8192乘以2呢
举报

h1654155199.5148

2012-6-14 15:29:43
fs本身存储的就是采样频率吧,为什么要定义新的采样频率Fs?
举报

陶醉了的猫

2012-6-14 15:30:15
乘以2还是空白。FS我改成8192除以2出来图像了 。。。。什么情况
举报

往事只能回首

2012-6-14 15:30:52
Fs/2为折叠频率,IIR数字滤波器的频谱分析范围为[0:Fs/2]
举报

陶醉了的猫

2012-6-14 15:31:55
引用: 善良的小包子 发表于 2012-6-14 15:29
fs本身存储的就是采样频率吧,为什么要定义新的采样频率Fs?

哪儿?第二行的?
举报

陶醉了的猫

2012-6-14 15:33:05
引用: 往事只能回首 发表于 2012-6-14 15:30
Fs/2为折叠频率,IIR数字滤波器的频谱分析范围为[0:Fs/2]

高通低通都这样?为什么换成高通的时候就出错误了呢。。。。低通时候Fs/2没问题。高通就报错了
举报

往事只能回首

2012-6-14 15:33:43
IIR是数字滤波器,你现在设计的是模拟滤波器,还没有转换为数字滤波器呢,用双线性变换法或者是脉冲响应不变法转换一下
举报

h1654155199.5148

2012-6-14 15:34:34
第二行读文件的时候就已经给出了fs作为采样频率,你在第5行又定义了新的采样频率Fs,不过这个问题不足以导致你图中的情况,我猜测是你的滤波器要求过高了,改变下滤波器各参数试一试
举报

更多回帖

发帖
×
20
完善资料,
赚取积分