Найдите и отследите гребни Используя переприсвоенную спектрограмму

Загрузите файл данных, содержащий импульс эхолотирования, испускаемый большой коричневой битой (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 данных и разрешения использовать его в этом примере.

Смотрите также

Приложения

Функции