是否没有为复杂信号定义希尔伯特变换?

信息处理 希尔伯特变换
2022-02-14 22:44:22

是否没有为复杂信号定义希尔伯特变换?在 MATLAB 中,如果您将复数序列作为输入,则函数 hilbert 会忽略。为什么?

1个回答

希尔伯特变换 可以应用于实变量的复杂函数例如,复指数由下式给出ejω0tω0>0

H{ejω0t}=jejω0t,ω0>0

您遇到的问题与 Matlab 的函数实现有关hilbert.m它是为实值输入序列设计的,它将忽略任何虚部。请注意,尽管它的名字,这个函数并不简单地返回输入向量的希尔伯特变换,而是计算相应的解析信号,即它返回一个复数向量,其实部等于输入向量,虚部其中是输入向量的希尔伯特变换。

因此,如果出于某种原因想要计算复向量的希尔伯特变换,则需要执行以下操作:

x = ... % 一些复杂的向量
xr = 实数(x);
xi = 想象(x);
xr_ = imag(希尔伯特(xr));% 实部希尔伯特变换
xi_ = imag(希尔伯特(xi)); % 虚部希尔伯特变换
x_ = xr_ + 1i * xi_; % 复向量 x 的希尔伯特变换