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