exponenta event banner

Измерение импульсных и переходных характеристик потоковых сигналов

В этом примере измеряются импульсные и переходные метрики шумного прямоугольного импульса. Метрики импульса включают в себя время нарастания, время падения, длительность импульса и период импульса. Метрики перехода включают в себя события среднего пересечения, переполнение и недоделку областей аберрации после перехода шумного прямоугольного импульса.

Создание прямоугольного импульса

Создайте шумный прямоугольный импульс. Шум представляет собой белый гауссов шум с нулевым средним значением и стандартным отклонением 0,1. Сохранить данные в rectData.

t = 0:.01:9.99;   % time vector 
w = 1; % pulse width
d = w/2:w*2:10; % delay vector
y2 = pulstran(t,d,'rectpuls',w); 
rectData = y2'+0.1*randn(1000,1); % rectangular pulse with noise
plot(rectData);
xlabel('Samples');
ylabel('Level (volts)');

Figure contains an axes. The axes contains an object of type line.

Измерить уровни состояния

dsp.StateLevels Системный объект использует метод гистограммы для оценки уровней состояния двухуровневого сигнала. Способ гистограммы включает следующие этапы:

  1. Определите максимальную и минимальную амплитуды данных.

  2. Для заданного количества ячеек гистограммы определите ширину ячейки, которая является отношением диапазона амплитуд к количеству ячеек.

  3. Сортировка значений данных в ячейки гистограммы.

  4. Определите самую низкую индексированную ячейку гистограммы и самую высокую индексированную ячейку гистограммы с ненулевыми счетчиками.

  5. Разделить гистограмму на две субгистограммы.

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

Постройте график уровней состояния прямоугольного импульса.

sLevel = dsp.StateLevels;
levels = sLevel(rectData);
figure(1);
plot(sLevel);

Figure State Level Information contains 2 axes. Axes 1 with title Histogram of signal levels (100 bins) contains an object of type line. Axes 2 with title Signal contains 3 objects of type line.

Вычислительные импульсные метрики

Использование dsp.PulseMetrics Системный объект позволяет вычислить такие метрики, как время нарастания, время падения, длительность импульса и период импульса прямоугольного импульса. Постройте график импульса с уровнями состояния и эталонными уровнями.

pMetrics = dsp.PulseMetrics('StateLevels',levels,'CycleOutputPort',true);
[pulse,cycle] = pMetrics(rectData);
plot(pMetrics);
xlabel('Samples');

Figure PulseMetrics information contains an axes. The axes contains 12 objects of type line. These objects represent signal, +cross, -cross, upper boundary, upper state, lower boundary, upper reference, mid reference, lower reference, lower state.

Время нарастания - это длительность между моментами, когда восходящий переход каждого импульса пересекает нижний и верхний опорные уровни. Просмотр времени нарастания каждого импульса.

pulse.RiseTime
ans = 4×1

    0.8864
    0.8853
    1.6912
    1.7727

Время падения - это длительность между моментами, когда переход падения каждого импульса пересекает верхний и нижний опорные уровни. Просмотр времени падения каждого импульса.

pulse.FallTime
ans = 4×1

    2.4263
    0.7740
    1.7339
    0.9445

Ширина - это длительность между пересечениями среднего опорного уровня первого и второго переходов каждого импульса. Просмотр ширины каждого импульса.

pulse.Width
ans = 4×1

   99.8938
  100.0856
  100.1578
  100.1495

Период - это длительность между первым переходом импульса тока и первым переходом следующего импульса. Просмотр периода каждого импульса.

cycle.Period
ans = 3×1

  199.9917
  199.9622
  199.9291

Полярность

Polarity имущества pMetrics объект имеет значение 'Positive'. Следовательно, объект вычисляет метрики импульсов, начиная с первого положительного перехода.

Выполнение метрик

Если RunningMetrics свойство имеет значение trueобъект обрабатывает данные как непрерывный поток выполняемых данных. Если в конце имеется неполный импульс, объект возвращает метрики последнего импульса на следующем этапе процесса, как только у него будет достаточно данных для завершения импульса. Если RunningMetrics свойство имеет значение false, объект обрабатывает каждый вызов независимо. Если последний импульс является неполным, объект вычисляет все метрики, которые он может вернуть с доступными данными. Например, если импульс наполовину завершен, объект может возвратить время нарастания последнего импульса, но не период импульса.

Учитывая, что полярность положительная и метрики выполнения установлены в значение false, прямоугольный импульс имеет:

  • Первый положительный переход в 200 секунд

  • Три полных и два неполных импульса (первый и последний)

  • Четыре положительных перехода и четыре отрицательных перехода

В зависимости от метрики количество элементов в метрическом векторе равно либо количеству переходов, либо количеству полных импульсов. Вектор времени подъема имеет четыре элемента, что соответствует числу переходов. Период цикла имеет три элемента, что соответствует количеству полных импульсов.

Установите RunningMetrics свойство для true.

release(pMetrics);
pMetrics.RunningMetrics = true;
[pulse,cycle] = pMetrics(rectData);
plot(pMetrics);
xlabel('Samples');

Figure PulseMetrics information contains an axes. The axes contains 12 objects of type line. These objects represent signal, +cross, -cross, upper boundary, upper state, lower boundary, upper reference, mid reference, lower reference, lower state.

Объект pMetrics имеет три положительных перехода и три отрицательных перехода. Объект ожидает завершения последнего импульса, прежде чем он вернет метрики для последнего импульса.

Разделите входные данные на два кадра по 500 выборок в каждом кадре. Вычислите импульсные метрики данных в рабочем режиме. Количество циклов итерации соответствует количеству обработанных кадров данных.

release(pMetrics);
framesize = 500;
for i = 1:2
    data = rectData((((i-1)*framesize)+1):i*framesize);
    [pulse,cycle] = pMetrics(data);
    pulse.RiseTime
end
ans = 0.8864
ans = 2×1

    0.8853
    1.6912

Первый кадр содержит один полный импульс и 2 неполных импульса. Значение времени нарастания, отображаемое на первом этапе итерации, соответствует переходу возрастания в этом полном импульсе. Время нарастания последнего полного импульса на этом шаге итерации не отображается. Алгоритм ожидает завершения импульсных данных. Второй кадр данных содержит оставшуюся часть этого импульса и другой полный импульс. Вектор времени нарастания на втором этапе итерации имеет два элемента - первое значение соответствует возрастающему переходу неполного импульса на предыдущем этапе, а второе значение соответствует возрастающему переходу полного импульса на текущем этапе.

Вычислить метрики перехода

Метрики перехода соответствуют метрикам первого и второго переходов. Использование dsp.TransitionMetrics В системном объекте можно определить события middlecross и вычислить время после превышения и время после понижения прямоугольного импульса. Чтобы измерить метрики постшута, установите PostshootOutputPort имущество dsp.TransitionMetrics к true.

tMetrics = dsp.TransitionMetrics('StateLevels',levels,'PostshootOutputPort',true);
[transition,postshoot] = tMetrics(rectData);
plot(tMetrics);
xlabel('Samples');

Figure TransitionMetrics information contains an axes. The axes contains 15 objects of type line. These objects represent signal, upper cross, mid cross, lower cross, post-overshoot, post-undershoot, upper boundary, upper state, lower boundary, upper reference, mid reference, lower reference, lower state.

Средне-перекрестные события являются моментами времени, когда импульсные переходы пересекают средний опорный уровень. Просмотр средне-поперечных событий импульса.

transition.MiddleCross
ans = 9×1

   99.4345
  199.4582
  299.3520
  399.4499
  499.5355
  599.4121
  699.5699
  799.3412
  899.4907

Переполнения и недоработки выражаются в процентах от разницы между уровнями состояний. Вскрытия и недоделки, возникающие после области посттрансляционной аберрации, называются послепересечениями и постподвертышами. Значение превышения прямоугольного импульса является максимальным из значений превышения всех переходов. Просмотр постобработок импульса.

postshoot.Overshoot
ans = 9×1

    5.6062
    6.1268
   10.8393
    1.8311
   11.2240
   13.2285
    9.2560
    2.2735
   14.0357

Значение нижнего предела прямоугольного импульса является минимальным из значений нижнего предела всех переходов.

postshoot.Undershoot
ans = 9×1

    5.6448
   12.5596
    6.2156
   16.8403
   -1.9859
    7.6490
   11.7320
   17.3856
    2.0221

См. также

Объекты

Функции

Связанные темы