在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4391|回复: 3

怎么求脉冲响应对应的幅频图呢?

[复制链接]
发表于 2012-5-24 22:45:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 eecsseudl 于 2013-4-29 09:56 编辑

给低通滤波器一个冲激信号,可得到对应的冲激响应,能不能对这个冲激响应作fft,求得对应的幅频图呢?但作出来的低频段不是0dB呀。。。






发表于 2012-8-12 11:39:46 | 显示全部楼层
可以这么做。
0dm的问题是由于量化引起的。除以系数之和,就可以得到0db的肤频图了
发表于 2012-8-20 15:43:59 | 显示全部楼层
回复 2# gracefulhe


    我也一直想搞明白这个问题,下面是我写的一个简单程序,第一段就是设计一个FIR滤波器了,
第二段就是将一个脉冲送入滤波器后,得出的数据做FFT,画幅频图,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fs = 1000;
Wp = 300;         
Ws = 400;           
Rp = 3;            
Rs = 60;            
fcuts = [Wp Ws];
devs = [(10^(Rp/20)-1)/(10^(Rp/20)+1) 10^(-Rs/20)];
mags = [1 0];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fs);
b = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');
[h,f] = freqz(b,1,2^10,fs);
subplot(2,1,1);
plot(f,20*log10(abs(h)));
title('FIR Frequency Response/dB');
grid;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N = 2^10;
x = [1,zeros(1,N-1)];
y = filter(b,1,x);
Xk = fft(y,N);
mag = abs(Xk)*2/38; % 因为滤波器的阶数为38,故输出信号前38个数是有效值,后面的数都是0,为得到实际的幅度,这里分母为38
f = [0:N-1]*fs/N;
subplot(2,1,2);
plot(f(1:N/2),20*log10(mag(1:N/2)));
grid;
从下图来看,输出信号的幅频图和滤波器频率响应形状一样,但是纵坐标明显不一样,到底我这是那里出了问题呢?
QQ截图20120820153934.jpg
 楼主| 发表于 2012-8-20 20:50:43 | 显示全部楼层
回复 3# whyyxn
mag = abs(Xk)*2/38;你这应该改成mag = abs(Xk);不需要2/38了,很多时侯我们作fft后再乘2/N(矩形窗为N,非补零后的N),是为了显示该频率在时域表达式的幅值,比如0.34*sin(2*pi*f0*t),你这表达式是求得为0.34,表示信号傅利叶分解在频率点的幅值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-26 17:44 , Processed in 0.023866 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表