li_1025tian 发表于 2008-11-20 11:23

边际谱

我的数据通过在线采集的.采样频率是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('幅值');
那么得到的频率很不准确.(选择的数据多,频率就会变).所以我想请教下大家.像我这种情况怎么把频率准确转换为信号的实际频率.
谢谢

li_1025tian 发表于 2008-11-20 11:25

我到论坛上也找了好多帖子.但好象我没这样情况.

棒棒糖 发表于 2008-11-20 12:02

你的意思是把坐标轴上的归一化频率转化成实际频率吗

li_1025tian 发表于 2008-11-20 12:23

是啊
那样边际谱图出来就可以看见有哪些频率成分的信号

棒棒糖 发表于 2008-11-20 22:46

在disp—hhs这个程序中把imagesc(t,fliplr(),im,)改成imagesc(t,fliplr(),im,)就可以了

li_1025tian 发表于 2008-11-21 11:21

回复棒棒糖,你是用什么程序求边际谱的?我上面那求边际谱没有那个.
你能否贴个程序看看?

baobao1982 发表于 2008-11-26 09:29

原帖由 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')

li_1025tian 发表于 2008-11-26 09:53

你这是求'Hilbert-Huang spectrum'的吧!

夏晓 发表于 2013-5-24 16:42

li_1025tian 发表于 2008-11-26 09:53 static/image/common/back.gif
你这是求'Hilbert-Huang spectrum'的吧!

请问有无求实际信号边际谱程序?我用lz的算算例准确,但算实际复杂信号就只能得到一条中间机会为零的线
页: [1]
查看完整版本: 边际谱