希尔伯特变换及其在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;
热门推荐
高州的设置及其沿革变迁略谈
全面审视:如何正确评价白起的功绩
打开昭和时代的时光胶囊:二十四の瞳映画村
第一次深圳办理港澳通行证具体流程
通过讨论和小组活动加强医务人员手卫生意识
仅需8.3秒!AI 已瞄准石油!
社保都有哪些档次
哈弗紧急呼叫功能受限怎么办?一文详解故障排查方法
短剧的创作特点有哪些
斗罗大陆武魂觉醒神器大全:16种神器效果及种类详解
关于遗嘱怎么公证生效
高管为什么要减持?这种减持行为如何影响公司的股价表现?
眼睛酸胀,头晕难受,要警惕青光眼在作祟
《神农本草经》第十章木部(下品)原文及详解
在买老鼠药犯法吗:关于老鼠药购买与销售的法律问题
软件项目管理如何使用RACI矩阵
丁壬合化成功条件
营养餐每天搭配食谱
保险代位追偿需要准备什么材料和手续
骑手社保尘埃落定,美团京东承压前行,未来格局如何变?
二郎神在天庭的实力分析
无糖燕麦减肥(无糖燕麦片的功效与作用)
大学生竞赛拿奖攻略!如何从0准备大学生数学建模比赛!
鸽子蛋炒饭:营养丰富的美味选择
国际公证认证的必要性与流程解析:如何选择适合你的公证服务
租房如何判断真假房源,避免上当受骗
吃什么钙片可以改善过敏
凯文·麦克海尔:伟大大前锋还是史上最顶级球员?
火影忍者:漫画与动画改编之间的 8 大差异
劳动仲裁后胜诉几率有多大?全面解析影响因素及维权策略