Why do I receive an error when I use the SPECTROGRAM function if the length of the window is equal to the signal length in Signal Processing Toolbox 6.13 (R2010a)? I try to plot the spectrogram of a signal using the following code (data file attached): load emg; x = emg; lenx = length(x); window = ones(1, lenx); nfft = lenx/8; fs = 1000; noverlap = 32; F = [1:1:fs/2]; spectrogram(x,window,noverlap,F,fs) The error I receive is the following: ??? Error using ==> surf at 78 Z must be a matrix, not a scalar or vector. Error in ==> spectrogram>displayspectrogram at 250 hndl = surf(args{:},'EdgeColor','none'); Error in ==> spectrogram at 184 displayspectrogram(t,f,Pxx,isFsnormalized,faxisloc);
Kshitij Singh answered .
2025-11-20
T = 0:0.001:2;
X = chirp(T,100,1,200,'q');
[S, F, T, P] = spectrogram(X,128,120,128,1E3);
imagesc(F, T(1), 10*log10(P(:,1).'));
axis xy; axis tight;
xlabel('Frequency (Hz)');
ylabel('Time');
title('Quadratic Chirp');