Вычитание смещения или тренда из сигналов временной области, содержащихся в iddata объекты
detrend вычитает смещения или линейные тренды из данных ввода-вывода во временной области, представленных в iddata объекты. detrend либо вычисляет данные тренда для вычитания, либо вычитает указанный тренд.
Для более общей сдерживающей функции, которая не требует iddata объекты, см. detrend.
вычисляет и вычитает кусочно-линейные тренды для данных с сегментированными трендами, используя точки останова, определенные с помощью data_d = detrend(data,1,brkpt)brkpt.
Второй аргумент, соответствующий Type, должно быть 1.
С помощью этого синтаксиса невозможно получить результирующую кусочно-линейную информацию тренда в виде выходных данных.
Удаление смещений из стационарных сигналов в iddata объект с помощью detrend вычислять и вычитать средние значения входных и выходных данных.
Загрузка входных и выходных временных рядов y2 и u2. Создайте iddata объект data2, использование данные и время выборки 0,08 секунды.
load dryer2 y2 u2 data2 = iddata(y2,u2,0.08);
Использовать detrend вычисляют средние значения и вычитают их из входных и выходных сигналов. Использовать входной аргумент Tr для хранения информации о вычисленном тренде. Постройте график исходных данных и уменьшенных данных вместе.
[data2_d,Tr] = detrend(data2); plot(data2,data2_d) legend('Original Data','Detrended Data')

Уменьшенные данные сдвинулись примерно на 5 единиц. Осмотреть Tr для получения точных средних значений, которые detrend вычисляется и вычитается. Эти значения возвращаются в InputOffset и OutputOffset свойства.
Tr
Trend specifications for data "data2" with 1 input(s), 1 output(s), 1 experiment(s):
DataName: 'data2'
InputOffset: 5.0000
OutputOffset: 4.8901
InputSlope: 0
OutputSlope: 0
Среднее значение исходного входного значения превышает среднее значение исходного выходного значения.
Удаление линейного тренда из сигнала в iddata и наложить линию тренда на график данных до и после.
Загрузка и печать данных сигнала из файла lintrend2. В этом примере представлены только выходные данные в iddata объект dataL.
load lintrend2 dataL plot(dataL,'b')

График показывает четкий линейный тренд в данных. Использовать detrend линейный вариант (Type = 1) для вычитания тренда из данных. detrend подгоняет данные и определяет линейный тренд для вычитания. Включить TrendInfo объект Tr в качестве выходного аргумента, чтобы вы могли видеть, что detrend вычитает.
[dataL_d,Tr] = detrend(dataL,1);
Постройте график отклоненных данных по сравнению с исходными данными.
hold on plot(dataL_d,'g') legend('Original','Detrended','Location','northwest')

Линейный тренд удален. Осмотреть Tr для получения дополнительной информации об удаленном тренде.
Tr
Trend specifications for data "dataL" with 0 input(s), 1 output(s), 1 experiment(s):
DataName: 'dataL'
InputOffset: [1x0 double]
OutputOffset: 0.8888
InputSlope: [1x0 double]
OutputSlope: 19.3830
OutputOffset и OutputSlope свойства предоставляют параметры строки, detrend удален. Можно реконструировать эту линию, а затем наложить ее на график данных до и после. SamplingInstants имущество DataL предоставляет временные точки, связанные с данными.
m = Tr.OutputSlope
m = 19.3830
b = Tr.OutputOffset
b = 0.8888
t = dataL.SamplingInstants; TrLn = m*t+b; plot(t,TrLn,'r') legend('Original','Detrended','Trendline','Location','northwest')

Удаление известных смещений из пары входной-выходной сигнал, содержащейся в iddata object.
Detrend может вычислять и вычитать средние значения для входных и выходных сигналов, приводя к нулевым усредненным сигналам. Однако, если вы уже знаете, что у вас есть определенные смещения данных заранее, вы можете иметь detrend вместо этого вычитайте их из сигналов. Указание смещений также позволяет сохранить ненулевую рабочую точку в detrend результат.
Загрузить данные SISO, содержащие векторы u2 и y2. Предположим, что оба сигнала имеют смещение 4 от ожидаемой рабочей точки 1. Объединение этих векторов в iddata object, используя время выборки 0,08 секунды, и постройте график.
load dryer2 u2 y2 data = iddata(y2,u2,0.08); plot(data)

На графиках видно известное смещение 4 (от рабочей точки 1). Можно создать TrendInfo объект для захвата этого смещения с помощью функции getTrend.
Создать TrendInfo , а затем задайте его свойства смещения.
T = getTrend(data); T.InputOffset = 4; T.OutputOffset = 4
Trend specifications for data "data" with 1 input(s), 1 output(s), 1 experiment(s):
DataName: 'data'
InputOffset: 4
OutputOffset: 4
InputSlope: 0
OutputSlope: 0
Использовать detrend для вычитания смещения из данных. Постройте график вместе с исходными данными.
data_d = detrend(data,T); hold on plot(data_d) legend('Original','Detrended')

Смещение 4 удалено.
Ограничение данных сегментированными кусочно-линейными трендами путем указания точек останова для ограничения сегментов.
Большая часть detrend синтаксы предполагают и вычисляют один тренд для каждого из сигналов. Однако в некоторых случаях существуют разрывы в линейных тенденциях, вызванные изменениями конфигурации теста, условиями окружающей среды или другими воздействиями. Когда сигнал отображает такую сегментацию, можно detrend независимо работать с тестовыми сегментами. Для этого укажите точки останова в brkpt входной аргумент. Это индексы временных точек в сигнале, в которых линейные тренды изменяют наклон.
Эти точки останова могут быть известны заранее на основе изменений, которые, как известно, произошли во время сбора данных. Кроме того, может потребоваться аппроксимировать их путем проверки самих данных.
Загрузите данные, проверьте их структуру и содержимое и выведите их на печать. Эти данные состоят из выходных данных только в iddata объект dataLb2.
load brkTrend dataLb2 dataLb2
dataLb2 =
Time domain data set with 512 samples.
Sample time: 0.00390625 seconds
Outputs Unit (if specified)
y1
plot(dataLb2)

Для этого примера данные имеют известные точки останова в индексах [100 300]. Применение времени выборки (свойство Ts), эти точки останова соответствуют фактическим точкам времени следующим образом:
brkpt=[100 300]; brkpt_time = brkpt*dataLb2.Ts
brkpt_time = 1×2
0.3906 1.1719
Сдерживание данных с помощью brkpt.
dataLb2_d = detrend(dataLb2,1,brkpt);
Постройте график исходных и искаженных данных.
plot(dataLb2,dataLb2_d) legend('Original Data','Detrended Data')

Линейные сегменты тренда удалены.
Применение уникального набора точек останова к каждому эксперименту при ограничении набора данных Multiexperiment.
Эксперименты в многоопытном наборе данных могут содержать уникальные разрывы линейных тенденций. Можно применить уникальный набор точек останова к каждому эксперименту, выразив их в массиве ячеек.
Загрузите данные, состоящие из:
datmult, мультиэксперимент iddata объект, содержащий три эксперимента (только выходные данные)
bpn векторов, которые обеспечивают известные точки останова для каждого эксперимента в виде индексов к точкам времени
load multiexpdt datmult bp1 bp2 bp3 datmult
datmult =
Time domain data set containing 3 experiments.
Experiment Samples Sample Time
exp1 250 1
exp2 320 1
exp3 350 1
Outputs Unit (if specified)
y1
bp1,bp2,bp3
bp1 = 1×2
50 200
bp2 = 100
bp3 =
[]
Постройте график данных. Существуют значительные различия между потоками, и они дрейфуют с разными скоростями от нулевого среднего.
plot(datmult) legend

Для этого набора экспериментов известно, что существует уникальный тренд для каждого прогона и уникальные разрывы, указанные bp векторы.
detrend может включать эти уникальные характеристики, если bp информация предоставляется в виде массива ячеек.
Создайте массив ячеек.
bpcell = {bp1;bp2;bp3}bpcell=3×1 cell array
{[ 50 200]}
{[ 100]}
{0x0 double}
Обратиться detrend и постройте график результата, используя тот же масштаб, что и у исходного графика.
datmult_d = detrend(datmult,1,bpcell); figure plot(datmult_d) axis([0,inf,-15,30]) legend

Экспериментальные данные теперь лучше выровнены и не дрейфуют значительно от нулевого среднего.
Применение различных типов трендов к входным и выходным сигналам, содержащимся в iddata объект.
Detrend предполагает, что один и тот же тип тренда применяется как к входному, так и к выходному сигналу. В некоторых случаях может существовать тип тренда, который присутствует только в одном сигнале. Вы можете выполнять detrend индивидуально по каждому сигналу путем выделения сигналов в отдельные iddata объекты. Обратиться detrend к каждому объекту с использованием его индивидуального типа тренда сигнала. Затем повторно собрать результаты обратно в один умаленный iddata объект.
Загрузка, проверка и печать данных в iodatab.
load septrend iodatab; iodatab
iodatab =
Time domain data set with 1000 samples.
Sample time: 0.08 seconds
Outputs Unit (if specified)
y1
Inputs Unit (if specified)
u1
plot(iodatab)
hold on
Как графики ввода, так и графики вывода показывают смещение. Однако график вывода также показывает инвертированный V-образный тренд, который отсутствует во входных данных.
Разделите входные данные и выходные данные на отдельные объекты для сдерживания, используя iddata общая форма выбора данных (см. Представление данных временной и частотной области с использованием объектов iddata):
data(samples,outputchannels,inputchannels)
idatab = iodatab(:,[],:); odatab = iodatab(:,:,[]);
Удалите смещение из входных данных, используя detrend для вычисления и вычитания среднего значения.
idatab_d = detrend(idatab,0);
Удалите смещение и инвертированный тренд V из выходных данных, используя индекс средней точки 500 в качестве точки останова.
odatab_d = detrend(odatab,1,500);
Объединение отклоненных входных и выходных данных в один iddata объект.
iodatab_d = [odatab_d,idatab_d];
Наложение уменьшенных данных на исходные данные.
plot(iodatab_d) legend('original','detrended')

Входные и выходные данные теперь не содержат ни смещения, ни V-образного тренда.
data - Данные ввода-вывода во временной областиiddata объектВходные-выходные данные временной области, указанные как iddata объект, содержащий один или более наборов сигналов временной области. iddata объект может содержать данные SISO, MIMO или данные мультиэксперимента. Наборы сигналов могут содержать либо входные и выходные данные, либо только выходные данные.
Type - Тип тренда для вычитанияTrendInfo объектВычитаемый тип тренда, указанный как один из:
0 - вычислить и вычесть среднее значение
1 - Вычисление и вычитание линейного тренда (подгонка методом наименьших квадратов)
TrendInfo object - вычитание тренда, указанного в TrendInfo объект. Использовать getTrend для создания TrendInfo объект. Пример см. в разделе Удаление указанных смещений из сигналов.
brkpt - Временные точки прерываний трендовМестоположения временных точек прерываний трендов (точки останова), указанные как:
Целочисленный вектор строки - для одноэкспериментных наборов данных SISO и MIMO. При этом ко всем входным и выходным сигналам применяется один набор точек останова. Пример см. в разделе Удаление сегментированных линейных трендов из сигналов с помощью точек останова.
Массив ячеек, содержащий целочисленные векторы строк индивидуального размера - для множественных наборов данных эксперимента. При этом к выходному и входному сигналам для каждого эксперимента применяется уникальный набор точек останова. Пример см. в разделе Детренд мультиэкспериментных сигналов с использованием множественных наборов точек останова.
data_d - Ослабленные сигналыiddata объектСдержанные сигналы, возвращенные в виде iddata объект. Размеры содержимого совпадают с размерами содержимого data.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.