Отображение сигналов временной области
The timescope
объект отображает сигналы во временном интервале.
Функции возможностей:
Курсоры данных - Измерьте значения сигналов с помощью вертикальных и горизонтальных курсоров.
Статистика сигналов - отображение максимальных, минимальных, пиковых различий, среднего, медианного и RMS значений выбранного сигнала.
Пик Искателя - Найти максимумы, показывающий x значения оси, при которых они происходят.
Bilevel Measurements - Замерьте переходы, перерегулирования, подколы и циклы.
Триггеры - Установите триггеры, чтобы синхронизировать повторяющиеся сигналы и приостановить отображение, когда происходят события.
Используйте Функции объекта для отображения, скрытия и определения видимости окна возможностей.
возвращает scope
= timescopetimescope
объект, scope
. Этот объект отображает реальные и комплексные сигналы с плавающей и фиксированной точками во временном интервале.
возвращает scope
= timescope(Name,Value
)timescope
объект со свойствами, установленными на заданное значение. Задайте свойства и их значения в кавычках, разделенных запятыми. Вы можете задать аргументы пары "имя-значение" в любом порядке.
Большинство свойств можно изменить с timescope
UI.
SampleRate
- Частота дискретизации входов1
(по умолчанию) | конечный числовой скаляр |Частота дискретизации входного сигнала, в герцах, задается как конечный числовой скаляр или вектор скаляров.
Обратная частота дискретизации определяет x интервал между точками в отображаемом сигнале. Когда значение NumInputPorts
больше 1, и скорость дискретизации скаляром, объект использует ту же скорость дискретизации для всех входов. Чтобы задать различные частоты дискретизации для каждого входа, используйте вектор.
Вы можете задать это свойство только при создании объекта или после вызова release
.
На вкладке Scope нажмите Settings. Под Data and Axes установите Sample Rate.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
TimeSpanSource
- Источник промежутка времени'auto'
(по умолчанию) | 'property'
Источник временного интервала для основанных на кадрах входных сигналов, заданный как одно из следующего:
'property'
- Объект выводит x пределы оси из TimeDisplayOffset
и TimeSpan
свойства.
'auto'
- Пределы x-оси получают из TimeDisplayOffset
свойство, SampleRate
свойство и количество строк в каждом входном сигнале (FrameSize в уравнениях ниже). Пределы вычисляются как:
Минимальный предел по оси времени = TimeDisplayOffset
Максимальный предел по оси времени = TimeDisplayOffset
+ max (1/ SampleRate
.* FrameSize)
На вкладке Scope нажмите Settings. Под Data and Axes установите Time Span.
Типы данных: char
| string
TimeSpan
- Промежуток времени10
(по умолчанию) | положительная скалярная величинаПромежуток времени, в секундах, задается как положительное, числовое скалярное значение. Пределы временной оси вычисляются как:
Минимальный предел по оси времени = TimeDisplayOffset
Максимальный предел по оси времени = TimeDisplayOffset
+ TimeSpan
Чтобы включить это свойство, задайте TimeSpanSource
на 'property'
.
На вкладке Scope нажмите Settings. В разделе Data and Axes отредактируйте Time Span.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
TimeSpanOverrunAction
- Поведение переполнения данных'scroll'
(по умолчанию) | 'wrap'
Задайте, как в возможности отображаются новые данные за пределами видимого временного интервала, также как:
'scroll'
- В этом режиме возможности прокручивают старые данные налево, чтобы освободить место для новых данных справа от области отображения. Этот режим выгоден для отладки и мониторинга изменяющихся во времени сигналов.
'wrap'
- В этом режиме возможности добавляют данные слева от графика после переполнения правой части графика.
На вкладке Scope нажмите Settings. Под Data and Axes установите Overrun Action.
Типы данных: char
| string
PlotType
- Тип графика'line'
(по умолчанию) | 'stairs'
Тип графика, заданный как:
На вкладке Scope нажмите Settings. Под Data and Axes установите Plot Type.
Типы данных: char
| string
AxesScaling
- Режим масштабирования осей'onceatstop'
(по умолчанию) | 'auto'
| 'manual'
| 'updates'
Когда для этого свойства задано значение:
'onceatstop'
-- Пределы обновляются один раз в конце симуляции (когда release
вызывается).
'auto'
- возможности пытаются всегда хранить данные на отображении с минимизацией количества обновлений пределов осей.
'manual'
- возможности не принимает никаких действий, если это не задано пользователем.
'updates'
- возможности масштабируют оси один и только один раз после 100 обновлений визуализации.
Задать это свойство можно только при создании объекта.
Типы данных: char
| string
LayoutDimensions
- Отобразите размерности разметочной сетки[1,1]
(по умолчанию) | [numberOfRows, numberOfColumns]
Задайте размещение сетку размерностей как двухэлементный вектор: [numberOfRows,numberOfColumns]
. Сетка может иметь максимум 4 строки и 4 столбца.
Если вы создаете сетку из нескольких осей, для изменения настроек отдельных осей используйте ActiveDisplay
.
Пример: scope.LayoutDimensions = [2,4]
На вкладке Scope щелкните Display Grid () и выберите определенное количество строк и столбцов из сетки.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
TimeUnits
- Модули оси X'seconds'
(по умолчанию) | 'none'
| 'metric'
Задайте модули, используемые для описания оси X (временной оси). Можно выбрать один из следующих опций:
'seconds'
- Область возможностей всегда отображает модули на оси X как секунды. Область возможностей показывает слово Time(s)
на оси X.
'none'
- Область возможностей не отображает никаких модулей на оси X. Область возможностей показывает только слово Time
на оси X.
'metric'
- Область возможностей отображает модули на оси X следующим Time (s)
изменение модулей измерения на день, недели, месяцы или годы, когда вы строите больше точек данных.
На вкладке Scope нажмите Settings. Под Data and Axes установите Time Units.
Типы данных: char
| string
TimeDisplayOffset
- Смещение x пределы осиЗадайте, в секундах, как далеко перемещать данные по оси x. Значение сигналов не меняется, изменяются только пределы, отображаемые на оси x.
Если вы задаете это свойство как скаляр, то это значение является смещением отображения времени для всех каналов. Если вы задаете это свойство как вектор, каждый входной канал может быть другим смещением отображения времени
На вкладке Scope нажмите Settings. Под Data and Axes установите Time Offset.
TimeAxisLabels
- Метки оси времени'all'
(по умолчанию) | 'bottom
| 'none'
Метки оси времени, заданные как:
'all'
- Метки оси времени появляются во всех отображениях.
'bottom
- Метки оси времени появляются в нижнем отображении каждого столбца.
'none'
- Метки не отображаются ни на одном отображении.
На вкладке Scope нажмите Settings. Под Data and Axes установите Time Labels.
Типы данных: char
| string
MaximizeAxes
- Максимизируйте управление осями'auto'
(по умолчанию) | 'on'
| 'off'
Укажите, отображать ли возможности видимости в режиме максимизированных осей. В этом режиме оси расширяются так, чтобы они помещались во всём отображении. Чтобы сохранить пространство, метки не появляются на каждом отображении. Вместо этого отметки деления деления и их значения появляются поверх нанесенных на график данных. Можно выбрать один из следующих опций:
'auto'
- Оси появляются максимизированными во всех отображениях, только если Title
и YLabel
свойства пусты для каждого отображения. Если вы вводите любое значение в любом отображении для любого из этих свойств, оси не максимизируются.
'on'
- Оси появляются максимизированными во всех отображениях. Любые значения, введенные в Title
и YLabel
свойства скрыты.
'off'
- Ни одна из осей не выглядит максимизированной.
В окне возможностей щелкните, чтобы максимизировать оси, скрыть все метки и вставить значения осей.
Типы данных: char
| string
BufferLength
- Длина буфера50000
(по умолчанию) | положительное целое числоЗадайте длину буфера, используемого для каждого входного сигнала, в виде положительного целого числа.
Задать это свойство можно только при создании объекта.
На вкладке Scope нажмите Settings. Под Data and Axes установите Buffer Length.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Name
- Имя окна'Time Scope'
(по умолчанию) | символьный вектор | строковый скалярЗадайте имя возможностей как вектор символов или строковый скаляр. Это имя появляется как заголовок окна рисунка возможностей видимости. Чтобы задать заголовок графика возможностей, используйте Title
свойство.
Типы данных: char
| string
Position
- Положение окна[left bottom width height]
Положение окна возможностей в пикселях, заданное размером и расположением окна возможностей как четырехэлементного вектора формы [left bottom width height]
. Можно поместить окно возможностей в определенное положение на экране путем изменения значений этого свойства.
По умолчанию окно появляется в центре экрана с шириной 800
пиксели и высота 500
пиксели. Точные значения положения зависят от разрешения экрана.
ChannelNames
- Имена каналов{''}
(по умолчанию) | массив ячеек из векторов символовЗадайте имена входных каналов как массив ячеек из векторов символов. Имена каналов появляются в легенде, а на вкладке Measurements под Select Channel. Если вы не задаете имена, каналы помечаются как Channel 1
, Channel 2
, и т.д.
Чтобы включить это свойство, задайте ShowLegend
на true
.
Типы данных: char
ActiveDisplay
- Активное отображение для настройки свойств1
(по умолчанию) | целое числоАктивное отображение, используемое для задания свойств, заданных целым числом. Номер отображения соответствует индексу размещения в строке изображения. Установка этого свойства управляет тем, какое отображение используется для следующих свойств: YLimits
, YLabel
, ShowLegend
, ShowGrid
, Title
, и PlotAsMagnitudePhase
.
На вкладке Scope нажмите Settings. Под Display and Labels установите Active Display.
Title
- Отобразить заголовок''
(по умолчанию) | символьный вектор | строковый скалярЗадайте заголовок изображения как вектор символов или строковый скаляр.
Когда вы устанавливаете это свойство, ActiveDisplay
управляет обновляемым отображением.
На вкладке Scope нажмите Settings. Под Display and Labels установите Title.
Типы данных: char
| string
YLabel
- y -метка оси'Amplitude'
(по умолчанию) | символьный вектор | строковый скалярЗадайте текст области видимости слева от оси y .
Это свойство применяется только тогда, когда PlotAsMagnitudePhase
является false
. Когда PlotAsMagnitudePhase
является true
две y метки -оси являются значениями, доступными только для чтения "Magnitude"
и "Phase"
, для графика величины и фазы, соответственно.
Когда вы устанавливаете это свойство, ActiveDisplay
управляет обновляемым отображением.
На вкладке Scope нажмите Settings. Под Display and Labels установите YLabel.
Типы данных: char
| string
YLimits
- y -лимиты по оси[-10,10]
(по умолчанию) | [ymin, ymax]
Задайте y пределы по осям как двухэлементный числовой вектор, [ymin, ymax]
.
Если PlotAsMagnitudePhase
является false
, по умолчанию является [-10,10]
.
Если PlotAsMagnitudePhase
является true
, по умолчанию является [0,10]
. Это свойство задает y пределы по осям только для графика величины. Пределы y-оси фазового графика всегда [-180,180]
Когда вы устанавливаете это свойство, ActiveDisplay
управляет обновляемым отображением.
На вкладке Scope нажмите Settings. Под Display and Labels установите Y-Axis Limits.
ShowLegend
- Показать легендуfalse
(по умолчанию) | true
Чтобы показать легенду с входными именами, задайте для этого свойства значение true
.
Из легенды можно управлять, какие сигналы видны. В легенде возможностей щелкните имя сигнала, чтобы скрыть сигнал в возможности. Чтобы отобразить сигнал, снова щелкните имя сигнала.
На вкладке Scope нажмите Settings. В разделе Display and Labels выберите Show Legend.
Типы данных: logical
ShowGrid
- Видимость сеткиtrue
(по умолчанию) | false
Установите это свойство на true
отображение линий сетки на графике.
На вкладке Scope нажмите Settings. В разделе Display and Labels выберите Show Grid.
PlotAsMagnitudePhase
- Постройте график как величину и фазуfalse
(по умолчанию) | true
Постройте график величины и фазы сигнала, заданный как:
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, чтобы измерить время между сердечными ударами.
На вкладке « Измерениях» выберите Peak Finder.
Для свойства Num Peaks введите 10
.
На панели Peaks в нижней части окна во Time Scope отображается список из десяти пиковых значений амплитуды и времени их возникновения.
Список пиковых значений показывает постоянное различие во времени 0,675 секунды между каждым пульсом. Основываясь на следующем уравнении, частота сердечных сокращений этого сигнала ЭКГ составляет около 89 ударов в минуту.
Закройте окно Time Scope и удалите из рабочей области созданные вами переменные.
clear scope x1 y1 n del mhb ts
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.