Визуализация сигнала и измерения в MATLAB

Этот пример показывает, как визуализировать и измерить сигналы во временных и частотных диапазонах в MATLAB с помощью анализатора временных возможностей и спектра.

Визуализация сигнала во временных и частотных диапазонах

Создайте синусоиду с частотой 100 Гц, отобранную при 1000 Гц. Сгенерируйте пять секунд синусоиды 100 Гц с аддитивным$N(0,0.0025)$ белым шумом в интервалах одной секунды. Отправьте сигнал в возможности времени и анализатор спектра для отображения и измерения.

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 задается следующим уравнением:

$$\frac{60\,{\rm sec/min}}{0.675\,{\rm sec/beat}} =&#xA;88.89\,{\rm beats/min\,(bpm)}$$

Измерения курсора

Включите «Измерения курсора» на вкладке « Измерениях», нажав соответствующую кнопку на панели инструментов. Курсоры отображаются на возможностях с рамкой, показывающей изменение времени и значения между двумя курсорами. Можно перетащить курсоры и использовать их, чтобы измерить время между событиями в форме волны. При перетаскивании курсора время появления значения в курсоре. Этот рисунок показывает, как использовать курсоры для измерения временного интервала между peaks в форме волны ECG.$\Delta T$ Измерение в кубе курсора демонстрирует, что временной интервал между этими двумя пиками составляет 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 кГц. Добавьте$N(0,10^{-8})$ белый Гауссов шум к сумме синусоид и отобразите одностороннюю степень спектр в анализаторе спектра.

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.