数字信号处理FIR滤波器实验

article/2025/10/9 5:10:13

目录

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

二、程序源代码以及图像 

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


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

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

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

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

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

ceil函数:向上取矩阵元素的整数值,等价于\left \lceil N \right \rceil

 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;

因为H(z) = \frac{Y(z)}{X(z)} = \sum_{k = 0}^{M} b_{k}z^{-k}\\

所以h(n)= \sum_{k = 0}^{M} b_{k}\delta (n-k).

此处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。w_{n}=\frac{w_{c}}{\pi}

二、程序源代码以及图像 

%习题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]);gridsubplot(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);

 

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

未完待续......


http://chatgpt.dhexx.cn/article/cnY5l0Pr.shtml

相关文章

绘制系统响应函数的频率响应曲线

在z变换中,对于系统响应函数H(z) 绘制频率响应曲线 注意点: 绘制零极点图的函数 zplane(B,A);%%B为分母的系数矩阵 A为分子的系数矩阵 第一个数为z^0 第二个数为z^-1的系数 以此类推 freqz(B,A) %%计算频率响应H(e^jw) angle(H) %% 绘制相频响应 …

freqz()计算M点滑动平均滤波器的频率响应

函数说明(建议参考官方文档) freqz(h,w)可以用来求指定的单位脉冲响应向量 h 在一组给定频率点 w 上的频率响应值由这些频率响应值,可以用函数 real 和 imag 计算实部和虚部,函数 abs 和 angle 计算幅度和相位M 点滑动平均滤波器…

matlab freqz函数使用

Matlab freqz函数使用 (2012-10-22 13:42:03) 转载▼ 标签: 杂谈 freqz函数计算线性系统的频率响应,包括幅频响应和相频响应,基本输入为线性系统的AMMA模型系数向量,一个典型的AMMA模型为 % jw -jw -jmw % jw B(e) …

MATLAB——IIR数字滤波器的设计

1.基础知识 1.1、数字滤波器设计的基本步骤 我们知道模拟滤波器的设计是数字滤波器的设计的基础。在学习数字信号处理的过程中,IIR数字滤波器的设计的步骤是 (1)确定采样间隔Ts或者采样频率fs。 (2)根据模拟频率和数字…

Matlab的freqz()函数和窗函数法fir1()一起使用

窗函数法设计FIRDF使用Matlab的fir1()函数十分方便,DSP课堂上已经讲过,此处不再赘述。关心的是: 使用 hn fir1(M, wc);%M为滤波器阶数M,长度N&…

matlab filter freqz

1.滤波函数filter 利用滤波器H(Z)b/a,对X滤波 ba为向量 滤波器传输函数H(Z)的分子分母:b,a 利用b,a表征H即滤波器 2.freqz Hb/a,由b和a提取H和数字角频率w 2.1[h,w] freqz(b,a,n) n默认512&#xff0…

matlab:<三>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分别对应离散系统…

freqz()函数

2、离散系统的频率特性 同连续系统的系统函数H(s)类似,离散系统的系统函数H(z)也反映了系统本身固有的特性。对于离散系统来说,如果把其系统函数H(z)中的复变量z换成,那么所得的函数就是此离散系统的频率响应特性,即离散时间系统的频率响应为: 其中, 称为离散系统的幅频…

信号与系统 实验四:信号与系统复频域分析(2 学时)

注明:这是学校专业课实验,利用网站做一个学习和记录。有错的地方希望好心人指点一下。 一、实验目的 1.学会用 MATLAB 进行部分分式展开; 2.学会用 MATLAB 分析 LTI 系统的特性; 3.学会用 MATLAB 进行 Laplace 正、反变换。…

MATLAB中freqz函数的用法

本文引用自乱七八糟 《MATLAB中freqz函数的用法》 FREQZ 是计算数字滤波器的频率响应的函数 [H,W] FREQZ(B,A,N)returns the N-point complex frequency response vector H and the N-point frequency vector W in radians/sample of the filter: 函数的输出:a.滤波…

fft和freqz的区别

http://www.ilovematlab.cn/thread-245794-1-1.html 最近在研究matlab画频谱图,在查找资料过程,在matlab中文论坛中看到一篇帖子,感觉比较有用,简单整理了一下。 一、FFT函数 假设原始信号为x,则fft_xabs(fft(x))得…

MATLAB R2021a无法识别freqz_m

MATLAB R2021a中能识别的函数是freqz,但是无法识别freqz_m函数。 方法一: 若只想了解图像趋势,可以直接用freqz函数替代freqz_m函数,因为freqz_m函数可以有多个输出,但是freqz函数只有两个,所以可以分次进…

【matlab】freqz函数的使用(二)

freqz函数计算线性系统的频率响应,包括幅频响应和相频响应,基本输入为线性系统的AMMA模型系数向量,一个典型的AMMA模型为 % jw -jw -jmw % jw B(e) b(1) b(2)e .... b(m1)e % H(e) ---- -----------------------…

freqz()

实函数的傅里叶变换的幅度谱是偶函数,其相位谱为奇函数。这一特性在信号分析中得到广泛应用。 离散系统频响特性的函数freqz() [H,W ] freqz(b,a,n)返回量H则包含了离散系统频响在 0~pi范围内N个频率等分点…

MATLAB函数freqz的使用

(一)、它是数字滤波器的频率响应(包括幅频响应和相频响应) (二)、主要的形式: [h,w] freqz(b,a,n)[h,w] freqz(sos,n)[h,w] freqz(d,n)[h,w] freqz(___,n,whole)[h,f] freqz(___,n,fs)[h,f] freqz(___,n,whole…

频率响应说明

目录 数字域 模拟域 数字域 freqz 使用基于 FFT 的算法来计算数字滤波器的 Z 变换频率响应。具体来说,语句 [h,w] freqz(b,a,p) 返回数字滤波器的包含 p 个点的复频率响应 在其最简单的形式中,freqz 接受滤波器系数向量 b 和 a 以及整数 p&#xf…

详解MATLAB之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分别对应离散系统的系统函…

Matlab中freqz函数使用

目录 语法 输入参数 输出参数 说明 示例 传递函数的频率响应 二阶部分的频率响应 FIR滤波器的频率响应 FIR带通滤波器的频率响应 freqz函数是求解数字滤波器的频率响应。 语法 [h,w] freqz(b,a,n)[h,w] freqz(sos,n)[h,w] freqz(d,n)[h,w] freqz(___,n,whole)[h…

计算机网络实验三 rdt协议

实验目的 熟悉各种不同 rdt 协议的运行环境,对照教材理解给出的 rdt 协议源码,理解并掌握不同链路特性对 rdt 协议性能的影响。比较不同 rdt 协议适应的运行环境。 准备阶段 进入Linux操作系统,将实验文件复制到Ubuntu内,观察到文件内包含Makefile文件,于是在命令行内将…

慧荣SM2262EN跑RDT教程

本次教程使用材料: 板子:2262EN公版4贴 颗粒:英特尔 PF29F04T2AOCTJ1 *4(ID:89,C4,18,32,A2,00)单颗512G 8CE B27A制程 缓存:镁光D9STQ *2(单颗512M 16bit1G的DDR3) &…