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

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

Сгенерируйте прямоугольный импульс

Сгенерируйте шумный прямоугольный импульс. Шум является белым Гауссовым шумом с нулевым средним и стандартным отклонением 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.

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

The 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

Полярность

The 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 и вычислить постперерегулирование и постзадание прямоугольного импульса. Чтобы измерить метрики postshoot, установите 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

См. также

Объекты

Функции

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте