数字域

freqz 使用基于 FFT 的算法来计算数字滤波器的 Z 变换频率响应。具体来说,语句

[h,w] = freqz(b,a,p)

返回数字滤波器的包含 p 个点的复频率响应 H(ejω)。

H(ejω)=b(1)+b(2)e−jω+...+b(n+1)e−jωna(1)+a(2)e−jω+...+a(m+1)e−jωm

在其最简单的形式中,freqz 接受滤波器系数向量 b 和 a 以及整数 p(该整数指定计算频率响应所用的点的数量)。freqz 以弧度/秒为单位返回向量 h 中的复频率响应,以及向量 w 中的实际频率点。

freqz 可以接受其他参数,例如采样频率或由任意数量的频率点构成的向量。以下示例求 12 阶 Chebyshev I 类滤波器的 256 点频率响应。调用 freqz 将采样频率 fs 指定为 1000 Hz:

[b,a] = cheby1(12,0.5,200/500);

[h,f] = freqz(b,a,256,1000);

由于参数列表包含采样频率,因此 freqz 返回向量 f,其中包含在频率响应计算中使用的 0 到 fs/2 之间的 256 个频率点。

注意

此工具箱使用单位频率是 Nyquist 频率的约定,定义为采样频率的一半。所有基本滤波器设计函数的截止频率参数均用 Nyquist 频率进行归一化处理。例如,对于采样频率为 1000 Hz 的系统,300 Hz 等于 300/500 = 0.6。要将归一化频率转换为围绕单位圆的角频率,请乘以 π。要将归一化频转换回赫兹,请乘以采样频率的一半。

如果您在不带输出参数的情况下调用 freqz,它会同时绘制幅值对频率的图和相位对频率的图。例如,截止频率为 400 Hz、基于 2000 Hz 的采样频率的九阶 Butterworth 低通滤波器是:

[b,a] = butter(9,400/1000);

要计算此滤波器的 256 点复频率响应,并使用 freqz 绘制幅值和相位,请使用

freqz(b,a,256,2000)

freqz 也可以接受由任意数量的频率点构成的向量,以用于频率响应计算。例如,

w = linspace(0,pi);

h = freqz(b,a,w);

计算由向量 b 和 a 定义的滤波器在 w 的频率点处的复频率响应。频率点可以是 0 到 2π 范围内的值。要指定从零到采样频率的频率向量,请在参数列表中同时包括频率向量和采样频率值。

下列示例说明如何计算和显示数字频率响应。传递函数的频率响应

计算并显示由以下传递函数描述的三阶 IIR 低通滤波器的幅值响应:

H(z)=0.05634(1+z-1)(1-1.0166z-1+z-2)(1-0.683z-1)(1-1.4461z-1+0.7957z-2).

将分子和分母表示为多项式卷积。求分布在整个单位圆上的 2001 个点上的频率响应。

b0 = 0.05634;

b1 = [1 1];

b2 = [1 -1.0166 1];

a1 = [1 -0.683];

a2 = [1 -1.4461 0.7957];

b = b0*conv(b1,b2);

a = conv(a1,a2);

[h,w] = freqz(b,a,'whole',2001);

绘制以分贝表示的幅值响应。

plot(w/pi,20*log10(abs(h)))

ax = gca;

ax.YLim = [-100 20];

ax.XTick = 0:.5:2;

xlabel('Normalized Frequency (\times\pi rad/sample)')

ylabel('Magnitude (dB)')

FIR 带通滤波器的频率响应

设计一个 FIR 带通滤波器,通带在 0.35π 和 0.8π 弧度/采样点之间,波纹为 3 dB。第一个阻带是从 0 到 0.1π 弧度/采样点,衰减为 40 dB。第二个阻带是从 0.9π 弧度/采样点到 Nyquist 频率,衰减为 30 dB。计算频率响应。同时以线性单位和分贝绘制其幅值。突出显示通带。

sf1 = 0.1;

pf1 = 0.35;

pf2 = 0.8;

sf2 = 0.9;

pb = linspace(pf1,pf2,1e3)*pi;

bp = designfilt('bandpassfir', ...

'StopbandAttenuation1',40, 'StopbandFrequency1',sf1,...

'PassbandFrequency1',pf1,'PassbandRipple',3,'PassbandFrequency2',pf2, ...

'StopbandFrequency2',sf2,'StopbandAttenuation2',30);

[h,w] = freqz(bp,1024);

hpb = freqz(bp,pb);

subplot(2,1,1)

plot(w/pi,abs(h),pb/pi,abs(hpb),'.-')

axis([0 1 -1 2])

legend('Response','Passband','Location','South')

ylabel('Magnitude')

subplot(2,1,2)

plot(w/pi,db(h),pb/pi,db(hpb),'.-')

axis([0 1 -60 10])

xlabel('Normalized Frequency (\times\pi rad/sample)')

ylabel('Magnitude (dB)')

高通滤波器的幅值响应

设计一个三阶高通 Butterworth 滤波器,它具有 0.5π 弧度/采样点的归一化 3-dB 频率。计算它的频率响应。用分贝表示幅值响应,并对其绘图。

[b,a] = butter(3,0.5,'high');

[h,w] = freqz(b,a);

dB = mag2db(abs(h));

plot(w/pi,dB)

xlabel('\omega / \pi')

ylabel('Magnitude (dB)')

ylim([-82 5])

使用 fvtool 重复计算。

fvtool(b,a)

matlab 求信号频率响应,频率响应 - MATLAB Simulink - MathWorks 中国相关推荐

  1. matlab数值拟合r2_用MATLAB求RMSE怎么用MATLAB计算均方误差

    用MATLAB求RMSE 怎么用MATLAB计算均方误差 www.zhiqu.org     时间: 2020-12-07 function f=RMSE(h1,h2) %RMSE return RM ...

  2. matlab里面幂指数怎么写,幂和指数 - MATLAB Simulink - MathWorks 中国

    正整数幂 如果 A 为方阵并且 p 为正整数,则 A^p 实际上是将 A 乘以其自身 p-1 次.例如: A = [1 1 1 1 2 3 1 3 6]; A^2 ans = 3×3 3 6 10 6 ...

  3. matlab求离散系统,离散系统的MATLAB的实现.doc

    离散系统的MATLAB的实现 离散系统的MATLAB实现 一.设计目的 通过该设计,理解系统的单位抽样响应,频率响应及零极点增益的概念及意义. 课程设计环境 计算机.MATLAB软件 设计内容及其主要 ...

  4. matlab编写信号采集程序,MATLAB语音信号采集课程设计

    MATLAB语音信号采集课程设计 数字信号处理 课程设计报告 课设题目:语音信号的采集与处理 学 院:信息科学与工程学院 专 业:电子信息工程 班 级:电子0903 姓 名: 学 号: 指导教师:张海 ...

  5. 基于matlab的信号去噪,基于matlab的信号去噪研究.doc

    基于matlab的信号去噪研究.doc 学 生 毕 业 设 计(论 文) 课题名称 基于 MATLAB 的信号去噪研究 姓 名 陈文 学 号 051220206 院 系 物电系 专 业 电子信息工程 ...

  6. matlab 求n 的和,MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的...

    点击查看MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的具体信息 答:myfactorial = @(n) factorial(n) myfactorial = @(n) pro ...

  7. 离散冲激函数matlab,表示信号系统的matlab函数工具箱.doc

    电孑科技丈学 实验报告 学生姓名:学号:指导教师: 一.实验室名称:信号与系统实验室 二.实验项目名称:表示信号.系统的matlab函数.工具箱 三.实验原理: 1?对于离散时间信号的加法与乘法,表达 ...

  8. 阶跃信号的matlab,单位阶跃信号的表示-matlab

    <单位阶跃信号的表示-matlab>由会员分享,可在线阅读,更多相关<单位阶跃信号的表示-matlab(5页珍藏版)>请在人人文库网上搜索. 1.单位阶跃信号单位阶跃信号的定义 ...

  9. matlab随机信号分析,基于MATLAB的随机信号分析方法.ppt

    <基于MATLAB的随机信号分析方法.ppt>由会员分享,可在线阅读,更多相关<基于MATLAB的随机信号分析方法.ppt(31页珍藏版)>请在人人文库网上搜索. 1.基于MA ...

  10. 信号与系统Matlab M6-2,信号与系统matlab实验与答案

    频率越高,图像更加密集. 用 MATLAB 产生音阶信号 1 2 3 4 5 6 7 1,并播放,抽样频率可设为 8000 Hz. 利用 MATLAB 产生信号 x1 t cost 和 x1 t co ...

最新文章

  1. java运行环境jdk的安装和环境变量的配置教程
  2. JavaMoney规范(JSR 354)与对应实现解读
  3. Codeforeces 954C Matrix Walk
  4. 轻松构建基于 Serverless 架构的弹性高可用音视频处理系统
  5. angular 接入 IdentityServer4
  6. matlab提示用户输入参数,调用函数显示输入参数不足
  7. SOA进入成熟应用阶段仍需时日
  8. 计算机办公软件中级考试题怎么做,计算机办公软件考试试题
  9. mzy git学习,禁用Fast forward的普通合并(六)
  10. 哥尼斯堡的“七桥问题” (25 分)
  11. uni-app开发APP和H5,分享功能
  12. 图片转视频python/ffmpeg
  13. java+vue的二维码生成,二维码上传服务器,二维码的压缩包下载
  14. execve系统调用_系统调用execve的入口sys_execve() | 学步园
  15. 有Go语言实战培训班吗?go语言开发环境搭建
  16. 基于javaweb的进销存管理系统(前后端分离+java+vue+springboot+ssm+mysql+redis)
  17. Aspose.OCR for Java Crack by Xacker
  18. JavaScript恶意代码
  19. h2database
  20. 2022电气试验考试试题及答案

热门文章

  1. css margin 塌陷 经典bug
  2. 投资的本质到底是什么?
  3. 如何在国外做好自然科学研究-2
  4. 微信公众号图文消息悄悄调整,注定10月12号是个不眠夜
  5. Bootstrap(一)
  6. 埃默里大学有计算机专业吗,埃默里大学计算机科学硕士排名第30(2020年TFE Times排名)...
  7. 人活一辈子到底为了啥?(人生苦短 我要学人工智能)一万年太久,只争朝夕。
  8. 虚拟手游服务器,自己搭建手机游戏服务器
  9. python可以制作大型游戏_python能做游戏吗-python能开发游戏吗
  10. 列宽一字符等于多少厘米_excel表格行高和列宽各是多少毫米或厘米啊?