www.gusucode.com > signal 案例源码程序 matlab代码 > signal/TrackChirpsInAudioSignalExample.m
%% Track Chirps in Audio Signal % Load an audio signal that contains two decreasing chirps and a wideband % splatter sound. Compute the short-time Fourier transform. Divide the % waveform into 400-sample segments with 300-sample overlap. Plot the % spectrogram. % Copyright 2015 The MathWorks, Inc. load splat % To hear, type soundsc(y,Fs) sg = 400; ov = 300; spectrogram(y,sg,ov,[],Fs,'yaxis') colormap bone %% % Use the |spectrogram| function to output the power spectral density (PSD) % of the signal. [s,f,t,p] = spectrogram(y,sg,ov,[],Fs); %% % Track the two chirps using the |medfreq| function. To find the stronger, % low-frequency chirp, restrict the search to frequencies above 100 Hz and % to times before the start of the wideband sound. f1 = f > 100; t1 = t < 0.75; m1 = medfreq(p(f1,t1),f(f1)); %% % To find the faint high-frequency chirp, restrict the search to % frequencies above 2500 Hz and to times between 0.3 seconds and 0.65 % seconds. f2 = f > 2500; t2 = t > 0.3 & t < 0.65; m2 = medfreq(p(f2,t2),f(f2)); %% % Overlay the result on the spectrogram. Divide the frequency values by % 1000 to express them in kHz. hold on plot(t(t1),m1/1000,'linewidth',4) plot(t(t2),m2/1000,'linewidth',4) hold off