我是靠谱客的博主 狂野墨镜,最近开发中收集的这篇文章主要介绍数字信号处理FIR滤波器实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一、题目介绍以及函数准备

二、程序源代码以及图像 

 三、思考 为何线性相位是一个来回往返的折线形?


一、题目介绍以及函数准备

要求设计一个线性相位FIR数字低通滤波器来对模拟信号进行滤波,

技术要求为fp=4kHz,fst=4.5kHz,

As=60dB,抽样频率fs=20kHz。

选择合适的窗函数及窗长度,求h(n)并画出幅度响应曲线(dB)及相位响应曲线。

ceil函数:向上取矩阵元素的整数值,等价于

 freqz_m函数:

[db,mag,pha,grd,w] = freqz_m(b,a);

db = [0 到pi弧度]区间内的相对振幅(db)

mag = [0 到pi弧度]区间内的绝对振幅

pha = [0 到pi弧度]区间内的相位响应

grd = [0 到pi弧度]区间内的群迟延

w = [0 到pi弧度]区间内的501个频率样本向量

b = Ha(z)的分子多项式系数(对FIR b=h)

a = Ha(z)的分母多项式系数(对 FIR: a=[1])

这里可以多加一句,为何b=h;

因为

所以.

此处LATEX代码也很有趣

begin{split}
&because H(z)
=
frac{Y(z)}{X(z)}
=
sum_{k
=
0}^{M} b_{k}z^{-k}\
&therefore h(n)= sum_{k
=
0}^{M} b_{k}delta (n-k)
end{split}

fir1函数:Window-based FIR filter design

本题的用法是h=fir1(M,wn,blackman(N));

M=N-1;wn — 截止频率, 0≤wn≤1。

二、程序源代码以及图像 

%习题8.7
% 要求设计一个线性相位FIR数字低通滤波器来对模拟信号进行滤波,
% 技术要求为fp=4kHz,fst=4.5kHz,
% As=60dB,抽样频率fs=20kHz。
% 选择合适的窗函数及窗长度,求h(n)并画出幅度响应曲线(dB)及相位响应曲线。
clear all;
clc;
Fs=20*10^3;fp=4000;fst=4500;
wp=2*pi*fp/Fs;ws=2*pi*fst/Fs;Rp=0.5; As=60;
wc=(wp+ws)/2;
%截止频率
wn=wc/pi;
deltaw=ws-wp;
N=ceil(11*pi/deltaw);M=N-1;
%求阶次N, 将 X 的每个元素四舍五入到大于或等于该元素的最接近整数
%N=220,表明需要取220个点才能满足阻带最小衰减的条件
n=[0:N-1];
h=fir1(M,wn,blackman(N));%wn — 截止频率, 0≤wn≤1 M
— 滤波器阶数 得到加了N阶Blackman窗函数之后的h(n)响应
%w = blackman(L) returns an L-point symmetric Blackman window.
[db,mag,pha,grd,w]=freqz_m(h,[1]);
%具体实现见7.6题解答过程
% [db,mag,pha,grd,w] = freqz_m(b,a);
%
db = [0 到pi弧度]区间内的相对振幅(db)
%
mag = [0 到pi弧度]区间内的绝对振幅
%
pha = [0 到pi弧度]区间内的相位响应
%
grd = [0 到pi弧度]区间内的群迟延
%
w =
[0 到pi弧度]区间内的501个频率样本向量
%
b = Ha(z)的分子多项式系数(对FIR b=h)
%
a = Ha(z)的分母多项式系数(对 FIR: a=[1])
dw=2*pi/1000;
subplot(311)
%作图
stem(n,h,'.','linewidth',2); title('布莱克曼窗');xlabel('n'); ylabel('w(n)');axis([0,N,0,0.45]);grid
subplot(312)
plot(w/pi,db,'linewidth',2);
title('幅度响应(dB)');xlabel('omega/pi'); ylabel('20log|H(e^j^omega)|(dB)');axis([0,1,-120,10]);grid
set(gca,'xtickmode','manual','xtick',[0,0.2,0.4,0.45,0.7,1.0]);%人为设置坐标点
set(gca,'ytickmode','manual','ytick',[-120,-90,-60,0,10]);
subplot(313)
plot(w/pi,pha,'linewidth',2); axis([0,1,-4,4]);grid
title('相位响应');xlabel('omega/pi'); ylabel('arg20log[H(e^j^omega)]');
%%
% w = blackman(10);
% stem([1:10],w);

 

 三、思考 为何线性相位是一个来回往返的折线形?

未完待续......

最后

以上就是狂野墨镜为你收集整理的数字信号处理FIR滤波器实验的全部内容,希望文章能够帮你解决数字信号处理FIR滤波器实验所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部