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

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

Сгенерируйте меандр

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

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

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

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

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

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

  4. Идентифицируйте самый низкий индексируемый интервал гистограммы и самый высокий индексируемый интервал гистограммы с ненулевыми количествами.

  5. Разделите histgram на две подгистограммы.

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

Постройте государственные уровни меандра.

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

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

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

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

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

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 установлено в ложь, объект обрабатывает каждый вызов процесса независимо. Если последний импульс является неполным, объект вычисляет любые метрики, которые это может возвратить с доступными данными. Например, если импульс является половиной завершенного, объект может возвратить время нарастания последнего импульса, но не импульсный период.

Учитывая, что полярность положительна, и рабочие метрики установлены в ложь, меандр имеет:

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

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

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

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

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

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

Объект 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 к истине.

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

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

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

Смотрите также

Системные объекты

Функции

Похожие темы