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的程序给你参考,也是在论坛里面找到的。