jcst.net
当前位置:首页 >> mAtlAB实现hilBErt >>

mAtlAB实现hilBErt

matlab里的hilbert函数出来的是一个解析信号,这个信号的实部是原信号,而虚部就是一个真正的希尔伯特变换了.看里边的help有解释.The analytic signal x = xr + i*xi has a real part, xr, which is the original data, and an imaginary part, xi, which contains the Hilbert transform.

在Matlab中可以直接使用hilb()函数得到指定的希尔矩阵.即产生每个矩阵元素的值都等于 1/(行索引+列索引-1)的矩阵.此外,产生特殊矩阵方面,matlab是很强大的工具,还包括一下一些函数能够产生特殊矩阵:(1) 魔方矩阵魔方矩阵

这方面的内容忘得差不多了给你找一个程序 你看看吧:close all% fs=30;t=0:1/fs:200; x6=sin(2*pi*2*t)+sin(2*pi*4*t);x66 = hilbert(x6);xx = abs(x66+j*x6);figure(1)hold onplot(t,x6);plot(t,xx,'r')xlim([0 5])hold off% 包络算法,未考虑边界条件d = diff(x6);n =

tic[j,i]=meshgrid(1:10000,1:100);H=1./(i+j-1);toc上面两个都是10000*100的,我这个是100*10000的

function [x,y] = hilbert(n)if n<=0 x=0; y=0;else [xo,yo]=hilbert(n-1); x=.5*[-.5+yo -.5+xo .5+xo .5-yo]; y=.5*[-.5+xo .5+yo .5+yo -.5-xo];end

function [x,y] = hilbert(n)if n 追问: 亲 不要糊弄我 你给的是matlab.用C咋实现 评论0 0 0

这个要取希尔伯特变换的虚部 plot ( t, imag(y) ,'r' )

N = 1024; %样本数fs = 1000; %采样率t = (0:N-1)/fs;xn = sin(2*pi*100.*t); %100Hz正弦信号采样hxn = hilbert(xn); %做希尔伯特变换%比较频谱X = fft(xn);H = fft(hxn);subplot(221);plot(abs(X));title('原信号频谱幅值');subplot(222);plot(phase(X));title('原信号频谱相位')subplot(223);plot(abs(H));title('变换后频谱幅值')subplot(224);plot(phase(H));title('变换后频谱相位');

X = hilbert(Xr)

网站首页 | 网站地图
All rights reserved Powered by www.jcst.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com