2015-06-19 4 views
0

Я попытался генерируя конус влияния на вейвлет-спектра мощности Морле, используя следующий MATLAB код:Plotting конус влияния в Морле вейвлета спектра мощности в MATLAB

cone = conofinf('morl',1:365,LenSig,[],'plot'); 

Однако, все это я получаю странное смотрит затененной площадь, ограниченная двумя линейными линиями. Он не похож на конус влияния на спектр мощности всплеска Морлета.

Что я сделал не так?

+0

К сожалению, здесь мы только знаем, как бороться с Конусом Silence –

+0

Я хотел, чтобы загрузить изображение, показывающее выход фигуры на моем но у меня не было достаточно очков репутации для этого. Я загрузил вывод на http://postimg.org/image/jhc1bnzf3/, если это полезно. Похоже, что линейные линии являются частью некоторых y-перехватов конуса влияния. – electroniclearner

ответ

1

Я думаю, вы хотели вывести COI на границах вашего вейвлет-преобразования. В этом случае вы должны указать последний параметр как непустой вектор, но с координатами, где вам нужно вычислить COI, например.

cone = conofinf('morl',1:365,LenSig,[1 LenSig],'plot');

У меня была похожая задача, и вот что я сделал:

figure; 

% plot wavelet transform/scalogram 
imagesc(t,scales,WT); 
axis square; 
colorbar; 

% annotate axes and title 
title('Coefficients of continuous wavelet transform'); 
xlabel('Time (or space) b'); 
ylabel('Scales a'); 

% get cone of influence 
% Here, you have to specify points at which you want to calculate COI 
% as the last parameter: 
cone = conofinf(wname,scales,LenSig,[1 LenSig]); 
% combine left and right edges 
cone = [cone{1}(:,floor(1:LenSig/2)) cone{2}(:,ceil(LenSig/2):end)]; 
% previous steps give you an area under COI 
% you can see it with: figure; imagesc(cone); 
% now, we want to get the border of this area 
coi = zeros(1,LenSig); 
for idx = 1:LenSig 
    valcoi = find(cone(:,idx)==1,1,'last'); 
    if ~isempty(valcoi) 
     coi(idx) = f(valcoi); 
    end 
end 
% now plot COI border on top of your wavelet transform 
hold on; 
plot(t,coi,'k','LineWidth',1.5); 
hold off; 

При желании, вы можете люк площадь под ИСП, но это немного рубить и он не идеален. Для этого вам понадобится hatchfill function (здесь example как его использовать). После того как вы эта функция на вашем пути, вы можете использовать его как это:

[~,h] = contourf(t,scales,cone*max(WT(:)),[1 1]*max(WT(:))); 
hPatch = findobj(h, 'Type', 'patch'); 
hh = hatchfill(hPatch, 'cross', 45, 10); 
Смежные вопросы