函数 > 信号处理 > 其他变换 > 示例:希尔伯特变换
  
示例:希尔伯特变换
使用函数 hilbert 创建实数信号的希尔伯特变换,以使解析信号的离散傅立叶变换在频率为负时幅度为零。
1. 使用函数 sincos 定义输入信号。使用函数 rnd 添加随机噪声。
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 绘制输入信号的图象。
单击复制此表达式
3. 使用函数 hilbert 计算输入信号的希尔伯特变换。
单击复制此表达式
4. 绘制希尔伯特变换信号的图象。
单击复制此表达式
5. 构建复信号并绘制其图像。
单击复制此表达式
单击复制此表达式
下面的步骤将证明解析信号的幅度即为原始信号的复包络。
6. 使用函数 z1dft 求信号 的谱图。
单击复制此表达式
7. 绘制谱图的绝对值图像。
单击复制此表达式
对于矢量,函数 dft 与已弃用的函数 CFFT 间的比例因子为 1/N
8. 在同一幅图上绘制所有四个信号的图表。
单击复制此表达式
变换域中,由希尔伯特变换创建的新信号与输入信号的关系如下所示:
单击复制此表达式
其中 H 称为希尔伯特变换器,它是一个具有频率响应的滤波器:
单击复制此表达式
对于
单击复制此表达式
单击复制此表达式
对于
单击复制此表达式
可以通过滤波器设计过程和函数来构建 H
理想的希尔伯特变换器
Rabiner 和 Gold (Theory and Application of Digital Signal Processing (《数字信号处理的理论和应用》),Prentice-Hall, Inc. 出版) 给出了理想的希尔伯特变换器系数。下面的示例基于 Signal Processing Algorithms (《信号处理算法》) (由 Stearns 和 David 合著,Prentice-Hall 出版) 中第 14.4 节的论述。理想滤波器的系数经窗口设置,可转换为长度为奇数 L 的因果滤波器。
1. 定义长度和中心。
单击复制此表达式
单击复制此表达式
2. 定义未窗口化的系数 h
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
3. 使用函数 hamming 可借助汉明窗设置系数的窗口,方式为使用 vectorize 运算符将 h 与窗口相乘 (逐个元素执行)。
单击复制此表达式
4. 使用函数 gain 计算系数为 h 的滤波器在频率 f 处的增益。
单击复制此表达式
单击复制此表达式
5. 绘制增益与频率的图象。
单击复制此表达式
频率正则化为采样频率 1。
6. 使用函数 exparg 计算滤波器的相位偏移。
滤波器具有延迟 C,我们计算相对于延迟信号的滤波器相位偏移。延迟的传递函数如下:
单击复制此表达式
单击复制此表达式
其中:
单击复制此表达式
单击复制此表达式
7. 绘制相位偏移的图像 (以度为单位)。
单击复制此表达式
在几乎整个频率范围内,偏移均为 -90 度。
测试滤波器
1. 定义信号参数。
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 使用函数 exp 创建新信号。函数 rnd 会添加低频噪声。
单击复制此表达式
可以将光标放在 rnd 上并按 F5 重新计算,可获得一个不同的随机信号 T
单击复制此表达式
3. 将这些元素的共轭放在信号的最后 200 个位置上,以保证求逆时可获得实数结果。
单击复制此表达式
新矢量具有 1001 个元素,其中 1-200 号元素包含原始矢量 T,801-1000 号元素包含 T 的共轭。其间元素均设为 0。
4. 求信号 T 的傅立叶变换。
单击复制此表达式
使用函数 Re 去除小的虚数舍入误差。使用第一个元素之后的前 200 个元素的随机相位和单位幅度构建变换 T 会产生噪声。
5. 绘制变换后的信号图象。
单击复制此表达式
6. 使用函数 response 可获得矢量 ZT 对滤波器 HamL 的响应。
单击复制此表达式
单击复制此表达式
7. 使用 ZT 的前 800 个元素和 R 的后 800 个元素构建复数信号 z2
单击复制此表达式
将傅立叶变换矢量 ZT 的前 800 个元素保存为矢量 a2
单击复制此表达式
将响应矢量 R 的后 800 个元素保存为矢量 b2
单击复制此表达式
定义复数信号 z2
单击复制此表达式
8. 使用函数 dft 计算信号 z2 的离散傅立叶变换。
单击复制此表达式
对于矢量,函数 dft 与已弃用的函数 CFFT 间的比例因子为 1/P
9. 绘制信号 z2 的离散傅立叶变换的绝对值图象。
单击复制此表达式
此处显示了用于在变换域中生成信号的 200 个原始点。频谱的上半部分基本为零,因此希尔伯特变换器滤波器已完成其工作。