Jacky's blog Jacky's blog
首页
  • 编码专题
  • 深入浅出 Vite
  • 深入浅出 babel
  • 快速上手API
  • 深入浅出 react
  • Node

    • code-notebook
  • 状态管理

    • redux
  • 前端工程化

    • Wepack
  • React源码

    • React源码
  • 组件库封装

    • 组件库
  • 开发工具

    • Vscode 插件
  • 项目展示
  • 案例中心 (opens new window)
  • First Project
  • 基础算法题
  • 链表题
  • 动态规划
  • 双指针
  • 递归
  • 数据结构
  • 前端学习计划 (opens new window)
  • 技术随笔
  • 转载文章
  • 包管理工具
  • 前端学习周报
  • VSCode插件
  • Promise 专题
  • 函数技巧
  • React 专题
  • 配置文件

    • TSCONFIG-配置 (opens new window)
    • NGINX-配置 (opens new window)
    • 正则规则查询手册 (opens new window)
    • Lint 配置 (opens new window)
  • 教程

    • GIT-教程
    • NPM SCRIPTS-工作流 (opens new window)
    • DOCKER-教程 (opens new window)
    • LERNA-教程 (opens new window)
    • GIT-常用操作整理 (opens new window)
  • VSCode

    • LAUNCH.JSON (opens new window)
  • 指令

    • NPM 指令 (opens new window)
    • NVM 指令 (opens new window)
    • Nginx 指令 (opens new window)
    • YARN 指令 (opens new window)
    • PNPM 指令 (opens new window)
  • 库

    • FS-EXTRA 库 (opens new window)
    • NODE 库-PATH (opens new window)
  • 永远的神

    • 魔法师卡颂-自顶向下学 React 源码 (opens new window)
    • 全栈潇晨 (opens new window)
    • 博客-程序员山月-Daily (opens new window)
    • 淘系前端:冴羽 (opens new window)
  • 系列文章

    • 《图解HTTP》 (opens new window)
    • 《ES6标准入门》 (opens new window)
    • 《现代JavaScript教程》 (opens new window)
    • 《深入浅出Webpack》 (opens new window)
    • VSCode 插件系列:小茗同学 (opens new window)
    • JEST 教程 (opens new window)
    • 前端精读周刊:各种精读系列 (opens new window)
    • 一文吃透系列 (opens new window)
    • 图解 REACT 原理 (opens new window)
  • 实用网站

    • MDN (opens new window)
    • CAN I USE (opens new window)
    • TYPESCRIPT-ESLint-RULES (opens new window)
    • ESLint-RULES (opens new window)
    • FRONT-END TREND (opens new window)
    • NPM TREND (opens new window)
    • 在线分析 Node 依赖 (opens new window)
    • FIND NPM (opens new window)
    • CODE PEN (opens new window)
    • 印记中文 (opens new window)
    • TOOL.LU (opens new window)
    • 阮一峰-网道 (opens new window)
    • DIGITAL OCEAN (opens new window)
    • DEVDOCS.IO (opens new window)
    • JOI (opens new window)
  • 算法

    • 小浩算法 (opens new window)
    • LABULADONG 的算法小抄 (opens new window)
    • 力扣 SOLUTION (opens new window)
    • HACKER RANK (opens new window)
    • 代码随想录 (opens new window)
  • 博客系列

    • 美团大佬 (opens new window)
    • 蜡笔小伟 (opens new window)
    • 优秀博客1 (opens new window)
    • 优秀博客2-umi (opens new window)
    • 优质博客 (opens new window)
  • CSS

    • CSS-EASING 库 (opens new window)
    • ROUGH.JS (opens new window)
    • CSS 网站收集
    • UNOCSS (opens new window)
  • 前端

    • PROMISE (opens new window)
    • UNDERSCORE.JS (opens new window)
    • study with BGM (opens new window)
    • nginx【B站视频】 (opens new window)
    • 机器学习
    • Js基础
  • 掘金已购课程

    • 前端自动化测试精讲 (opens new window)
    • 深入浅出 Vite (opens new window)
    • 现代 Web 布局 (opens new window)
    • 前端算法与数据结构 (opens new window)
    • 基于 Vite 的 SSG 框架开发实战 (opens new window)
    • SSR 实战:官网开发指南 (opens new window)
    • WebGL 入门与实践 (opens new window)
    • 玩转 CSS 的艺术之美 (opens new window)
    • 前端调试通关秘籍 (opens new window)
    • React 进阶实践指南 (opens new window)
    • TypeScript 全面进阶指南 (opens new window)
    • 前端缓存技术与方案解析 (opens new window)
    • npm scripts 前端工作流 (opens new window)
    • Webpack5 核心原理与应用实践 (opens new window)
  • 购物车

    • 张鑫旭-技术写作指南 (opens new window)
    • 深入剖析 Node.js 底层原理 (opens new window)
    • 前端开发者的现代 C++ 课 (opens new window)
    • 从前端到全栈 (opens new window)
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Jacky Wang

行到水穷处,坐看云起时
首页
  • 编码专题
  • 深入浅出 Vite
  • 深入浅出 babel
  • 快速上手API
  • 深入浅出 react
  • Node

    • code-notebook
  • 状态管理

    • redux
  • 前端工程化

    • Wepack
  • React源码

    • React源码
  • 组件库封装

    • 组件库
  • 开发工具

    • Vscode 插件
  • 项目展示
  • 案例中心 (opens new window)
  • First Project
  • 基础算法题
  • 链表题
  • 动态规划
  • 双指针
  • 递归
  • 数据结构
  • 前端学习计划 (opens new window)
  • 技术随笔
  • 转载文章
  • 包管理工具
  • 前端学习周报
  • VSCode插件
  • Promise 专题
  • 函数技巧
  • React 专题
  • 配置文件

    • TSCONFIG-配置 (opens new window)
    • NGINX-配置 (opens new window)
    • 正则规则查询手册 (opens new window)
    • Lint 配置 (opens new window)
  • 教程

    • GIT-教程
    • NPM SCRIPTS-工作流 (opens new window)
    • DOCKER-教程 (opens new window)
    • LERNA-教程 (opens new window)
    • GIT-常用操作整理 (opens new window)
  • VSCode

    • LAUNCH.JSON (opens new window)
  • 指令

    • NPM 指令 (opens new window)
    • NVM 指令 (opens new window)
    • Nginx 指令 (opens new window)
    • YARN 指令 (opens new window)
    • PNPM 指令 (opens new window)
  • 库

    • FS-EXTRA 库 (opens new window)
    • NODE 库-PATH (opens new window)
  • 永远的神

    • 魔法师卡颂-自顶向下学 React 源码 (opens new window)
    • 全栈潇晨 (opens new window)
    • 博客-程序员山月-Daily (opens new window)
    • 淘系前端:冴羽 (opens new window)
  • 系列文章

    • 《图解HTTP》 (opens new window)
    • 《ES6标准入门》 (opens new window)
    • 《现代JavaScript教程》 (opens new window)
    • 《深入浅出Webpack》 (opens new window)
    • VSCode 插件系列:小茗同学 (opens new window)
    • JEST 教程 (opens new window)
    • 前端精读周刊:各种精读系列 (opens new window)
    • 一文吃透系列 (opens new window)
    • 图解 REACT 原理 (opens new window)
  • 实用网站

    • MDN (opens new window)
    • CAN I USE (opens new window)
    • TYPESCRIPT-ESLint-RULES (opens new window)
    • ESLint-RULES (opens new window)
    • FRONT-END TREND (opens new window)
    • NPM TREND (opens new window)
    • 在线分析 Node 依赖 (opens new window)
    • FIND NPM (opens new window)
    • CODE PEN (opens new window)
    • 印记中文 (opens new window)
    • TOOL.LU (opens new window)
    • 阮一峰-网道 (opens new window)
    • DIGITAL OCEAN (opens new window)
    • DEVDOCS.IO (opens new window)
    • JOI (opens new window)
  • 算法

    • 小浩算法 (opens new window)
    • LABULADONG 的算法小抄 (opens new window)
    • 力扣 SOLUTION (opens new window)
    • HACKER RANK (opens new window)
    • 代码随想录 (opens new window)
  • 博客系列

    • 美团大佬 (opens new window)
    • 蜡笔小伟 (opens new window)
    • 优秀博客1 (opens new window)
    • 优秀博客2-umi (opens new window)
    • 优质博客 (opens new window)
  • CSS

    • CSS-EASING 库 (opens new window)
    • ROUGH.JS (opens new window)
    • CSS 网站收集
    • UNOCSS (opens new window)
  • 前端

    • PROMISE (opens new window)
    • UNDERSCORE.JS (opens new window)
    • study with BGM (opens new window)
    • nginx【B站视频】 (opens new window)
    • 机器学习
    • Js基础
  • 掘金已购课程

    • 前端自动化测试精讲 (opens new window)
    • 深入浅出 Vite (opens new window)
    • 现代 Web 布局 (opens new window)
    • 前端算法与数据结构 (opens new window)
    • 基于 Vite 的 SSG 框架开发实战 (opens new window)
    • SSR 实战:官网开发指南 (opens new window)
    • WebGL 入门与实践 (opens new window)
    • 玩转 CSS 的艺术之美 (opens new window)
    • 前端调试通关秘籍 (opens new window)
    • React 进阶实践指南 (opens new window)
    • TypeScript 全面进阶指南 (opens new window)
    • 前端缓存技术与方案解析 (opens new window)
    • npm scripts 前端工作流 (opens new window)
    • Webpack5 核心原理与应用实践 (opens new window)
  • 购物车

    • 张鑫旭-技术写作指南 (opens new window)
    • 深入剖析 Node.js 底层原理 (opens new window)
    • 前端开发者的现代 C++ 课 (opens new window)
    • 从前端到全栈 (opens new window)
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数字信号处理

    • 数字信号处理--FIR的线性相位特性
      • 1. 什么是线性相位?
      • 2. 线性相位的特性
      • 3. FIR线性相位系统的设计
        • 3.1 当h(n)为偶对称
        • 3.2 当h(n)为奇对称
      • 4.具有线性相位特征的FIR系统的零点分布
    • 数字信号处理 -- Z 变换
    • 数字信号处理--Z变换之极零分析
    • 数字信号处理--功率谱估计
    • 数字信号处理--全通系统与最小相位系统
    • 数字信号处理--相关函数
  • scikit-learn-机器学习常用算法原理及编程实战

  • 读书笔记
  • 数字信号处理
wangjiasheng
2020-04-07
目录

数字信号处理--FIR的线性相位特性

# 1. 什么是线性相位?

经过具有线性相位的离散时间系统H(ejw)H(e^{jw})H(ejw)后的信号y(n)y(n)y(n)与原信号x(n)x(n)x(n)在时域上只存在平移的区别,而非失真。故线性相位对于语音合成、波形传输都是十分重要的。

这里我们只考虑H(ejw)H(e^{jw})H(ejw)对相位的影响,而不考虑幅值的影响:

{∣H(ejw)∣=1arg[H(ejw)]=−kw\left\{ \begin{array}{l} |H\left( e^{jw} \right) |=1\\ arg\left[ H\left( e^{jw} \right) \right] =-kw\\ \end{array} \right. {∣H(ejw)∣=1arg[H(ejw)]=−kw​


证明:在频域上线性相位 ∼\sim∼ 时域上平移

Y(ejw)=H(ejw)X(ejw)=ej(−kw)∣X(ejw)∣ejarg[H(ejw)]=∣X(ejw∣ej(arg[X(ejw)]−kw)\begin{aligned} Y(e^{jw}) =& H(e^{jw})X(e^{jw})=e^{j(-kw)}|X(e^{jw})|e^{jarg[H(e^{jw})]} \\ = &|X(e^{jw}|e^{j(arg[X(e^{jw})]-kw)} \end{aligned} Y(ejw)==​H(ejw)X(ejw)=ej(−kw)∣X(ejw)∣ejarg[H(ejw)]∣X(ejw∣ej(arg[X(ejw)]−kw)​

已知频域与时域的关系为:e−jwe^{-jw}e−jw ∼\sim∼ z−1z^{-1}z−1 ∼\sim∼ x(n−1)x(n-1)x(n−1)

故有:

y(n)=x(n−k)y(n) = x(n-k) y(n)=x(n−k)

# 2. 线性相位的特性

在实际数字系统中,不存在零相频响应的系统,因为其要求系统的单位抽样响应应满足:

h(n)=h(−n),n=0,1,…,N−1h(n) = h(-n) , n = 0,1,\dots,N-1 h(n)=h(−n),n=0,1,…,N−1

这个显然是非因果系统,即物理不可实现,当然对于非实时信号处理,则可以有这一部分。

# 3. FIR线性相位系统的设计

FIR为全零点系统,其单位抽样响应为有限长,所以可以实现对h(n)h(n)h(n)的对称。

  • 当h(n)h(n)h(n)偶堆成时,相位延迟

    arg[H(ejw)]=φ(w)=−N−12warg\left[ H(e^{jw})\right] = \varphi(w) = - \frac{N-1}{2}w arg[H(ejw)]=φ(w)=−2N−1​w

  • 当h(n)h(n)h(n)偶堆成时,相位延迟

    arg[H(ejw)]=φ(w)=−N−12w+π2arg\left[ H(e^{jw})\right] = \varphi(w) = - \frac{N-1}{2}w + \frac{\pi}{2} arg[H(ejw)]=φ(w)=−2N−1​w+2π​

# 3.1 当h(n)为偶对称

无论N为奇数还是偶数,头尾两两总可以合成一个余弦信号coscoscos

  • 若NNN为奇数,中间的三个点分别为:N−32,N−12,N+12\frac{N-3}{2},\frac{N-1}{2},\frac{N+1}{2}2N−3​,2N−1​,2N+1​

故有:

H(ejw)=∑n=0N−1h(n)e−jwn=∑n=0(N−3)/2j(n)e−jwn+h(N−12)e−jw⋅N−12+∑(N+1)/2(N−1j(n)e−jwn=e−jw⋅N−12{h(N−12)+2∑n=1(N−1)/2h(N−12−n)cos(wn)}\begin{aligned} H(e^{jw}) = & \sum_{n=0}^{N-1}h(n)e^{-jwn} \\ = & \sum_{n=0}^{(N-3)/2}j(n)e^{-jwn}+ h(\frac{N-1}{2})e^{-jw\cdot\frac{N-1}{2}} + \sum_{(N+1)/2}^{(N-1}j(n)e^{-jwn} \\ = & e^{-jw\cdot\frac{N-1}{2}}\left\{ h(\frac{N-1}{2}) + 2\sum_{n=1}^{(N-1)/2}h(\frac{N-1}{2}-n)cos(wn) \right\} \\ \end{aligned} H(ejw)===​n=0∑N−1​h(n)e−jwnn=0∑(N−3)/2​j(n)e−jwn+h(2N−1​)e−jw⋅2N−1​+(N+1)/2∑(N−1​j(n)e−jwne−jw⋅2N−1​⎩⎨⎧​h(2N−1​)+2n=1∑(N−1)/2​h(2N−1​−n)cos(wn)⎭⎬⎫​​

其中h(N−12)h(\frac{N-1}{2})h(2N−1​)以及h(N−12−n)h(\frac{N-1}{2}-n)h(2N−1​−n)都是常数,统一用a(n)a(n)a(n)序列表述:

H(ejw)=e−jw⋅N−12∑n=0(N−1)/2a(n)cos(wn)H(e^{jw}) = e^{-jw\cdot\frac{N-1}{2}} \sum_{n=0}^{(N-1)/2}a(n)cos(wn) H(ejw)=e−jw⋅2N−1​n=0∑(N−1)/2​a(n)cos(wn)

可以发现第二部分∑n=0(N−1)/2a(n)cos(wn)\sum_{n=0}^{(N-1)/2}a(n)cos(wn)∑n=0(N−1)/2​a(n)cos(wn)是实数,不会影响相位,只会影响幅值。

H(ejw)H(e^{jw})H(ejw)具有线性相位:

arg[H(ejw)]=φ(w)=−N−12warg\left[ H(e^{jw})\right] = \varphi(w) = - \frac{N-1}{2}w arg[H(ejw)]=φ(w)=−2N−1​w

  • 若NNN为偶数,中间的两个点分别为:N2−1,N2\frac{N}{2}-1,\frac{N}{2}2N​−1,2N​

故有:

H(ejw)=∑n=0N−1h(n)e−jwn=∑n=0N/2−1j(n)e−jwn+0+∑N/2N−1j(n)e−jwn=e−jw⋅N−12∑n=0N/2−12h(N2−n)cos[(n−12)w]\begin{aligned} H(e^{jw}) = & \sum_{n=0}^{N-1}h(n)e^{-jwn} \\ = & \sum_{n=0}^{N/2-1}j(n)e^{-jwn}+ 0 + \sum_{N/2}^{N-1}j(n)e^{-jwn} \\ = & e^{-jw\cdot\frac{N-1}{2}}\sum_{n=0}^{N/2-1}2h(\frac{N}{2}-n)cos[ (n-\frac{1}{2})w ]\\ \end{aligned} H(ejw)===​n=0∑N−1​h(n)e−jwnn=0∑N/2−1​j(n)e−jwn+0+N/2∑N−1​j(n)e−jwne−jw⋅2N−1​n=0∑N/2−1​2h(2N​−n)cos[(n−21​)w]​

其中h(N2−n)h(\frac{N}{2}-n)h(2N​−n)是一个常数,这里用b(n)b(n)b(n)序列进行表述:

H(ejw)=e−jw⋅N−12∑n=0N/2b(n)cos[(n−12)w]H(e^{jw}) = e^{-jw\cdot\frac{N-1}{2}} \sum_{n=0}^{N/2}b(n)cos[(n-\frac{1}{2})w] H(ejw)=e−jw⋅2N−1​n=0∑N/2​b(n)cos[(n−21​)w]

同理,上述离散序列系统不会影响相位,只会影响幅值。

H(ejw)H(e^{jw})H(ejw)具有线性相位:

arg[H(ejw)]=φ(w)=−N−12warg\left[ H(e^{jw})\right] = \varphi(w) = - \frac{N-1}{2}w arg[H(ejw)]=φ(w)=−2N−1​w

# 3.2 当h(n)为奇对称

无论NNN为奇数还是偶数,头尾两两总可以合成一个余弦信号sinsinsin

  • 若NNN为奇数,中间的三个点分别为:N−32,N−12,N+12\frac{N-3}{2},\frac{N-1}{2},\frac{N+1}{2}2N−3​,2N−1​,2N+1​

故有:

H(ejw)=∑n=0N−1h(n)e−jwn=∑n=0(N−3)/2j(n)e−jwn+h(N−12)e−jw⋅N−12+∑(N+1)/2N−1j(n)e−jwn\begin{aligned} H(e^{jw}) = & \sum_{n=0}^{N-1}h(n)e^{-jwn} \\ = & \sum_{n=0}^{(N-3)/2}j(n)e^{-jwn}+ h(\frac{N-1}{2})e^{-jw\cdot\frac{N-1}{2}} + \sum_{(N+1)/2}^{N-1}j(n)e^{-jwn} \\ \end{aligned} H(ejw)==​n=0∑N−1​h(n)e−jwnn=0∑(N−3)/2​j(n)e−jwn+h(2N−1​)e−jw⋅2N−1​+(N+1)/2∑N−1​j(n)e−jwn​

其中,h(n)h(n)h(n)是奇对称,即h(N−12)=0h(\frac{N-1}{2})=0h(2N−1​)=0,进一步简化为:

H(ejw)=ej(π2−N−12w)∑n=1(N−1)/2c(n)sin(nw)H(e^{jw}) = e^{j(\frac{\pi}{2}-\frac{N-1}{2}w)}\sum_{n=1}^{(N-1)/2}c(n)sin(nw) H(ejw)=ej(2π​−2N−1​w)n=1∑(N−1)/2​c(n)sin(nw)

H(ejw)H(e^{jw})H(ejw)具有线性相位:

arg[H(ejw)]=φ(w)=−N−12w+π2arg\left[ H(e^{jw})\right] = \varphi(w) = - \frac{N-1}{2}w + \frac{\pi}{2} arg[H(ejw)]=φ(w)=−2N−1​w+2π​

  • 若NNN为偶数,中间的两个点分别为:N2−1,N2\frac{N}{2}-1,\frac{N}{2}2N​−1,2N​

故有:

H(ejw)=∑n=0N−1h(n)e−jwn=∑n=0N/2−1j(n)e−jwn+0+∑N/2N−1j(n)e−jwn\begin{aligned} H(e^{jw}) = & \sum_{n=0}^{N-1}h(n)e^{-jwn} \\ = & \sum_{n=0}^{N/2-1}j(n)e^{-jwn}+ 0 + \sum_{N/2}^{N-1}j(n)e^{-jwn} \\ \end{aligned} H(ejw)==​n=0∑N−1​h(n)e−jwnn=0∑N/2−1​j(n)e−jwn+0+N/2∑N−1​j(n)e−jwn​

其中,h(n)h(n)h(n)是奇对称,即h(N−12)=0h(\frac{N-1}{2})=0h(2N−1​)=0,进一步简化为:

H(ejw)=ej(π2−N−12w)∑n=1N/2d(n)sin[(n−12)w]H(e^{jw}) = e^{j(\frac{\pi}{2}-\frac{N-1}{2}w)}\sum_{n=1}^{N/2}d(n)sin[(n-\frac{1}{2})w] H(ejw)=ej(2π​−2N−1​w)n=1∑N/2​d(n)sin[(n−21​)w]

具有线性相位:

arg[H(ejw)]=φ(w)=−N−12w+π2arg\left[ H(e^{jw})\right] = \varphi(w) = - \frac{N-1}{2}w + \frac{\pi}{2} arg[H(ejw)]=φ(w)=−2N−1​w+2π​

根据h(n)h(n)h(n)的不同的类型,可以分类四种I,II,III,IV滤波器。

# 4.具有线性相位特征的FIR系统的零点分布

具有线性相位特征的FIR系统 →\rightarrow→ h(n)h(n)h(n)必须奇(偶)对称 →\rightarrow→ H(z)=±z−(N−1)H(z−1)H(z) = \pm z^{-(N-1)}H(z^{-1})H(z)=±z−(N−1)H(z−1)

综上可知:H(z−1)H(z^{-1})H(z−1)的零点也是H(z)H(z)H(z)的零点。

故【线性相位】FIR系统中零点满足:镜像对称

编辑 (opens new window)
#数字信号处理
上次更新: 2022/04/06, 15:04:00
数字信号处理 -- Z 变换

数字信号处理 -- Z 变换→

最近更新
01
如何理解浏览器的 user agent 用户代理的含义?
11-05
02
浏览器事件循环机制
10-31
03
浏览器页面渲染机制【2023】
10-15
更多文章>
Theme by Vdoing | Copyright © 2020-2023
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式