matlab的一个低通滤波器问题 10

网上看了程序clc;clear;N=4096;%随机数长度fs=20000;%采样率20khzT=(N-1)/fs;%采样时间t=0:1/fs:T;x=randn(1,N... 网上看了程序
clc;
clear;
N=4096;%随机数长度
fs=20000;%采样率20khz
T=(N-1)/fs;%采样时间
t=0:1/fs:T;
x=randn(1,N);%产生一个白噪声

figure(1);
%截止频率1.1khz
wp=2*pi*1000/fs;ws=2*pi*1500/fs;Rp=1;As=30;
[n,wc]=buttord(wp,ws,Rp,As,'s');%计算滤波器的阶数和3dB截止频率
fc=wc/2*pi; %截止频率
[B,A]=butter(n,wc,'s');%计算滤波器系统函数分子分母多项式
fk=0:8000;wk=2*pi*fk/fs;
Hk=freqs(B,A,wk);
plot(fk/1000,20*log10(abs(Hk)));
grid on,xlabel('频率(kHz)'),ylabel('幅度(dB)')
title('巴特沃斯模拟滤波器')
axis([0,4,-35,5])
y=filter(B,A,x);

figure(3)
y3=fft(y,N);
y3=abs(y3)/N;
y3_x=fs/2*linspace(0,1,N/2);
plot(y3_x,2*y3(1:N/2));
title('频谱图');grid on;
xlabel('频率/Hz');
但是出来结果不对啊
展开
 我来答
百度网友d53a7be18
2015-10-24 · 超过12用户采纳过TA的回答
知道答主
回答量:17
采纳率:0%
帮助的人:25.5万
展开全部

你这个问题问的很好,这里涉及到一个模拟滤波器和数字滤波器之间的转换问题。因为你设计的巴特沃斯滤波器是模拟滤波器,你用来滤波的函数filter是数字滤波器函数,不知道说道这里你明白了没有。最简单的该法就是在你‘y=filter(B,A,x);’这句话之前加上‘[B,A] = impinvar(B,A);’即利用脉冲响应不变法,现将你的模拟滤波器转成数字滤波器,然后在进行后续的数字滤波器处理,这样你出来的频谱就对了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式