声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4885|回复: 20

[HHT] 关于HHT中的 toimage 函数

[复制链接]
发表于 2007-10-15 23:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
clear
fs=400;
tspan=2;
t=1/fs:1/fs:tspan;
N=length(t);
x1=sin(2*pi*20*t);
x2=0.4*sin(2*pi*40*t+140);
z=x1+x2;
y= linspace(1,2,800);%添加趋势项
z=z+y;
imf=emd(z);
[A,fa,tt]=hhspectrum(imf);
[im,tt1]=toimage(A,fa,tt,length(tt));
disp_hhs_lp(im);

如果把最后2行指令改为:
[im,tt1]=toimage(A,fa);
disp_hhs_lp(im);

图象就变了,纵坐标频率变了,图中的线条也变了,这是为什么呢?请高手指教指教啊
因为图片太大,所以上传不了

[ 本帖最后由 eight 于 2007-10-15 23:45 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-10-15 23:10 | 显示全部楼层

回复 #1 laughing 的帖子

这是HHT吧?兄弟,只能明天给你看了,我得下线了。先看看toimage这个函数

[ 本帖最后由 zhangnan3509 于 2007-10-15 23:12 编辑 ]
发表于 2007-10-15 23:26 | 显示全部楼层
本帖最后由 VibInfo 于 2016-11-8 14:21 编辑
原帖由 laughing 于 2007-10-15 23:08 发表
clear
fs=400;
tspan=2;
t=1/fs:1/fs:tspan;
N=length(t);
x1=sin(2*pi*20*t);
x2=0.4*sin(2*pi*40*t+140);
z=x1+x2;
y= linspace(1,2,800);%添加趋势项
z=z+y;
imf=emd(z);
[A,fa,tt]=hhspectrum(i ...

自己看看 toimage 的输入参数就知道了
发表于 2007-10-19 14:01 | 显示全部楼层
问楼主一个很弱的问题,运行你的程序的时候,运行到命令行
[im,tt1]=toimage(A,fa,tt,length(tt));
的时候总是有如下错误提示
  ??? Error: File: toimage.m Line: 59 Column: 1
  This statement is not inside any function.
(It follows the END that terminates the definition of the function "toimage".)

观察 toimage.m,发现  toimage.m Line: 59 Column: 1
对应着 命令行 lt=length(t);

请问是什么原因啊
发表于 2007-10-19 17:33 | 显示全部楼层

回复 #4 xhm790912 的帖子

在程序最末加一个end试试
发表于 2007-11-21 11:01 | 显示全部楼层
求助,画红笔的那几句,我看不出是什么意思啊,有谁能帮我解答一下哈
function [im,tt] = toimage(A,f,t,splx,sply)
% [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).
% 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;
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
   
lt=length(t);
im=[];
im(splx,sply) = 0;
for i=1:size(f,1)
  for j = 1:lt
    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)';
发表于 2008-8-13 21:01 | 显示全部楼层
同看不懂,高手快指点一下呀,谢!
发表于 2008-8-13 21:15 | 显示全部楼层
同看不懂啊,请高手指点,谢啦!
发表于 2010-3-29 19:55 | 显示全部楼层
本帖最后由 VibInfo 于 2016-11-8 14:22 编辑
原帖由 fengling_335 于 2007-11-21 11:01 发表
求助,画红笔的那几句,我看不出是什么意思啊,有谁能帮我解答一下哈
function  = toimage(A,f,t,splx,sply)
%  = TOIMAGE(A,f,t,splx,sply) transforms a spectrum made
% of 1D functions (e.g., output of "sp ...

请各位高人指点一下,我也是不懂这几句命令的意思?谢谢大家!!!
发表于 2010-4-21 16:05 | 显示全部楼层
im就是一个矩阵,其中的每个元素位置都有两个数,这两个数分别表示时间和瞬时频率,并且对应这两个数的位置上还有一个a值,im矩阵中的每一个位置上的情况都是如此,所以当im的任意位置上,当t和f相等的时候,就见他们对应的a值相加,也就是与谱图上的相同时间相同频率的幅值相加相吻合。
发表于 2010-4-21 16:36 | 显示全部楼层
对于toimage函数还是有一点不明白,程序中 ff=floor(f(i,j)*2*(sply-1))+1;
这样求出来的频率是介于0-400之间,是个什么频率呢,这样的频率与画出来的归一化频谱土的频率不一样啊  ?

评分

1

查看全部评分

发表于 2010-5-19 15:54 | 显示全部楼层
还是没有看懂
发表于 2010-5-23 09:03 | 显示全部楼层
本帖最后由 VibInfo 于 2016-11-8 14:22 编辑
原帖由 fengling_335 于 2007-11-21 11:01 发表
求助,画红笔的那几句,我看不出是什么意思啊,有谁能帮我解答一下哈
function  = toimage(A,f,t,splx,sply)
%  = TOIMAGE(A,f,t,splx,sply) transforms a spectrum made
% of 1D functions (e.g., output of "sp ...

请问大家,我想引用下面这个for循环,但是一点击引用,由于程序太长。就只能显示出程序的起始的那几行内容,要是想引用后面的语句,该怎么操作啊,我找了一下论坛上的内容,也没找到!!


for i = 1:splx
  tt(i) = mean(t(floor((i-1)*lt/(splx))+1:floor(i*lt/(splx))));
end
发表于 2010-5-23 09:04 | 显示全部楼层
不过还是要请教大家,这个for循环中的tt是根据什么来求的?

评分

1

查看全部评分

发表于 2010-12-1 16:14 | 显示全部楼层
还是解释的不清楚啊,哪位大侠给解释解释啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 04:19 , Processed in 0.081954 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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