// S. Ayrinhac (IMPMC) - 2025 function [tf,Ff,S]=Func_STFT(t,y,SizeT,StepT,typefenetre) // SizeT : taille de la fenêtre d'analyse // StepT : écart en temps entre 2 points d'analyse ('hop size') // typefenetre : fenêtre d'apodisation - chaine de caractères ('re', 'hn', 'hm', 'tr') tmax=max(t); tmin=min(t); deltat=abs(t(2)-t(1)); S=[]; tstep=tmin:StepT:tmax; M=floor(SizeT/deltat); // nombre de points de la fenetre t0=t; q=1; for i=1:length(tstep) y0=zeros(1:M); tstepi=tstep(i); T1=max(tstepi-SizeT/2,tmin); T2=min(tstepi+SizeT/2,tmax); ni=find((t>=T1)&(t<=T2)); tni=t(ni);tni=tni; yni=y(ni); Nni=length(yni); if Nni==M [F0,X0,Xc0]=Func_TF_fenetre(tni,yni-mean(yni),typefenetre); // durée plus petite donc résolution fréquentielle plus faible F=F0; // (1:M/2) X=X0; Xc=Xc0; Ff=F0; S=[S ; X]; tf(q)=mean(tni); // temps au milieu de la fenetre q=q+1; end end endfunction