希尔伯特变换及其在Matlab中的两种实现方法
创作时间:
作者:
@小白创作中心
希尔伯特变换及其在Matlab中的两种实现方法
引用
搜狐
1.
https://www.sohu.com/a/786896936_121124362
实信号只包含振幅信息,而缺乏相位信息。而复信号则包含了原始信号的相位信息,可以用于分析信号的相位特性。在某些应用中,例如信号处理、通信系统中,相位信息对于理解信号的特性和进行后续处理非常重要。
Hilbert(希尔伯特)变换可以将实信号转换为复信号,常用于提取信号的相位信息,使得我们能够更全面地分析和处理信号,这在雷达通信领域中都很有用,尤其是在带通信号处理中。
Hilbert变换可以认为是函数f(t)和h(t)的卷积,其中:
在频率域,对函数进行Hilbert变换,是在f(t)的傅里叶变换结果F(w)前乘一个系数H(w),其中H(w)是h(t)的傅里叶变换:
也就是把F(w)所有正频率向后移动90°相位,负频率则向前移动90°相位。也可以用符号函数表示:
那么,对于函数f(t),它的希尔伯特变换在频域表示为:
方法一:使用Matlab工具箱中的函数
使用Matlab工具箱中的函数hilbert 可以计算实数输入序列x的Hilbert变换,并返回相同长度的复数结果,即y = hilbert(x),其中y的实部是原始实数数据,虚部是实际Hilbert变换。
方法二:使用FFT/IFFT
Hilbert变换的实现还可以通过对实信号进行傅里叶变换(FFT),将负频率部分置零,然后再通过逆傅里叶变换(IFFT)转换到时域,得到复信号,其中实数部分为原始信号,虚数部分为变换后的信号。
常见函数的Hilbert变换
另外,使用NCO(Numerically Controlled Oscillator)和低通滤波器的组合也可以直接将实信号转换为复信号,避免了额外的FFT和IFFT处理,从而减少处理时间。
下面是两种方法的Matlab代码实现:
clc;
clear;
close all;
N = 500;
Fs = 100e6;
t = (0:N-1)/Fs;
f = 1e6;
x = sin(2*pi*f*t);
% 方法一:
Y1 = hilbert(x);
figure;
plot(1:N,real(Y1),'b',1:N,imag(Y1),'r--');
title('Hilbert变换');
legend('原始信号','变换后信号');
grid on;
% 方法二:
h1 = fft(x);
for i = 1:N
if ((i == 1) || (i == (N/2+1)))
h1(i) = h1(i);
elseif ((i > 1) && (i <= N/2))
h1(i) = 2*h1(i);
else
h1(i) = 0;
end
end
Y2 = ifft(h1);
figure;
plot(1:N,real(Y2),'b',1:N,imag(Y2),'r--');
title('Hilbert变换');
legend('原始信号','变换后信号');
grid on;
热门推荐
狗狗的养护之打疫苗与驱虫时机(了解狗狗打疫苗和驱虫的关键时刻)
海南岛东部交通升级:海口地铁5号线建设进展及规划展望
糖尿病是血管的隐形杀手?做好4点抵御血管免受侵害!
单纯胡桃夹不伤害肾,但注意肾炎常合并胡桃夹,两者同时存在
保障食堂食品安全, 守护学生健康
“商业航天”首次写入《政府工作报告》成都企业抢抓万亿级产业机遇
水文化:解密“陂”字与古代水利工程
南方人和北方人过中秋的“3大差异”,相互都不理解,有意思!
周六002日职:新泻天鹅VS东京绿茵,历史交锋与攻防阵形解析
年假规定累计工作时间怎么计算
生蚝的营养价值有什么
SOP作用与重要性
别再随意揉眼睛了,这些危害你要知道!
金佛山旅游攻略
樊哙:从屠夫到西汉开国元勋的传奇一生
如何体面地结束一段友谊?
茶叶末釉瓷器:一抹黄绿,穿越千年的古韵今风!
数字媒体技术基础:关键帧插值方法
买到过期食品怎么维权?一文详解维权方法和赔偿标准
早餐吃苹果的7个养生功效
母子关系证明怎么开
医师解析:锌的六大功效与五大补锌人群
MySQL数据库的基本结构是什么?
网络协议——Modbus-RTU
癌症治疗的新靶点:IL-1RAP
民法典中的抗辩权有哪些?
药物性牙龈增生的病因,除了这些药物要当心
阿勒泰滑雪住宿全攻略,春季畅滑不打烊!
AI新技术会抢走人们的饭碗吗?
交通事故中的误工费保险公司赔吗