Spectrogram windowing- why do the 2 methods generate different graphs?

Method 1 spectrogram(x,128,16,128,FS)
Method 2 w = window(@hamming,128); [S,F,T,P] = spectrogram(x,w,16,128,FS);
Since I cannot change the window type in method 1, I am using method 2. I would like to know why there is a BIG difference in the figures generated.

 Accepted Answer

That is a different question. The answer to that question is that calling spectrogram() with no output arguments is the same as providing the 'xaxis' option for FREQLOCATION (this is explained in the help).
That means that instead of having frequency on the y-axis as your second figure does and my figures too, you have frequency on the x-axis and time on the y-axis.

4 Comments

Ok. Is there any way to make the second figure more clear?
My aim is to compare the use of different windows for analysing the same signal.
Or any way to change the window type by using the first method as the first method outputs a clearer figure?
yes, you can manipulate the color axis by setting limits and or manipulating the color map. Also, you should overlap your windows more.
For example:
[S,F,T,P] = spectrogram(x,128,64,128,FS);
surf(T,F,10*log10(P),'edgecolor','none'); axis tight;
view(0,90); caxis([-90 5])

Sign in to comment.

More Answers (2)

Are you sure you are using MathWorks' version of spectrogram() and/or hamming()? Because I see no difference at all (and there should not be)
x = randn(1000,1);
FS = 1;
w = window(@hamming,128); [S,F,T,P] = spectrogram(x,w,16,128,FS);
[S1,F1,T1,P1] = spectrogram(x,128,16,128,FS);
isequal(S,S1) % returns a 1
isequal(P,P1) % also returns a 1
If you enter
>>which spectrogram
and
>>which hamming
Do you get paths that end in:
matlab\toolbox\signal\signal

2 Comments

I am using the spectrogram function but in the documentation it is said that hamming is the default window. Hence I tried to reproduce it using the second function. Here are my codes:
clear all; FS = 100; w1=2; w2=5; w3=40; i=1; for t=0:1/FS:10
if t<=2
x(i)=5*sin(2*pi*w1*t);
end
if (t>2)&& (t<=4)
x(i)=2*sin(2*pi*w2*t);
end
if (t>4)&& (t<=10)
x(i)=sin(2*pi*w3*t);
end
i=i+1;
end
%Method 1
%spectrogram(x,128,16,128,FS)
%Method 2
w = window(@hamming,128);
[S,F,T,P] = spectrogram(x,w,16,128,FS);
figure
surf(T,F,10*log10(P),'edgecolor','none'); axis tight;
view(0,90);
On typing which spectrogram I get: C:\Program Files\MATLAB\R2012a\toolbox\signal\signal\spectrogram.m and on typing which hamming I get C:\Program Files\MATLAB\R2012a\toolbox\signal\signal\hamming.m

Sign in to comment.

Here I use your signal and they are identical:
FS = 100;
w1=2; w2=5; w3=40;
t=0:1/FS:10;
dt = 1/FS;
x = zeros(size(t));
idx1 = 2/dt+1;
idx2 = idx1+1:(4/dt+1);
idx3 = (4/dt+2):length(t);
x(1:idx1) = 5*sin(2*pi*w1*t(1:idx1));
x(idx2) = 2*sin(2*pi*w2*t(idx2));
x(idx3) = sin(2*pi*w3*t(idx3));
w = window(@hamming,128); [S,F,T,P] = spectrogram(x,w,16,128,FS);
[S1,F1,T1,P1] = spectrogram(x,128,16,128,FS);
isequal(S,S1) % returns a 1
isequal(P,P1) % also returns a 1
figure
surf(T,F,10*log10(P),'edgecolor','none'); axis tight;
view(0,90);
figure
surf(T,F,10*log10(P1),'edgecolor','none'); axis tight;
view(0,90);
And yes Hamming is the default window.

4 Comments

I'm not an experienced MATLAB user and I'm not sure what you there: idx1 = 0.2/dt+1; idx2 = idx1+1:(0.4/dt+1); idx3 = (0.4/dt+2):length(t);
Also on using my code: spectrogram(x,128,16,128,FS) I get a figure showing the regions of low and high amplitude clearly and the change in time and frequency as seen in the figure attached. I get a very blurry spectrogram using your code.
I did not worry about optimizing the spectrogram. Your post was that the two function calls produce different results. They do not.
Sorry I made a mistake in the cutoff times, I used 0.2 and 0.4 instead of 2 and 4. I corrected it above and I plotted the results. The figures are identical.
Ok, maybe I worded my question wrongly
On using the following lines: w = window(@hamming,128); [S,F,T,P] = spectrogram(x,w,16,128,FS); figure surf(T,F,10*log10(P),'edgecolor','none'); axis tight; view(0,90);
I get the figure below. I wanted to know why it's different to the figure above.
Ignoring the swap in axes of course as that can be easily fixed.

Sign in to comment.

Asked:

Win
on 28 Nov 2013

Commented:

Win
on 28 Nov 2013

Community Treasure Hunt

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

Start Hunting!