Загрузите файл данных, содержащий импульс эхолотирования, испускаемый большой коричневой битой (Eptesicus fuscus) и измеренный с интервалом выборки 7 микросекунд. Создайте расписание MATLAB® с помощью сигнала и информации времени.
load batsignal
t = (0:length(batsignal)-1)*DT;
sg = timetable(seconds(t)',batsignal);
Откройте Signal Analyzer и перетащите расписание от браузера Рабочей области до таблицы Signal. Нажмите 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
Благодаря Кертису Кондону, Кену Вайту и Аль Фэну из Центра Бекмана в Университете Иллинойса для bat данных и разрешения использовать его в этом примере.