声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: qqzhouqianziyi

[HHT] 部分hlbert程序解读(toimage函数)

  [复制链接]
发表于 2011-3-24 12:29 | 显示全部楼层
回复 30 # qqzhouqianziyi 的帖子

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

% [im,tt] = 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 : [im,tt] = toimage(A,f);[im,tt] = toimage(A,f,t);[im,tt] = toimage(A,f,sply);
%              [im,tt] = toimage(A,f,splx,sply);[im,tt] = 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)';
回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2011-3-24 16:42 | 显示全部楼层
回复 31 # lk677976 的帖子

你这个程序我也看不懂  这程序本身格式什么的好像就有错误吧
 楼主| 发表于 2011-3-24 16:56 | 显示全部楼层
回复 25 # chenlu1986 的帖子

你好 你能把hhspectrum, disp_hhs,  toimage这三个函数源程序给我一下么
发表于 2011-3-24 18:49 | 显示全部楼层
回复 33 # qqzhouqianziyi 的帖子

就在我上传的工具箱里面有个utils文件夹里是各个M函数。
3个函数.rar (2.58 KB, 下载次数: 33)
 楼主| 发表于 2011-3-24 19:21 | 显示全部楼层
本帖最后由 qqzhouqianziyi 于 2011-3-24 20:03 编辑

回复 34 # chenlu1986 的帖子

我那几个函数跟你的是一样的  为什么就是运行不出来呢  能加下你qq么
 楼主| 发表于 2011-3-24 20:02 | 显示全部楼层
回复 29 # lk677976 的帖子

我的qq号:1572357620  大家共同学习啊 呵呵
发表于 2011-3-25 15:25 | 显示全部楼层
回复 13 # chenlu1986 的帖子

麻烦作者把你这个程序在MATLAB中再运行一下,我得到的HT谱时间轴的确是采样点数不是时间。谢谢啦!
发表于 2011-3-25 18:20 | 显示全部楼层
回复 37 # 王晓华 的帖子

程序运行无误   
发表于 2011-3-25 21:45 | 显示全部楼层
回复 38 # chenlu1986 的帖子

我也很郁闷,为什么我做出来的就不是时间是点数。。。。。。压力很大啊!
发表于 2011-3-25 22:02 | 显示全部楼层
回复 38 # chenlu1986 的帖子

难道是你的toimage函数做过修改吗?
发表于 2011-3-25 22:15 | 显示全部楼层
回复 38 # chenlu1986 的帖子

你好,你能不能把你做HHT变换的工具箱传上来我想用你的工具箱试试。
发表于 2011-3-26 12:33 | 显示全部楼层
回复 41 # 王晓华 的帖子

19楼我上传有EMD工具箱。
我当时大概、似乎、可能是修改了里面某参数吧,现在也忘了。
你可以下载安装我的那个。:@L
发表于 2011-3-26 23:52 | 显示全部楼层
chenlu1986 您好:
麻烦告诉我,如果数据是离散的测试数据如:[1,4,2,6,。。。。]程序怎改呀。谢谢
发表于 2011-3-26 23:53 | 显示全部楼层
chenlu1986 一定要帮我呀
发表于 2011-3-27 09:20 | 显示全部楼层
回复 44 # xiaoaq 的帖子

你的[1,4,2,6,。。。。] 表示什么?想做EMD分解?
离散数据可以直接进行Hilbert变换求出幅值、相位进而求得频率,你仔细研究下过程。我上传一个Hilbert的程序给你参考,也是在论坛里面找到的。 希尔伯特变换.txt (528 Bytes, 下载次数: 69)

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-27 16:14 , Processed in 0.132021 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表