Этот пример показывает, как визуализировать и измерить сигналы во временных и частотных диапазонах в MATLAB с помощью анализатора временных возможностей и спектра.
Создайте синусоиду с частотой 100 Гц, отобранную при 1000 Гц. Сгенерируйте пять секунд синусоиды 100 Гц с аддитивным белым шумом в интервалах одной секунды. Отправьте сигнал в возможности времени и анализатор спектра для отображения и измерения.
SampPerFrame = 1000; Fs = 1000; SW = dsp.SineWave('Frequency', 100, ... 'SampleRate', Fs, 'SamplesPerFrame', SampPerFrame); TS = timescope('SampleRate', Fs, 'TimeSpanSource','property', ... 'TimeSpan', 0.1, 'YLimits', [-2, 2], 'ShowGrid', true); SA = dsp.SpectrumAnalyzer('SampleRate', Fs); tic; while toc < 5 sigData = SW() + 0.05*randn(SampPerFrame,1); SA(sigData); TS(sigData); end release(TS) release(SA)
Используя временных возможностей, можно сделать ряд измерений сигнала.
Доступны следующие измерения:
Cursor Measurements - устанавливает экранные курсоры на всех отображениях возможностей.
Signal Statistics - отображает максимальное, минимальное, пиковое различие, среднее, медианное, значения RMS выбранного сигнала и время, в которое происходят максимальное и минимальное.
Bilevel Measurements - отображает информацию о переходах, аберрациях и циклах выбранного сигнала.
Peak Finder - отображает максимумы и время, в которое они происходят.
Можно включить и отключить эти измерения на вкладке Measurements.
Чтобы проиллюстрировать использование измерений во временных возможностях, моделируйте сигнал ECG. Используйте ecg
функция для генерации 2700 выборок сигнала. Используйте фильтр Савицкого-Голая, чтобы сглаживать сигнал и периодически расширять данные, получая приблизительно 11 периодов.
x = 3.5*ecg(2700).'; y = repmat(sgolayfilt(x,0,21),[1 13]); sigData = y((1:30000) + round(2700*rand(1))).';
Отобразите сигнал во временной области и используйте измерения Peak Finder и Data Cursor. Примите частоту дискретизации 4 кГц.
TS_ECG = timescope('SampleRate', 4000, ... 'TimeSpanSource', 'Auto', 'ShowGrid', true); TS_ECG(sigData); TS_ECG.YLimits = [-4, 4];
Пиковые измерения
Включите Пиковые измерения (Peak Measurements) на вкладке Измерения (Measurements), нажав соответствующую кнопку панели инструментов. Панель Peaks появится в нижней части окна временных возможностей. Для свойства Num Peaks введите 8
и нажмите Enter.На панели Peaks во временных возможностях отображается список из 8 пиковых значений амплитуды и времени, в которое они происходят.
Существует постоянное различие во времени 0,675 секунд между каждым сердцебиением. Поэтому частота сердечных сокращений сигнала ECG задается следующим уравнением:
Измерения курсора
Включите «Измерения курсора» на вкладке « Измерениях», нажав соответствующую кнопку на панели инструментов. Курсоры отображаются на возможностях с рамкой, показывающей изменение времени и значения между двумя курсорами. Можно перетащить курсоры и использовать их, чтобы измерить время между событиями в форме волны. При перетаскивании курсора время появления значения в курсоре. Этот рисунок показывает, как использовать курсоры для измерения временного интервала между peaks в форме волны ECG. Измерение в кубе курсора демонстрирует, что временной интервал между этими двумя пиками составляет 0,675 секунд, что соответствует частоте сердечных сокращений 1,482 Гц или 88,9 ударов/мин.
Статистика сигналов и измерения Билевеля
Можно также выбрать Signal Statistics и различные двусторонние измерения на вкладке Measurements. Signal Statistics может использоваться, чтобы определить минимальные и максимальные значения сигнала, а также другие метрики, такие как значения peak-to-peak, mean, median и RMS. Измерения Билевеля могут использоваться, чтобы определить информацию о подъеме и падении переходов, аберрациях перехода, информации о перерегулировании и недорегулировании, времени урегулирования, ширине импульса и коэффициенте заполнения. Дополнительные сведения об этих измерениях см. в разделе Настройка объекта MATLAB Time Scope.
В этом разделе объясняется, как выполнить измерения частотного диапазона с помощью спектрального анализатора.
Спектральный анализатор обеспечивает следующие измерения:
Cursor Measurements - устанавливает курсоры на отображение спектра.
Peak Finder - отображает максимумы и частоты, на которых они происходят.
Измерения канала - отображает занимаемую полосу пропускания и измерения канала ACPR.
Измерения искажения - отображает измерения искажений гармоник и интермодуляций.
CCDF Measurements - отображает комплементарные кумулятивные измерения распределения функции.
Можно включить и отключить эти измерения на панели инструментов анализатора спектра или в меню Tools > Measurements.
Измерения искажений
Чтобы проиллюстрировать использование измерений с помощью анализатора спектра, создайте синусоиду 2,5 кГц, отобранный с частотой 48 кГц с аддитивным белым Гауссовым шумом. Вычислите полином высокого порядка (9-я степень) при каждом значении сигналов, чтобы смоделировать нелинейное искажение. Отобразите сигнал в анализаторе спектра.
Fs = 48e3; SW = dsp.SineWave('Frequency', 2500, ... 'SampleRate', Fs, 'SamplesPerFrame', SampPerFrame); SA_Distortion = dsp.SpectrumAnalyzer('SampleRate', Fs, ... 'PlotAsTwoSidedSpectrum', false); y = [1e-6 1e-9 1e-5 1e-9 1e-6 5e-8 0.5e-3 1e-6 1 3e-3]; tic; while toc < 5 x = SW() + 1e-8*randn(SampPerFrame,1); sigData = polyval(y, x); SA_Distortion(sigData); end clear SA_Distortion;
Включите измерения гармонических искажений, щелкнув соответствующий значок на панели инструментов или выбрав элемент меню «Сервис» > «Измерения» > «Искажение измерений». В разделе Измерений искажений» измените значение параметра «Число гармоник» на 9 и установите флажок «Harmonics Label». На панели вы видите значение основной частоты близкой к 2500 Гц и 8 гармоник, а также их значения ОСШ, SINAD, THD и SFDR, которые привязаны относительно основной выходной степени.
Пик Поиска
Можно отслеживать изменяющиеся во времени спектральные компоненты с помощью диалогового окна Peak Finder measurement. Вы можете показать и опционально пометить до 100 peaks. Можно вызвать диалоговое окно Peak Finder из меню Измерений Tools > элементом > Peak Finder или щелкнув соответствующий значок на панели инструментов.
Чтобы проиллюстрировать использование Peak Finder, создайте сигнал, состоящий из суммы трёх синусоид с частотами 5, 15 и 25 кГц и амплитудами 1, 0,1 и 0,01 соответственно. Данные отбираются со скоростью 100 кГц. Добавьте белый Гауссов шум к сумме синусоид и отобразите одностороннюю степень спектр в анализаторе спектра.
Fs = 100e3; SW1 = dsp.SineWave(1e0, 5e3, 0, 'SampleRate', Fs, 'SamplesPerFrame', SampPerFrame); SW2 = dsp.SineWave(1e-1, 15e3, 0, 'SampleRate', Fs, 'SamplesPerFrame', SampPerFrame); SW3 = dsp.SineWave(1e-2, 25e3, 0, 'SampleRate', Fs, 'SamplesPerFrame', SampPerFrame); SA_Peak = dsp.SpectrumAnalyzer('SampleRate', Fs, 'PlotAsTwoSidedSpectrum', false); tic; while toc < 5 sigData = SW1() + SW2() + SW3() + 1e-4*randn(SampPerFrame,1); SA_Peak(sigData); end clear SA_Peak;
Включите Peak Finder, чтобы пометить три частоты синусоид. Значения частоты и степеней в дБм отображаются на панели Peak Finder. Можно увеличить или уменьшить максимальное количество peaks, задать минимальное пиковое расстояние и изменить другие настройки на панели «Параметры» панели Измерения Peak Finder.
Чтобы узнать больше об использовании измерений с помощью анализатора спектра, смотрите пример Спектра Analyzer Measurements.