lk677976 发表于 2011-3-24 12:29

回复 30 # qqzhouqianziyi 的帖子

我的是老师修改过给我的,我也不太清楚好蛋疼
function = toimage(A,f,t,splx,sply,f_max)

% = TOIMAGE(A,f,t,splx,sply) transforms a spectrum made
% of 1D functions (e.g., output of "spectreh") in an 2D image
%
% inputs :   - A    : amplitudes of modes (1 mode per row of A)
%            - f    : instantaneous frequencies
%            - t    : time instants
%            - splx : number of columns of the output im (time resolution).
%                     If different from length(t), works only for uniform
%                     sampling.
%            - sply : number of rows of the output im (frequency resolution).
%            - f_max: the highest frequency with respect to sply.
% outputs :- im   : 2D image of the spectrum
%            - tt   : time instants in the image
%
% utilisation : = toimage(A,f); = toimage(A,f,t); = toimage(A,f,sply);
%             = toimage(A,f,splx,sply); = toimage(A,f,t,splx,sply);

%DEFSPL = 400;
fs=8000; % revised
%if nargin < 3
%t = 1:size(A,2);
%sply = DEFSPL;
%splx = length(t);
%else
%    if length(t) == 1
%      tp = t;
%      t = 1:size(A,2);
%      if nargin < 4
%            sply = tp;
%            splx = length(t);
%      else
%            if nargin > 4
%                error('too many arguments')
%            end
%            sply = splx;
%            splx = tp;
%      end
%    else
%      lt = length(t);
%      if nargin < 5
%          sply = splx;
%          splx = lt;
%      end
%
%      if nargin < 4
%          sply = DEFSPL;
%          splx = lt;
%      end
%      
%      if nargin > 5
%            error('too many arguments')
%      end
%    end
%end
   
%end

lt=length(t);

im=[];
im(splx,sply) = 0;
f=f*(fs/2/f_max);% revised
for i=1:size(f,1)
for j = 1:lt-2
    ff=floor(f(i,j)*2*(sply-1))+1;
    if ff <= sply % in case f(i,j) > 0.5
      im(floor(j*(splx-1)/lt)+1,ff)=im(floor(j*(splx-1)/lt)+1,ff)+A(i,j);
    end
end
end

for i = 1:splx
tt(i) = mean(t(floor((i-1)*lt/(splx))+1:floor(i*lt/(splx))));
end

im=fliplr(im)';

qqzhouqianziyi 发表于 2011-3-24 16:42

回复 31 # lk677976 的帖子

你这个程序我也看不懂这程序本身格式什么的好像就有错误吧

qqzhouqianziyi 发表于 2011-3-24 16:56

回复 25 # chenlu1986 的帖子

你好 你能把hhspectrum, disp_hhs,toimage这三个函数源程序给我一下么

chenlu1986 发表于 2011-3-24 18:49

回复 33 # qqzhouqianziyi 的帖子

就在我上传的工具箱里面有个utils文件夹里是各个M函数。

qqzhouqianziyi 发表于 2011-3-24 19:21

本帖最后由 qqzhouqianziyi 于 2011-3-24 20:03 编辑

回复 34 # chenlu1986 的帖子

我那几个函数跟你的是一样的为什么就是运行不出来呢能加下你qq么

qqzhouqianziyi 发表于 2011-3-24 20:02

回复 29 # lk677976 的帖子

我的qq号:1572357620大家共同学习啊 呵呵

王晓华 发表于 2011-3-25 15:25

回复 13 # chenlu1986 的帖子

麻烦作者把你这个程序在MATLAB中再运行一下,我得到的HT谱时间轴的确是采样点数不是时间。谢谢啦!

chenlu1986 发表于 2011-3-25 18:20

回复 37 # 王晓华 的帖子

程序运行无误   {:{28}:}

王晓华 发表于 2011-3-25 21:45

回复 38 # chenlu1986 的帖子

我也很郁闷,为什么我做出来的就不是时间是点数。。。。。。压力很大啊!

王晓华 发表于 2011-3-25 22:02

回复 38 # chenlu1986 的帖子

难道是你的toimage函数做过修改吗?

王晓华 发表于 2011-3-25 22:15

回复 38 # chenlu1986 的帖子

你好,你能不能把你做HHT变换的工具箱传上来我想用你的工具箱试试。

chenlu1986 发表于 2011-3-26 12:33

回复 41 # 王晓华 的帖子

19楼我上传有EMD工具箱。
我当时大概、似乎、可能是修改了里面某参数吧,现在也忘了。
你可以下载安装我的那个。:@L

xiaoaq 发表于 2011-3-26 23:52

chenlu1986 您好:
麻烦告诉我,如果数据是离散的测试数据如:程序怎改呀。谢谢

xiaoaq 发表于 2011-3-26 23:53

chenlu1986 一定要帮我呀

chenlu1986 发表于 2011-3-27 09:20

回复 44 # xiaoaq 的帖子

你的 表示什么?想做EMD分解?
离散数据可以直接进行Hilbert变换求出幅值、相位进而求得频率,你仔细研究下过程。我上传一个Hilbert的程序给你参考,也是在论坛里面找到的。

页: 1 2 [3] 4 5
查看完整版本: 部分hlbert程序解读(toimage函数)