当前位置:   article > 正文

希尔伯特变换(matlab)_matlab 希尔伯特变换

matlab 希尔伯特变换

1.什么是Hilbert Transform

百度百科
维基百科 (需要梯子科学上网)

2.Analytic Signal of a Sequence 解析序列

clear; clc; close all;
% 生成一个序列,用希尔伯特分析信号
xr = [1 2 3 4];
x = hilbert(xr)

% 其虚部
x_im = imag(x)
% 其实部
x_re = real(x)

% 快速傅里叶变换
x_dft = fft(x)
xr_dft = fft(xr)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
x =

   1.0000 + 1.0000i   2.0000 - 1.0000i   3.0000 - 1.0000i   4.0000 + 1.0000i


x_im =

     1    -1    -1     1


x_re =

     1     2     3     4


x_dft =

  10.0000 + 0.0000i  -4.0000 + 4.0000i  -2.0000 + 0.0000i   0.0000 + 0.0000i


xr_dft =

  10.0000 + 0.0000i  -2.0000 + 2.0000i  -2.0000 + 0.0000i  -2.0000 - 2.0000i
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3.Analytic Signal and Hilbert Transform 解析信号和希尔伯特变换

% 希尔伯特函数为有限长数据找到精确的解析信号
% 也可以通过使用FIR希尔伯特变换滤波器来生成解析信号,以计算虚部的近似
% 生成一组频率为2037211001Hz的正弦序列
% 采样频率为10kHz,时长为1秒
clear; clc; close all;
fs = 1e4;
t = 0:1/fs:1; 

x = 2.5 + cos(2*pi*203*t) + sin(2*pi*721*t) + cos(2*pi*1001*t);

y = hilbert(x);

plot(t,real(y),t,imag(y))
xlim([0.01 0.03])
legend('real','imaginary')
title('hilbert Function')
xlabel('Time (s)')

% 计算原始序列和解析信号的Welch估计功率谱密度
% 窗长为256,无重叠部分的汉明窗
% 验证解析信号在负频率处没有功率
pwelch([x;y].',256,0,[],fs,'centered')  % help pwelch
legend('Original','hilbert')

% 设计一个60阶希尔伯特变换FIR滤波器,过渡带宽为400Hz
fo = 60;

d = designfilt('hilbertfir','FilterOrder',fo, ...
       'TransitionWidth',400,'SampleRate',fs); 

freqz(d,1024,fs)

% 对正弦序列进行滤波以逼近解析信号的虚部
hb = filter(d,x)

% FIR Filter
grd = fo/2;
   
y2 = x(1:end-grd) + 1j*hb(grd+1:end);
t2 = t(1:end-grd);

plot(t2,real(y2),t2,imag(y2))
xlim([0.01 0.03])
legend('real','imaginary')
title('FIR Filter')
xlabel('Time (s)')

% 估计近似解析信号的功率谱密度(PSD),并与希尔伯特结果进行比较
pwelch([y;[y2 zeros(1,grd)]].',256,0,[],fs,'centered')
legend('hilbert','FIR Filter')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

请添加图片描述上图为解析信号x(t)的实部与虚部;
请添加图片描述计算原始序列和解析信号的Welch估计功率谱密度;解析信号频率大于0
在这里插入图片描述设计一个60阶希尔伯特变换FIR滤波器,过渡带宽为400Hz;
请添加图片描述对比前面的图,对正弦序列进行滤波也可以逼近解析信号的虚部;
请添加图片描述估计近似解析信号的功率谱密度(PSD),并与希尔伯特结果进行比较,与前图效果相差不大。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/781377
推荐阅读
相关标签
  

闽ICP备14008679号