声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2324|回复: 2

[综合讨论] 海明窗该怎么定义子函数?

[复制链接]
发表于 2009-5-26 07:46 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有账号?我要加入

x
wp=0.2*pi;ws=0.3*pi;
%
输入设计指标
tr_width=ws-wp;
%
计算过渡带的宽度
M=ceil(6.6*pi/ tr_width)+1; %由海明窗的过渡带宽度选择合适的阶数
n=[0:1:M-1]; wc=(ws+wp)/2;
%
理想低通的截止频率(取平均值)
hd=ideal_lp(wc,M);
%
理想低通滤波器冲激响应
w_ham=(haming(M)) '; h=hd .* w_ham;
%
给理想低通加海明窗
[db,mag,pha,grd,w]= freqz_m(h,[1]); %求出幅频响应
delta_w=2*pi/1000; Rp=-(min(db(1:1:wp/delta_w+1)));
%
检验通带波动
As=-round(max(db(ws/delta_w+1:1:501)));%检验最小阻带衰减
% plots(绘图)
subplot(2,2,1),stem(n,hd); title(Ideal Impulse Response');
axis(0 M-1 -0.1 0.3);xlabel('n');ylabel('hd(n)');
subplot(2,2,2);stem(n,w_ham);title('Hamming Window') ;
axis([0 M-1 0.1 1]); xlabel('n');ylabel('w(n)');
subplot(2,2,3);stem(n,h); title('Actual Impulse Response');
axis([0 M-1 -0.1 0.3]); xlabel('n');ylabel('h(n)');
subplot(2,2,4);plot(w/pi,db);title('Magnitude Response in dB');grid
axis([0 1 -100 10]); xlabel('frequency in pi units'); ylabel('Decibels');

function hd=ideal_lp(wc, M);
%Ideal Lowpass filter computation
alpha=(M-1)/2; n=[0:(M-1)];
m=n-alpha+eps; hd=sin(wc*m)./(pi*m);


[ 本帖最后由 ChaChing 于 2009-5-27 14:43 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-5-27 10:48 | 显示全部楼层

请问大大们:这个程序的海明窗该怎么定义子函数?

选择合适的窗函数设计一个FIR数字低通滤波器,要求:通带截至频率为w =0.2 ,R =0.25dB;阻带截至频率为w =0.3 ,A =50dB。求脉冲响应并描绘一张滤波器的频率响应图。


MATLAB
程序如下:
wp=0.2*pi;ws=0.3*pi;
%
输入设计指标
tr_width=ws-wp;
%
计算过渡带的宽度
M=ceil(6.6*pi/ tr_width)+1; %由海明窗的过渡带宽度选择合适的阶数
n=[0:1:M-1]; wc=(ws+wp)/2;
%
理想低通的截止频率(取平均值)
hd=ideal_lp(wc,M);
%
理想低通滤波器冲激响应
w_ham=(hamming(M))'; h=hd .* w_ham;
%
给理想低通加海明窗
[db,mag,pha,grd,w]= freqz_m(h,[1]);
%
求出幅频响应
delta_w=2*pi/1000; Rp=-(min(db(1:1:wp/delta_w+1)));
%
检验通带波动
As=-round(max(db(ws/delta_w+1:1:501)));%检验最小阻带衰减
% plots(绘图)
subplot(2,2,1),stem(n,hd); title(Ideal Impulse Response');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd(n)');
subplot(2,2,2);stem(n,w_ham);title('Hamming Window') ;
axis([0 M-1 0.1 1]); xlabel('n');ylabel('w(n)');
subplot(2,2,3);stem(n,h); title('Actual Impulse Response');
axis([0 M-1 -0.1 0.3]); xlabel('n');ylabel('h(n)');
subplot(2,2,4);plot(w/pi,db);title('Magnitude Response in dB');grid
axis([0 1 -100 10]); xlabel('frequency in pi units'); ylabel('Decibels');
其中自定义的两个函数

1)函数freqz_m,输出信号的幅频特性和相频特性,db为分贝幅频响应,mag为实际幅度响应,pha为相频特性。
function[db,mag,pha,w]=freqz_m(b,a);
[H,w]=freqz(b,a,1000,'whole');
H=(H(1:1:501))'; w=(w(1:1:501))';
mag=abs(H); db=20*log10((mag+eps)/max(mag)); pha=angle(H);

2)函数ideal_lp
function hd = ideal_lp(wc,M);
% Ideal LowPass filter computation
% --------------------------------
% [hd] = ideal_lp(wc,M)
%  hd = ideal impulse response between 0 to M-1
%  wc = cutoff frequency in radians
%   M = length of the ideal filter
alpha = (M-1)/2; n = [0:1:(M-1)];
m = n - alpha + eps; hd = sin(wc*m) ./ (pi*m);

请问大大们:这个程序的海明窗该怎么定义子函数?

[ 本帖最后由 ChaChing 于 2009-5-27 14:46 编辑 ]
发表于 2009-5-27 14:45 | 显示全部楼层
建议楼主看下本版规则!
标题要明确! 相同或相近内容的话题,请勿开新贴,一帖发完
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-11 19:49 , Processed in 0.074779 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表