How to set yaxis equal to each other in a subplot of two scalograms made from two different Motherwavelet?

1 view (last 30 days)
Hi I am trying to subplot two scalograms made from two different mother wavelets (and therefore with two different center frequencies and scales-to-frequency ratios). I have converted the y axis to pseudo-frequencies and am now trying to set the y limits for each plot to have the same span. How do I manipulate the y axis so that the ymin and ymax are the same for both plots but the images (the scalograms) must correspond to the values of the pseudo-frequencies?
Any help is greatly appreciated Thank you - Katrine

Accepted Answer

Wayne King
Wayne King on 23 May 2012
OK, so explain to me what is wrong with this. Yes, of course you will have to use different scale vectors for different mother wavelets if you really want to line the pseudo-frequencies up as much as possible. Also you may only care about them having the same range over a part of your frequency interval.
t = linspace(0,5,5e3);
x = cos(2*pi*100*t).*(t<1)+cos(2*pi*50*t).*(3<t)+0.3*randn(size(t));
COEFS1 = cwt(x,1:32,'cgau4');
F1 = scal2frq(1:32,'cgau4',0.001);
scgaus = wscalogram('[]',COEFS1,'scales',1:32, 'ydata', x);
COEFS2 = cwt(x,1.6:55,'morl');
F2=scal2frq(1.6:55,'morl',0.001);
scmorl=wscalogram('[]',COEFS2,'scales',1.6:55, 'ydata', x);
subplot(211)
mesh(t,F1,scgaus);
view(0,90)
set(gca,'ylim',[15 200])
title('Complex Gaussian Wavelet');
subplot(212)
mesh(t,F2,scmorl);
view(0,90)
set(gca,'ylim',[15 200])
title('Morlet Wavelet');

More Answers (1)

Wayne King
Wayne King on 22 May 2012
Hi Katrine, Have you tried
set(gca,'ylim',[minfreq maxfreq])
So something like:
t = linspace(0,5,5e3);
x = cos(2*pi*100*t).*(t<1)+cos(2*pi*50*t).*(3<t)+0.3*randn(size(t));
COEFS = cwt(x,1:32,'cgau4');
F = scal2frq(1:32,'cgau4',0.001);
sc = wscalogram('[]',COEFS,'scales',1:32);
mesh(t,F,sc); view(0,90); set(gca,'ylim',[15 250]);
xlabel('Time'); ylabel('Hz');
  4 Comments
Katrine
Katrine on 23 May 2012
Sorry for the bad explanation. In the following example I would like to have the same y-axis span for both plots in the subplots.
t = linspace(0,5,5e3);
x = cos(2*pi*100*t).*(t<1)+cos(2*pi*50*t).*(3<t)+0.3*randn(size(t));
COEFS1 = cwt(x,1:32,'cgau4');
F1 = scal2frq(1:32,'cgau4',0.001);
scgaus = wscalogram('[]',COEFS1,'scales',1:32, 'ydata', x);
COEFS2 = cwt(x,1:32,'morl');
F2=scal2frq(1:32,'morl',0.001);
scmorl=wscalogram('[]',COEFS2,'scales',1:32, 'ydata', x);
subplot(211)
imagesc(t,[],scgaus)
indices = get(gca,'ytick');
set(gca,'yticklabel',F1(indices));
subplot(212)
imagesc(t,[],scmorl)
indices = get(gca,'ytick');
set(gca,'yticklabel',F2(indices));
But this seems not to be possible because of the difference in center frequency and therefore in the relation of scales and pseudo-frequencies.
Thank you very much for all your help

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!