spectrogram和fft的关系
%%
close all;clear;clc;
fs=1000;
f0=200;
k=0:1/fs:10;
s = sin(2*pi*f0*k);
windowLen = 1024;
s1 = s(1:windowLen);
%% 1.spectrogram
[S, F, T] = spectrogram(s1, windowLen, windowLen/2, windowLen, fs);
p1 = abs(S).^2/windowLen;
P1 = 10*log(p1);
%% 2.fft
S = fft(s1,windowLen);
p2 = abs(S).^2/windowLen;
P2 = 10*log(p2(1:windowLen/2+1)');
%% 3.pwelch
[p3,f3] = pwelch(s1,windowLen,windowLen/2,windowLen);
P3 = 10*log(p3);
%% 4.cpsd
P4 = zeros(size(P1));
%% 对比
P = table(P1,P2,P3,P4,P3-P1,P3-P2,P3-P4);
P.Properties.VariableNames = {'spectrogram';'fft';'pwelch';'cpsd';'err-spectrogram';'err-fft';'err-cpsd'};