timescope

Отображение сигналов временной области

Описание

The timescope объект отображает сигналы во временном интервале.

The scope window shown with data cursors.

Функции возможностей:

  • Курсоры данных - Измерьте значения сигналов с помощью вертикальных и горизонтальных курсоров.

  • Статистика сигналов - отображение максимальных, минимальных, пиковых различий, среднего, медианного и RMS значений выбранного сигнала.

  • Пик Искателя - Найти максимумы, показывающий x значения оси, при которых они происходят.

  • Bilevel Measurements - Замерьте переходы, перерегулирования, подколы и циклы.

  • Триггеры - Установите триггеры, чтобы синхронизировать повторяющиеся сигналы и приостановить отображение, когда происходят события.

Используйте Функции объекта для отображения, скрытия и определения видимости окна возможностей.

Создание

Описание

пример

scope = timescope возвращает timescope объект, scope. Этот объект отображает реальные и комплексные сигналы с плавающей и фиксированной точками во временном интервале.

scope = timescope(Name,Value) возвращает timescope объект со свойствами, установленными на заданное значение. Задайте свойства и их значения в кавычках, разделенных запятыми. Вы можете задать аргументы пары "имя-значение" в любом порядке.

Свойства

расширить все

Большинство свойств можно изменить с timescope UI.

Часто используемый

Частота дискретизации входного сигнала, в герцах, задается как конечный числовой скаляр или вектор скаляров.

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

Вы можете задать это свойство только при создании объекта или после вызова release.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Data and Axes установите Sample Rate.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Источник временного интервала для основанных на кадрах входных сигналов, заданный как одно из следующего:

  • 'property' - Объект выводит x пределы оси из TimeDisplayOffset и TimeSpan свойства.

  • 'auto' - Пределы x-оси получают из TimeDisplayOffset свойство, SampleRate свойство и количество строк в каждом входном сигнале (FrameSize в уравнениях ниже). Пределы вычисляются как:

    • Минимальный предел по оси времени = TimeDisplayOffset

    • Максимальный предел по оси времени = TimeDisplayOffset + max (1/ SampleRate.* FrameSize)

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Data and Axes установите Time Span.

Типы данных: char | string

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

  • Минимальный предел по оси времени = TimeDisplayOffset

  • Максимальный предел по оси времени = TimeDisplayOffset + TimeSpan

Зависимости

Чтобы включить это свойство, задайте TimeSpanSource на 'property'.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. В разделе Data and Axes отредактируйте Time Span.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте, как в возможности отображаются новые данные за пределами видимого временного интервала, также как:

  • 'scroll' - В этом режиме возможности прокручивают старые данные налево, чтобы освободить место для новых данных справа от области отображения. Этот режим выгоден для отладки и мониторинга изменяющихся во времени сигналов.

  • 'wrap' - В этом режиме возможности добавляют данные слева от графика после переполнения правой части графика.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Data and Axes установите Overrun Action.

Типы данных: char | string

Тип графика, заданный как:

  • 'line' - Линейный график, подобный line или plot функция.

  • 'stairs' - Ступенчатый график, подобный stairs функция. Ступенчатые графы полезны для рисования временных графиков цифровых выборочных данных.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Data and Axes установите Plot Type.

Типы данных: char | string

Когда для этого свойства задано значение:

  • 'onceatstop' -- Пределы обновляются один раз в конце симуляции (когда release вызывается).

  • 'auto' - возможности пытаются всегда хранить данные на отображении с минимизацией количества обновлений пределов осей.

  • 'manual' - возможности не принимает никаких действий, если это не задано пользователем.

  • 'updates' - возможности масштабируют оси один и только один раз после 100 обновлений визуализации.

Задать это свойство можно только при создании объекта.

Типы данных: char | string

Расширенный

Задайте размещение сетку размерностей как двухэлементный вектор: [numberOfRows,numberOfColumns]. Сетка может иметь максимум 4 строки и 4 столбца.

Если вы создаете сетку из нескольких осей, для изменения настроек отдельных осей используйте ActiveDisplay.

Пример: scope.LayoutDimensions = [2,4]

Использование пользовательского интерфейса

На вкладке Scope щелкните Display Grid () и выберите определенное количество строк и столбцов из сетки.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте модули, используемые для описания оси X (временной оси). Можно выбрать один из следующих опций:

  • 'seconds' - Область возможностей всегда отображает модули на оси X как секунды. Область возможностей показывает слово Time(s) на оси X.

  • 'none' - Область возможностей не отображает никаких модулей на оси X. Область возможностей показывает только слово Time на оси X.

  • 'metric' - Область возможностей отображает модули на оси X следующим Time (s) изменение модулей измерения на день, недели, месяцы или годы, когда вы строите больше точек данных.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Data and Axes установите Time Units.

Типы данных: char | string

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

Если вы задаете это свойство как скаляр, то это значение является смещением отображения времени для всех каналов. Если вы задаете это свойство как вектор, каждый входной канал может быть другим смещением отображения времени

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Data and Axes установите Time Offset.

Метки оси времени, заданные как:

  • 'all' - Метки оси времени появляются во всех отображениях.

  • 'bottom - Метки оси времени появляются в нижнем отображении каждого столбца.

  • 'none' - Метки не отображаются ни на одном отображении.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Data and Axes установите Time Labels.

Типы данных: char | string

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

  • 'auto' - Оси появляются максимизированными во всех отображениях, только если Title и YLabel свойства пусты для каждого отображения. Если вы вводите любое значение в любом отображении для любого из этих свойств, оси не максимизируются.

  • 'on' - Оси появляются максимизированными во всех отображениях. Любые значения, введенные в Title и YLabel свойства скрыты.

  • 'off' - Ни одна из осей не выглядит максимизированной.

Использование пользовательского интерфейса

В окне возможностей щелкните, чтобы максимизировать оси, скрыть все метки и вставить значения осей.

Типы данных: char | string

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

Задать это свойство можно только при создании объекта.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Data and Axes установите Buffer Length.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Визуализация

Задайте имя возможностей как вектор символов или строковый скаляр. Это имя появляется как заголовок окна рисунка возможностей видимости. Чтобы задать заголовок графика возможностей, используйте Title свойство.

Типы данных: char | string

Положение окна возможностей в пикселях, заданное размером и расположением окна возможностей как четырехэлементного вектора формы [left bottom width height]. Можно поместить окно возможностей в определенное положение на экране путем изменения значений этого свойства.

По умолчанию окно появляется в центре экрана с шириной 800 пиксели и высота 500 пиксели. Точные значения положения зависят от разрешения экрана.

Задайте имена входных каналов как массив ячеек из векторов символов. Имена каналов появляются в легенде, а на вкладке Measurements под Select Channel. Если вы не задаете имена, каналы помечаются как Channel 1, Channel 2, и т.д.

Зависимость

Чтобы включить это свойство, задайте ShowLegend на true.

Типы данных: char

Активное отображение, используемое для задания свойств, заданных целым числом. Номер отображения соответствует индексу размещения в строке изображения. Установка этого свойства управляет тем, какое отображение используется для следующих свойств: YLimits, YLabel, ShowLegend, ShowGrid, Title, и PlotAsMagnitudePhase.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Display and Labels установите Active Display.

Задайте заголовок изображения как вектор символов или строковый скаляр.

Зависимость

Когда вы устанавливаете это свойство, ActiveDisplay управляет обновляемым отображением.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Display and Labels установите Title.

Типы данных: char | string

Задайте текст области видимости слева от оси y .

Зависимости

Это свойство применяется только тогда, когда PlotAsMagnitudePhase является false. Когда PlotAsMagnitudePhase является trueдве y метки -оси являются значениями, доступными только для чтения "Magnitude" и "Phase", для графика величины и фазы, соответственно.

Когда вы устанавливаете это свойство, ActiveDisplay управляет обновляемым отображением.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Display and Labels установите YLabel.

Типы данных: char | string

Задайте y пределы по осям как двухэлементный числовой вектор, [ymin, ymax].

  • Если PlotAsMagnitudePhase является false, по умолчанию является [-10,10].

  • Если PlotAsMagnitudePhase является true, по умолчанию является [0,10]. Это свойство задает y пределы по осям только для графика величины. Пределы y-оси фазового графика всегда [-180,180]

Зависимость

Когда вы устанавливаете это свойство, ActiveDisplay управляет обновляемым отображением.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. Под Display and Labels установите Y-Axis Limits.

Чтобы показать легенду с входными именами, задайте для этого свойства значение true.

Из легенды можно управлять, какие сигналы видны. В легенде возможностей щелкните имя сигнала, чтобы скрыть сигнал в возможности. Чтобы отобразить сигнал, снова щелкните имя сигнала.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. В разделе Display and Labels выберите Show Legend.

Типы данных: logical

Установите это свойство на true отображение линий сетки на графике.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. В разделе Display and Labels выберите Show Grid.

Постройте график величины и фазы сигнала, заданный как:

  • true - возможности строят графики величины и фазы входного сигнала на двух отдельных осях в пределах одного активного отображения.

  • false - возможности видимости строят график действительной и мнимой частей входного сигнала на двух отдельных осях в пределах одного активного отображения.

Это свойство полезно для комплексных входных сигналов. Включение этого свойства влияет на фазу для реальных входных сигналов. Когда амплитуда входного сигнала неотрицательная, фаза составляет 0 степени. Когда амплитуда входного сигнала отрицательная, фаза составляет 180 степени.

Использование пользовательского интерфейса

На вкладке Scope нажмите Settings. В разделе Display and Labels выберите Magnitude Phase Plot.

Функции объекта

Чтобы использовать функцию объекта, задайте объект как первый входной параметр.

hideСкрыть окно возможностей
showОтобразить окно возможностей
isVisibleОпределите видимость возможностей
generateScriptСгенерируйте скрипт MATLAB, чтобы создать возможности с текущими настройками
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Создайте синусоидальный сигнал во временной области. Отображение сигнала путем вызова объекта временных возможностей.

Создайте синусоидальный сигнал с двумя тонами, один с частотой 0,3 кГц и другой с частотой 3 кГц.

t = (0:1000)'/8e3;
xin = sin(2*pi*0.3e3*t)+sin(2*pi*3e3*t);

Создайте timescope объект и просмотр синусоидального сигнала вызовом объекта временных возможностей scope.

scope = timescope('SampleRate', 8e3,...
    'TimeSpanSource', 'property', ...
    'TimeSpan', 0.1);
scope(xin)

Выполняйте release чтобы разрешить изменение значений свойств и входных характеристик. Область возможностей автоматически масштабирует оси.

release(scope);

Скрыть окно возможностей.

if(isVisible(scope))
    hide(scope)
end

Показать окно возможностей.

if(~isVisible(scope))
    show(scope)
end

Создайте и отобразите входной сигнал синхроимпульса

Загрузите данные синхроимпульса, x и t. Найдите шаг расчета, ts.

load clockex
ts = t(2)-t(1);

Создайте timescope и вызовите объект, чтобы отобразить сигнал. Чтобы автоматически масштабировать оси и включить изменения значений свойств и входных характеристик, вызовите release.

scope = timescope(1,1/ts,'TimeSpanSource','Auto');
scope(x);
release(scope);

Используйте панель Измерения, чтобы найти время урегулирования

1. На вкладке Измерения (Measurements) выберите Аберрации (Aberrations).

Первоначально Time Scope не отображает измерение Времени урегулирования. Это отсутствие происходит, потому что значение по умолчанию параметра Settle Seek больше, чем вся длительность симуляции.

2. В поле Bilevel Settings > Settle Seek введите 2e-6 и нажмите Enter.

Time Scope теперь отображает растущее ребром Времени урегулирования значение 118.392 нс.

Это значение времени урегулирования фактически является статистическим средним значением времен урегулирования для всех пяти восходящих ребер. Чтобы показать время урегулирования только для одного поднимающегося ребра, можно увеличить изображение этого перехода.

3. Наведите на правый верхний угол осей возможностей видимости и нажмите кнопку масштаба.

4. Щелкните и перетащите мышью, чтобы изменить масштабирование одного из переходов.

Time Scope обновляет значение ребра Времени урегулирования для отражения нового временного окна.

Создайте dsp.SineWave с частотой дискретизации 1000 Гц. Создайте dsp.FIRDecimator объект, чтобы децимировать синусоида на 2. Создайте timescope объект с двумя входными портами.

Fs = 1000;  % Sampling frequency
sine = dsp.SineWave('Frequency',50,...
   'SampleRate',Fs, ...
   'SamplesPerFrame',100);
decimate = dsp.FIRDecimator; % To decimate sine by 2
scope = timescope(2,[Fs Fs/2], ...
   'TimeDisplayOffset',[0 38/Fs], ...
   'TimeSpanSource','Property',...
   'TimeSpan',0.25, ...
   'YLimits',[-1 1], ...
   'ShowLegend', true);

Вызовите dsp.SineWave объект для создания сигнала синусоиды. Используйте dsp.FIRDecimator объект для создания второго сигнала, который равен исходному сигналу, но децимируется в 2 раза. Отображение сигналов по вызову timescope объект.

for ii = 1:2
     xsine = sine();
     xdec = decimate(xsine);
     scope(xsine,xdec)
end
release(scope)

Закройте окно Time Scope и очистите переменные.

clear scope Fs sine decimate ii xsine xdec

Создайте вектор, представляющий комплексный синусоидальный сигнал, и создайте timescope объект. Вызовите возможности, чтобы отобразить сигнал.

fs = 1000;
t = (0:1/fs:10)';
CxSine = cos(2*pi*0.2*t) + 1i*sin(2*pi*0.2*t);
CxSineSum = cumsum(CxSine);
scope = timescope(1,fs,'TimeSpanSource','Auto','ShowLegend',1);
scope(CxSineSum);
release(scope)

По умолчанию, когда вход является комплексным сигналом, Time Scope строит графики действительных и мнимых фрагментов на тех же осях. Эти действительные и мнимые фрагменты появляются как линии разного цвета на одних и тех же осях в пределах одного активного отображения.

Измените PlotAsMagnitudePhase свойство к true и звоните release.

scope.PlotAsMagnitudePhase = true;
scope(CxSineSum);
release(scope)

Time Scope теперь строит графики величины и фазы входного сигнала на двух отдельных осях в одном и том же активном отображении. Верхние оси отображают величину, а нижние - фазу в степенях.

Этот пример показывает, как timescope объект визуализирует входы, которые изменяют размерности на полпути.

Создайте вектор, который представляет двухканальный постоянный сигнал. Создайте другой вектор, который представляет трехканальный постоянный сигнал. Создайте timescope объект. Вызовите возможности с двумя входами, чтобы отобразить сигнал.

fs = 10;
sigdim2 = [ones(5*fs,1) 1+ones(5*fs,1)];                   % 2-dim 0-5 s
sigdim3 = [2+ones(5*fs,1) 3+ones(5*fs,1) 4+ones(5*fs,1)];  % 3-dim 5-10 s
scope = timescope('SampleRate',fs,'TimeSpanSource','Property');
scope.PlotType = 'Stairs';
scope.TimeSpanOverrunAction = 'Scroll';
scope.TimeDisplayOffset = [0 5];
scope([sigdim2; sigdim3(:,1:2)], sigdim3(:,3));

В этом примере размер входного сигнала во Временной области изменяется по мере прогрессирования симуляции. Когда время симуляции меньше 5 секунд, Time Scope строит графики только двухканального сигнала, sigdim2. Через 5 секунд Time Scope также строит график трехканального сигнала, sigdim3.

Запуск release метод для включения изменений значений свойств и входных характеристик. Область возможностей автоматически масштабирует оси.

release(scope)

Используйте панель Peak Finder из Time Scope, чтобы измерить частоту сердечных сокращений.

Создание и отображение сигнала ЭКГ

Создайте сигнал электрокардиограммы (ЭКГ). Настраиваемая ecg функция помогает сгенерировать сигнал пульса.

function x = ecg(L)
a0 = [0,  1, 40,  1,   0, -34, 118, -99,   0,   2,  21,   2,   0,   0,   0];
d0 = [0, 27, 59, 91, 131, 141, 163, 185, 195, 275, 307, 339, 357, 390, 440];
a = a0 / max(a0);
d = round(d0 * L / d0(15));
d(15) = L;
for i = 1:14
    m = d(i) : d(i+1) - 1;
    slope = (a(i+1) - a(i)) / (d(i+1) - d(i));
    x(m+1) = a(i) + slope * (m - d(i));
end

x1 = 3.5*ecg(2700).';
y1 = sgolayfilt(kron(ones(1,13),x1),0,21);
n = (1:30000)';
del = round(2700*rand(1));
mhb = y1(n + del);
ts = 0.00025;

Создайте timescope и вызовите объект, чтобы отобразить сигнал. Чтобы автоматически масштабировать оси и включить изменения значений свойств и входных характеристик, вызовите release.

scope = timescope(1,1/ts);
scope(mhb);
release(scope)

Поиск частоты сердечных сокращений

Используйте измерения Peak Finder, чтобы измерить время между сердечными ударами.

  1. На вкладке « Измерениях» выберите Peak Finder.

  2. Для свойства Num Peaks введите 10.

На панели Peaks в нижней части окна во Time Scope отображается список из десяти пиковых значений амплитуды и времени их возникновения.

Список пиковых значений показывает постоянное различие во времени 0,675 секунды между каждым пульсом. Основываясь на следующем уравнении, частота сердечных сокращений этого сигнала ЭКГ составляет около 89 ударов в минуту.

$$\frac{60 \textrm{ s/min}}{0.675 \textrm{ s/beat}} = 88.89 \textrm{ bpm}$$

Закройте окно Time Scope и удалите из рабочей области созданные вами переменные.

clear scope x1 y1 n del mhb ts
Введенный в R2020a