Визуализация интерференционного узкополосного сигнала, встроенного в широкополосный сигнал.
Сгенерируйте щебет, дискретизированный с частотой дискретизации 1 кГц в течение 500 секунд. Частота щебета увеличивается со 180 Гц до 220 Гц во время измерения.
fs = 1000; t = (0:1/fs:500)'; x = chirp(t,180,t(end),220) + 0.15*randn(size(t));
Сигнал также содержит синусоиду 210 Гц. Синусоида имеет амплитуду 0,05 и присутствует только в течение 1/6 от общей длительности сигнала.
idx = floor(length(x)/6); x(1:idx) = x(1:idx) + 0.05*cos(2*pi*t(1:idx)*210);
Сохраните сигнал как расписание MATLAB ®.
S = timetable(seconds(t),x);
Откройте Signal Analyzer и перетащите расписание из браузера Рабочей области на отображение. Нажмите кнопку Time-Frequency, чтобы добавить представление спектрограммы. На вкладке Spectrogram, в разделе Time Resolution, выберите Specify и введите разрешение по времени 1 секунду. Установите пределы частоты 100 Гц и 290 Гц. Оба компонентов сигнала видны.
Вернитесь на вкладку Отображение. Нажмите кнопку Time, чтобы удалить представление времени и нажмите кнопку Spectrum, чтобы добавить представление спектра степени. Частотная область значений продолжает составлять от 100 Гц до 290 Гц. Слабая синусоида заслоняется щебетом.
Нажмите кнопку Спектра ▼, чтобы изменить Spectrum
вид на Persistence Spectrum
посмотреть. На вкладке Спектр, в разделе Time Resolution, выберите Specify и введите разрешение по времени 1 секунду. Задайте нулевое перекрытие между смежными сегментами. Установите пределы степени в -50 дБ и 0 дБ, а пределы плотности в 0.1 и 4. Теперь четко видны оба компонентов сигнала.
На вкладке Display, в разделе Share, нажмите Generate Script ▼ и выберите Persistence Spectrum Script
. Скрипт появляется в редакторе MATLAB.
% Compute persistence spectrum % Generated by MATLAB(R) 9.7 and Signal Processing Toolbox 8.2. % Generated on: 26-Dec-2018 16:07:45 % Parameters timeLimits = seconds([0 500]); % seconds frequencyLimits = [100 290]; % Hz timeResolution = 1; % seconds overlapPercent = 0; %% % Index into signal time region of interest S_x_ROI = S(:,'x'); S_x_ROI = S_x_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,PWR] = pspectrum(S_x_ROI, ... 'persistence', ... 'FrequencyLimits',frequencyLimits, ... 'TimeResolution',timeResolution, ... 'OverlapPercent',overlapPercent);