我是靠谱客的博主 孝顺雪糕,最近开发中收集的这篇文章主要介绍c语言实现窗函数法设计,实验四 用窗函数法设计FIR数字滤波器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

实验目的:

实验目的:

1、熟悉线性相位FIR滤波器的幅频特性和相频特性;

2、加深对窗函数法设计FIR数字滤波器的基本原理的理解;

3、了解Matlab有关窗函数法设计的子函数以及各种不同窗函数对滤波器性能的影响。

实验原理:

根据上式中的正、负号和长度N取为奇数

或偶数又将线性相位FIR滤波器分成四类。 要 根据所设计的滤波特性正确选择其中一类。

对于理想的数字低通滤波器频率响应,有下列子程序实现(程序名为ideallp.m):

function hd=ideallp(wc,N)

tao=(N-1)/2;

n=[0:(N-1)];

m=n-tao+eps;

hd=sin(wc*m)./(pi*m);

实例:已知某FIR数字低通滤波器截止频率wc=0.2π,滤波器长度N=11,分别用矩形窗、汉 宁窗和布莱克曼窗来设计该滤波器,绘制幅频响应曲线和损耗函数曲线。

wc=0.2*pi; N=11;

hd= ideallp(wc,N); % 用wc=0.2*pi的理想低通作为逼近滤波器

wd1=boxcar(N)' ; b1=hd.*wd1; % 用矩形窗设计:

wd2=hanning(N)'; b2=hd.*wd2; % 用汉宁窗设计:

wd3=blackman(N)' ;b3=hd.*wd3; % 用布莱克曼窗设计:

[H1,w]=freqz(b1,1); % 用矩形窗设计的频率特性

[H2,w]=freqz(b2,1); % 用汉宁窗设计的频率特性

[H3,w]=freqz(b3,1); % 用布莱克曼窗设计的频率特性

subplot(1,2,1), plot(w,abs(H1),w,abs(H2),':',w,abs(H3),'-.');% 绘幅特性

legend('矩形窗','汉宁窗','布莱克曼窗')

xlabel('omega'),ylabel('|H(omega)|')

subplot(1,2,2), % 绘分贝幅特性

plot(w,20*log10(abs(H1)),w,20*log10(abs(H2)),':',w,20*log10(abs(H3)),'-.');

legend('矩形窗','汉宁窗','布莱克曼窗')

xlabel('omega'),ylabel('dB')

————————————————

freqz()函数

MATLAB提供了专门用于求离散系统频响特性的函数freqz(),调用freqz()的格式有以下几种:

(1)[H,w]=freqz(B,A,N); %N默认值为512

(2)[H,w]=freqz(B,A,N,‘whole’);

(3)[H,w]=freqz(B,A,[自定义区间]);

上式中B和A分别对应离散系统的系统函数H(z)的分子、分母多项式的系数向量:

B=[b1,b2,...]; A=[a1,a2,...];

返回量H则包含了离散系统对应区间内N(N为正整数)个频率等分点的频率响应,w为N个频率等分点的值。

(1)式调用默认区间 0:pi

(2)式调用主值区间 -pi:pi

(3)式自定义区间,如[0:2pi/n:2pi]

最后利用abs()和angle()函数及plot()函数,即可绘制出系统在频率区间的频响曲线。

————————————————

原文链接:https://blog.csdn.net/machinelearning_er/article/details/79444352

最后

以上就是孝顺雪糕为你收集整理的c语言实现窗函数法设计,实验四 用窗函数法设计FIR数字滤波器的全部内容,希望文章能够帮你解决c语言实现窗函数法设计,实验四 用窗函数法设计FIR数字滤波器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部