如何在matlab上实现希尔伯特变换?求程序!!
%对滤波后的数据进行hilbert变换load d:\0920\01-06\f06500.txt
size(f06500)
y=abs(hilbert(f06500));
save d:\0920\01-06\06500hil.txt y -ascii
之前自己得到一个将数据进行希尔伯特变换的程序,是在matlab上运行的,但是运行不了。具体问题不懂。自己一直没有用过matlab。所以来这里希望得到高手指点。如果能有程序给我更好!谢谢大家! hilbert,这个函数不就是么? 在楼主的程序中已进行了hilbert变换, y是信号f06500进行hilbert变换后的模值。不知楼主还要什么hilbert变换的程序?
回复 #1 suj568 的帖子
楼主究竟想到达什么目的!想怎么做? y=abs(imag(hilbert(f06500)));求教!
:@Q??? Error: File: h.m Line: 3 Column: 9
Unexpected MATLAB expression.
运行总是告之这个是怎么回事呢?
我做了修改 ,高手帮看看有什么问题哈!!谢谢咯!!
%对滤波后的数据进行hilbert变换load d:\shuju\hgt.2000stdf.txt
size(hgt.2000stdf)
y=abs(imag(hilbert(hgt.2000stdf)));
save d:\shuju\hgt.2000stdhil.txt y -ascii 我是学气象的,毕业论文需要把这些文本里的数据进行希尔波变换,就可以了。所以不用太复杂。本来说是
matlab里就有这个函数,可是不知道是不是我安装的matlab有问题。 原帖由 suj568 于 2007-4-21 17:19 发表
%对滤波后的数据进行hilbert变换
load d:\shuju\hgt.2000stdf.txt
size(hgt.2000stdf)
y=abs(imag(hilbert(hgt.2000stdf)));
save d:\shuju\hgt.2000stdhil.txt y -ascii
建议阅读最基本的语法书,以下是提示:
A = load('d:\shuju\hgt.2000stdf.txt');
if ~isstruct(A)
error('The mat file should contain a structure array!');
end
cFieldNames = fieldnames(A);
B = A.(cFieldNames{1});
回复 #9 eight 的帖子
强悍哈!我是个门外汉啦!什么都不懂 ,现学编程也不现实,论文时间是不允许的!不过还是感谢你给我提示。呵呵 很抱歉我看不懂!我做了一下的修改:%对滤波后的数据进行hilbert变换
A = load('d:\shuju\hgt.2000stdf.txt');
if ~isstruct(A)
error('The mat file should contain a structure array!');
end
cFieldNames = fieldnames(A);
B = A.(cFieldNames{1});
size(hgt.2000stdf)
y=abs(imag(hilbert(hgt.2000stdf)));
save d:\shuju\hgt.2000stdhil.txt y -ascii
得到的结果是:
??? Error: File: h.m Line: 8 Column: 9
Unexpected MATLAB expression.
希望继续得到你热心帮助! 给你们都舔麻烦了哈! %DISP_HHSdisplay Hilbert-Huang spectrum
%
% DISP_HHS(im,t,inf)
% displays in a new figure the spectrum contained in matrix "im"
% (amplitudes in dB).
%
% inputs:- im: image matrix (e.g., output of "toimage")
% - t (optional): time instants (e.g., output of "toimage")
% - inf (optional): -dynamic range in dB (wrt max)
% default: inf = -20
% - fs: sampling frequency
%
% use:disp_hhs(im) ; disp_hhs(im,t) ; disp_hhs(im,inf)
% disp_hhs(im,t,inf) ; disp_hhs(im,inf,fs) ; disp_hhs(im,[],fs)
% disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)
%
%
% See also
%emd, hhspectrum, toimage
%
% G. Rilling, last modification 3.2007
% gabriel.rilling@ens-lyon.fr
function disp_hhs(varargin)
error(nargchk(1,3,nargin));
fs = 0;
inf = -20;
im = varargin{1};
t = 1:size(im,2);
switch nargin
case 1
%raf
case 2
if isscalar(varargin{2})
inf = varargin{2};
else
t = varargin{2};
end
case 3
if isvector(varargin{2})
t = varargin{2};
inf = varargin{3};
else
inf = varargin{2};
fs = varargin{3};
end
case 4
t = varargin{2};
inf = varargin{3};
fs = varargin{4};
end
if isempty(inf)
inf = -20;
end
if inf > 0
inf = -inf;
elseif inf == 0
error('inf must be nonzero')
end
M=max(max(im));
warning off
im = 10*log10(im/M);
warning on
figure
if fs == 0
imagesc(t,,im,);
ylabel('normalized frequency')
else
imagesc(t,,im,);
ylabel('frequency')
end
set(gca,'YDir','normal')
xlabel('time')
title('Hilbert-Huang spectrum')
以上是我在本论坛里“送给搞EMD或者HHT..... ”这个帖子里找到一个m文件
好像也是说希尔伯特变换的。我有个疑问,'Hilbert-Huang spectrum'与我想做的希尔伯特变换有没有什么区别?请高手指教! %HHSPECTRUMcompute Hilbert-Huang spectrum
%
% = HHSPECTRUM(x,t,l,aff) computes the Hilbert-Huang spectrum
%
% inputs:
% - x : matrix with one signal per row
% - t : time instants
% - l : estimation parameter for instfreq (integer >=1 (1:default))
% - aff : if 1, displays the computation evolution
%
% outputs:
% - A : instantaneous amplitudes
% - f : instantaneous frequencies
% - tt: truncated time instants
%
% calls:
% - hilbert: computes the analytic signal
% - instfreq : computes the instantaneous frequency
% - disprog : displays the computation evolution
%
%Examples:
%
%s = randn(1,512);
%imf = emd(s);
% = hhspectrum(imf(1:end-1,:));
%
%s = randn(10,512);
% = hhspectrum(s,1:512,2,1);
%
% rem: need the Time-Frequency Toolbox (http://tftb.nongnu.org)
%
% See also
%emd, toimage, disp_hhs
%
% G. Rilling, last modification 3.2007
% gabriel.rilling@ens-lyon.fr
function = hhspectrum(x,t,l,aff)
error(nargchk(1,4,nargin));
if nargin < 2
t=1:size(x,2);
end
if nargin < 3
l=1;
end
if nargin < 4
aff = 0;
end
if min(size(x)) == 1
if size(x,2) == 1
x = x';
if nargin < 2
t = 1:size(x,2);
end
end
Nmodes = 1;
else
Nmodes = size(x,1);
end
lt=length(t);
tt=t((l+1):(lt-l));
for i=1:Nmodes
an(i,:)=hilbert(x(i,:)')';
f(i,:)=instfreq(an(i,:)',tt,l)';
A=abs(an(:,l+1:end-l));
if aff
disprog(i,Nmodes,max(Nmodes,100))
end
end
是另外一个m 文件,hhspectrum.m。
越看越晕呼!哦呵呵~~~ 原帖由 suj568 于 2007-4-21 19:52 发表
强悍哈!我是个门外汉啦!什么都不懂 ,现学编程也不现实,论文时间是不允许的!不过还是感谢你给我提示。呵呵 很抱歉我看不懂!我做了一下的修改:
%对滤波后的数据进行hilbert变换
A = load('d:\shuju\hgt. ...
大哥,你还是先看看基础书好吧,如果按照你所写的,那我得到的B有何用啊?
A = load('d:\shuju\hgt.2000stdf.txt');
if ~isstruct(A)
error('The mat file should contain a structure array!');
end
cFieldNames = fieldnames(A);
B = A.(cFieldNames{1});
y=abs(imag(hilbert(B)));
save d:\shuju\hgt.2000stdhil.txt y -ascii
原帖由 suj568 于 2007-4-21 20:10 发表
%DISP_HHSdisplay Hilbert-Huang spectrum
%
% DISP_HHS(im,t,inf)
% displays in a new figure the spectrum contained in matrix "im"
% (amplitudes in dB).
%
% inputs:- im: image matrix (e.g. ...
建议先把HHT基本概念和手上的程序先整理清楚,这样少走很多弯路,也不会到处碰壁
回复 #14 eight 的帖子
呵呵 谢谢你给的忠告,只是时间不由人哈 ,导师让加快速度呢 。我还在弄数据 ,连图都还没有开始绘。不过实话 我自己现在到处弄了很多MATLAB的资料来看 ,也有希尔伯特变换的资料,不过毕竟刚开始,时间又紧,入门还是有点困难!!真心感谢你的帮助!不过最后有没有受益,都得感谢你热心帮助哦!!
页:
[1]
2