Загрузите файл данных, содержащий эхолокационный импульс, излучаемый большой коричневой битой (Eptesicus fuscus) и измеренный с интервалом дискретизации 7 микросекунд. Составьте расписание MATLAB ® с помощью сигнала и информации о времени.
load batsignal
t = (0:length(batsignal)-1)*DT;
sg = timetable(seconds(t)',batsignal);
Откройте Signal Analyzer и перетащите расписание из браузера Рабочей области в таблицу Сигнал. Щелкните Отобразить сетку (Display Grid ▼), чтобы создать два параллельных отображения. Выберите каждое отображение и нажмите кнопку Time-Frequency, чтобы добавить представление спектрограммы.
Перетащите расписание на обоих отображений.
Выберите вкладку Spectrogram. На отображении справа установите флажок «Переназначить». Для каждого отображения:
Установите разрешение по времени 280 микросекунд и задайте 85% перекрытия между смежными сегментами.
Используйте ползунок «Утечка», чтобы увеличить утечки до тех пор, пока RBW не составит около 4,5 кГц.
Установите пределы степени -45 дБ и -20 дБ.
Переназначенная спектрограмма четко показывает три частотно-временных гребней. Чтобы отследить гребни, выберите отображение справа. На вкладке Display нажмите Generate Script и выберите Spectrogram Script
. Скрипт появится в редакторе.
% Compute spectrogram % Generated by MATLAB(R) 9.7 and Signal Processing Toolbox 8.2. % Generated on: 26-Dec-2018 17:21:44 % Parameters timeLimits = seconds([0 0.002793]); % seconds frequencyLimits = [0 71428.57]; % Hz leakage = 0.9; timeResolution = 0.00028; % seconds overlapPercent = 85; reassignFlag = true; %% % Index into signal time region of interest sg_batsignal_ROI = sg(:,'batsignal'); sg_batsignal_ROI = sg_batsignal_ROI(timerange(timeLimits(1),timeLimits(2),'closed'),1); % Compute spectral estimate % Run the function call below without output arguments to plot the results [P,F,T] = pspectrum(sg_batsignal_ROI, ... 'spectrogram', ... 'FrequencyLimits',frequencyLimits, ... 'Leakage',leakage, ... 'TimeResolution',timeResolution, ... 'OverlapPercent',overlapPercent, ... 'Reassign',reassignFlag);
Запустите скрипт. Постройте график переназначенной спектрограммы.
mesh(seconds(T),F,P) xlabel('Time') ylabel('Frequency') axis tight view(2) colormap pink
Используйте tfridge
функция для отслеживания гребней.
[fridge,~,lridge] = tfridge(P,F,0.01,'NumRidges',3,'NumFrequencyBins',10); hold on plot3(seconds(T),fridge,P(lridge),':','linewidth',3) hold off
Спасибо Кертису Кондону, Кену Уайту и Аль Фенгу из Центра Бекмана при Университете Иллинойса за данные летучих мышей и разрешение использовать его в этом примере.