边际谱
我的数据通过在线采集的.采样频率是22050;通过一段时间,我得到很多的数据150000;然后我就选取1:15000数据再EMD,边际谱.
N=15000;
如果按下面做
=hhspectrum(y);
=toimage(A,fa,tt,length(tt));
E=flipud(E);
for k=1:size(E,1)
bjp(k)=sum(E(k,:))*1/fs;
end
f=(0:N-3)/N*(fs/2);
plot(f,bjp);
xlabel('频率 / Hz');
ylabel('幅值');
那么得到的频率很不准确.(选择的数据多,频率就会变).所以我想请教下大家.像我这种情况怎么把频率准确转换为信号的实际频率.
谢谢 我到论坛上也找了好多帖子.但好象我没这样情况. 你的意思是把坐标轴上的归一化频率转化成实际频率吗 是啊
那样边际谱图出来就可以看见有哪些频率成分的信号 在disp—hhs这个程序中把imagesc(t,fliplr(),im,)改成imagesc(t,fliplr(),im,)就可以了 回复棒棒糖,你是用什么程序求边际谱的?我上面那求边际谱没有那个.
你能否贴个程序看看? 原帖由 li_1025tian 于 2008-11-21 11:21 发表 http://www.chinavib.com/forum/images/common/back.gif
回复棒棒糖,你是用什么程序求边际谱的?我上面那求边际谱没有那个.
你能否贴个程序看看?
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/fs,,im,);
ylabel('frequency')
end
set(gca,'YDir','normal')
xlabel('time')
title('Hilbert-Huang spectrum') 你这是求'Hilbert-Huang spectrum'的吧! li_1025tian 发表于 2008-11-26 09:53 static/image/common/back.gif
你这是求'Hilbert-Huang spectrum'的吧!
请问有无求实际信号边际谱程序?我用lz的算算例准确,但算实际复杂信号就只能得到一条中间机会为零的线
页:
[1]