Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-03-19, 17:05   #1
lvshouben
初级会员
 
注册日期: 2008-03-19
年龄: 39
帖子: 2
声望力: 0
lvshouben 正向着好的方向发展
默认 【求助】FIR 低通滤波器 窗口设计法 程序

哪位大侠能提供小弟关于FIR低通滤波器的完整程序 不胜感激
PS: 使用的是哈明窗 和 凯泽窗

!!!!!!
lvshouben 当前离线   回复时引用此帖
旧 2008-03-19, 17:56   #2
foxstar
初级会员
 
注册日期: 2007-05-27
帖子: 18
声望力: 18
foxstar 正向着好的方向发展
默认

仅供参考哈:
fsample=50000; %采样频率
fc=10000; %截止频率
wc=2*fc/fsample;
window=hamming(11);
b=fir1(10,wc,window);
freqz(b);
foxstar 当前离线   回复时引用此帖
旧 2008-03-20, 15:45   #3
lvshouben
初级会员
 
注册日期: 2008-03-19
年龄: 39
帖子: 2
声望力: 0
lvshouben 正向着好的方向发展
默认

引用:
作者: foxstar 查看帖子
仅供参考哈:
fsample=50000; %采样频率
fc=10000; %截止频率
wc=2*fc/fsample;
window=hamming(11);
b=fir1(10,wc,window);
freqz(b);
谢谢 可是
大虾绘图的那段程序逆。。。
lvshouben 当前离线   回复时引用此帖
旧 2008-03-22, 13:10   #4
xyz20070912
普通会员
 
注册日期: 2008-02-26
年龄: 41
帖子: 71
声望力: 24
xyz20070912 即将成为的新星xyz20070912 即将成为的新星xyz20070912 即将成为的新星
默认 曾经在网上看到的一个,供你参考

%有四种窗口类型供选择
b=1;
close all;
i=0;
while(b);
temp=menu('选择窗函数长度N','N=10','N=15','N=20','N=25','N=30','N=33','N=35','N=40','N=45','N=50','N=55','N=60','N=64');
menu1=[10,15,20,25,30,33,35,40,45,50,55,60,64];
N=menu1(temp);
temp=menu('选择逼近理想低通滤波器截止频率Wc','Wc=pi/4','Wc=pi/2','Wc=3*pi/4','Wc=pi','Wc=0.5','Wc=1.0','Wc=1.5','Wc=2.0','Wc=2.5','Wc=3.0');
menu2=[pi/4,pi/2,3*pi/4,pi,0.5,1,1.5,2,2.5,3];
w=menu2(temp);
n=[0N-1)];
hd=ideal(w,N); %得到理想低通滤波器
k=menu('请选择窗口类型:','boxcar','hamming','hanning','blackman');
if k==1
B=boxcar(N);
string=['Boxcar','N=',num2str(N)];
else if k==2
B=hamming(N);
string=['Hamming','N=',num2str(N)];
else if k==3
B=hanning(N);
string=['Hanning','N=',num2str(N)];
else if k==4
B=blackman(N);
string=['Blackman','N=',num2str(N)];
end
end
end
end
h=hd.*(B)'; %得到FIR数字滤波器
[H,m]=freqz(h,[1],1024,'whole'); %求其频率响应
mag=abs(H); %得到幅值
db=20*log10((mag+eps)/max(mag));
pha=angle(H); %得到相位
i=i+1;
figure(i)
subplot(2,2,1);
n=0:N-1;
stem(n,h,'.');
axis([0,N-1,-0.1,0.3]);
hold on;
n=0:N-1;
x=zeros(N);
plot(n,x,'-');
xlabel('n');
ylabel('h(n)');
title('实际低通滤波器的h(n)');
text((0.3*N),0.27,string);
hold off;
subplot(2,2,2);
plot(m/pi,db);
axis([0,1,-100,0]);
xlabel('w/pi');
ylabel('dB');
title('衰减特性(dB)');
grid;
subplot(2,2,3);
plot(m,pha);
hold on;
n=0:7;
x=zeros(8);
plot(n,x,'-');
title('相频特性');
xlabel('频率(rad)');
ylabel('相位(rad)');
axis([0,3.15,-4,4]);
subplot(2,2,4);
plot(m,mag);
title('频率特性');
xlabel('频率W(rad)');
ylabel('幅值');
axis([0,3.15,0,1.5]);
text(0.9,1.2,string);

b=menu('Do You want To Continue ?','Yes','No');
if b==2
b=0;
end
end
temp=menu('Close All Figure ?','Yes','No');
if temp==1
close all
end
xyz20070912 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]以知方程组,求解(好难,求助) 大哥救命啊 MATLAB论坛 0 2008-04-18 20:37
matlab编写板卡驱动 emirlee MATLAB论坛 2 2008-04-18 09:16
【求助】如何产生随机解 zhailiangjun MATLAB论坛 2 2008-03-07 16:12
【求助】一个简单的作图问题 hinac MATLAB论坛 3 2007-07-10 11:22
【求助】如何在一个FRAMEL里面显示图象(根据frame的大小) sabby MATLAB论坛 0 2007-07-09 17:32


所有时间均为北京时间。现在的时间是 07:39


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.