Я считаю, что они вычисляются немного по-разному в каждой функции. Это лучшее, что я мог получить:
sig = rand(1280,1);
Fs = 2;
nfft = 256;
numoverlap = 128;
window = hanning(nfft);
%# specgram
subplot(121), specgram(sig,nfft,Fs,window,numoverlap)
%# spectrogram: make it look like specgram
[S,F,T,P] = spectrogram(sig,window,numoverlap,nfft,Fs);
subplot(122), imagesc(T, F, 20*log10(P))
axis xy, colormap(jet), ylabel('Frequency')