示例:希尔伯特变换
使用函数
hilbert 创建实数信号的希尔伯特变换,以使解析信号的离散傅立叶变换在频率为负时幅度为零。
2. 绘制输入信号的图象。
3. 使用函数 hilbert 计算输入信号的希尔伯特变换。
4. 绘制希尔伯特变换信号的图象。
5. 构建复信号并绘制其图像。
下面的步骤将证明解析信号的幅度即为原始信号的复包络。
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。
滤波器具有延迟 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 个原始点。频谱的上半部分基本为零,因此希尔伯特变换器滤波器已完成其工作。
复制表达式