永发信息网

MATLAB基于汉宁窗的FIR的低通滤波器的源代码及注释

答案:2  悬赏:50  手机版
解决时间 2021-11-29 16:01
  • 提问者网友:杀生予夺
  • 2021-11-29 00:14
MATLAB基于汉宁窗的FIR的低通滤波器的源代码及注释
最佳答案
  • 五星知识达人网友:猎心人
  • 2021-11-29 00:41
clc;
clear;
N=15;
Wc=pi/4;
alpha=(N-1)/2;
n=0:1:(N-1);
m=n-alpha+eps;
hd=sin(Wc*m)./(pi*m);
Wn=(hamming(15));
h=hd.*Wn.';
figure(1),freqz(h,1);
figure(2),subplot(1,2,1),stem(n,abs(h));
subplot(1,2,2),stem(n,angle(h));
n=0:1:100;
x=cos(0.2*pi*n)+cos(0.8*pi*n)
subplot(312);
plot(n,x);
y=filter(h,1,x);
subplot(313);
plot(n,y);
grid on追问有没有注释啊?大侠!!!追答这就是最基本的了
设置一些参数 截止频率等,你自己到数字信号书上一找就找到了 写了很久了
全部回答
  • 1楼网友:末日狂欢
  • 2021-11-29 01:00
很常见的设计题目

给你一个例程,只需要改一改参数就行了

clear all;

f=[0 0.19 0.2 0.3 0.31 0.59 0.6 0.8 0.81 1];
% 给定频率轴分点;
m=[0 0 1 1 0 0 1 1 0 0];
% 给定在这些频率分点上理想的幅频响应
N1=30;
N2=90;
% 取两种不同的滤波器长度;
b1=fir2(N1,f,m);
b2=fir2(N2,f,m);
% 得到两个滤波器;

subplot(311);
stem(b1,'.');grid;
subplot(312);
stem(b2,'.');grid;

M=128;
[h1,w]=freqz(b1,1,M,1);
[h2,w]=freqz(b2,1,M,1);
subplot(313);
plot(w,abs(h1),'b-',w,abs(h2),'g-');grid;

其中,f是归依化以后的频率 通过数字滤波器的采样频率算出来,根据通带和阻带算好f和m就行了

看一看help,这个函数应该有窗函数的选择 默认情况下是汉明窗

希望能够帮到你
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯