Question

Consider the following example:

Fs = 40;% sampling frequency
x = 0:(1/Fs):4;% time domain
y = [sin(2 * pi * 5 * x(x <= 2)), sin(2 * pi * 10 * x(x > 2))];% signal

    N = length(x);                     % Length of signal

    NFFT = 2^nextpow2(N); % Next power of 2 from length of y
    Y = fft(y,NFFT)/N;
    f = Fs/2*linspace(0,1,NFFT/2+1);

    % Generate the plot, title and labels.
    fh = figure(1);
    % set(fh,'color','white','visible','off');
    subplot(311);
    plot(x,y,'k');
    xlabel('Time (s)','FontName','Times New Roman','fontsize',10);
    ylabel('Amplitude','FontName','Times New Roman','fontsize',10);
    set(gca,'FontName','Times New Roman','fontsize',10);

    % # Frequency domain plots
    subplot(312);
    plot(f,2*abs(Y(1:NFFT/2+1))) 
    xlabel('Frequency (cycles/second)','FontName','Times New Roman','fontsize',10);
    ylabel('Amplitude','FontName','Times New Roman','fontsize',10);
    set(gca,'FontName','Times New Roman','fontsize',10);

    subplot(313);
    window = x(1:10:end);
    [S,F,T] = spectrogram(y,window);
    pcolor(T,F,abs(S));shading interp;
    xlabel('Time (s)');
    ylabel('Frequency (cycles/second)');

The STFT (short-time Fourier transform) here does not demonstrate what I expected. I would have expected the y axis to be the same as the xaxis in subplot(312) and the xaxis to be the same as the xaxis in subplot(311).

Was it helpful?

Solution

The issue with the x axis is because you are not specifying the sample frequency when calling spectrogram. Try

[S,F,T] = spectrogram(y,window,[],[],Fs);

Also, I think you are misinterpreting the window argument. It refers to window shape (by the way you define it, maybe you are thinking it defines the window positions?). So I would use something like

window = ones(1,10);

(or try window shapes other than rectangular).

As for the y axis, in 313 the y axis is (instantaneous) frequency, whereas in 312 it is spectral amplitude. So they are not comparable. In principle, you could compare the color (z axis) of 313 with the y axis of 312, as both are spectral amplitude; however, their normalization is probably different.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top