exponenta event banner

detrend

Вычитание смещения или тренда из сигналов временной области, содержащихся в iddata объекты

Описание

detrend вычитает смещения или линейные тренды из данных ввода-вывода во временной области, представленных в iddata объекты. detrend либо вычисляет данные тренда для вычитания, либо вычитает указанный тренд.

Для более общей сдерживающей функции, которая не требует iddata объекты, см. detrend.

пример

data_d = detrend(data) вычисляет и вычитает среднее значение из каждого сигнала временной области в data. iddata объекты data_d и data каждый содержит входные и выходные данные, исходящие из наборов данных SISO, MIMO или мультиэксперимента.

пример

data_d = detrend(data,Type) вычитает тренд, указанный в Type. Можно указать среднее значение, линейный или пользовательский тренд.

пример

[data_d,T_r] = detrend(___) также возвращает вычитаемый тренд в виде TrendInfo объект T_r. Вы можете получить T_r с любой из комбинаций input-argument в предыдущих синтаксисах.

пример

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')

Figure contains 2 axes. Axes 1 with title y1 contains 2 objects of type line. These objects represent Original Data, Detrended Data. Axes 2 with title u1 contains 2 objects of type line. These objects represent 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')

Figure contains an axes. The axes with title y1 contains an object of type line. This object represents dataL.

График показывает четкий линейный тренд в данных. Использовать detrend линейный вариант (Type = 1) для вычитания тренда из данных. detrend подгоняет данные и определяет линейный тренд для вычитания. Включить TrendInfo объект Tr в качестве выходного аргумента, чтобы вы могли видеть, что detrend вычитает.

[dataL_d,Tr] = detrend(dataL,1);

Постройте график отклоненных данных по сравнению с исходными данными.

hold on
plot(dataL_d,'g')
legend('Original','Detrended','Location','northwest')

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent Original, Detrended.

Линейный тренд удален. Осмотреть 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')

Figure contains an axes. The axes with title y1 contains 3 objects of type line. These objects represent Original, Detrended, Trendline.

Удаление известных смещений из пары входной-выходной сигнал, содержащейся в 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)

Figure contains 2 axes. Axes 1 with title y1 contains an object of type line. This object represents data. Axes 2 with title u1 contains an object of type line. This object represents 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')

Figure contains 2 axes. Axes 1 with title y1 contains 2 objects of type line. These objects represent Original, Detrended. Axes 2 with title u1 contains 2 objects of type line. These objects represent 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)

Figure contains an axes. The axes with title y1 contains an object of type line. This object represents 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')

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent 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

Figure contains an axes. The axes with title y1 contains 3 objects of type line. These objects represent datmult(exp1), datmult(exp2), datmult(exp3).

Для этого набора экспериментов известно, что существует уникальный тренд для каждого прогона и уникальные разрывы, указанные 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

Figure contains an axes. The axes with title y1 contains 3 objects of type line. These objects represent datmult\_d(exp1), datmult\_d(exp2), datmult\_d(exp3).

Экспериментальные данные теперь лучше выровнены и не дрейфуют значительно от нулевого среднего.

Применение различных типов трендов к входным и выходным сигналам, содержащимся в 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

Figure contains 2 axes. Axes 1 with title y1 contains an object of type line. This object represents iodatab. Axes 2 with title u1 contains an object of type line. This object represents iodatab.

Как графики ввода, так и графики вывода показывают смещение. Однако график вывода также показывает инвертированный 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')

Figure contains 2 axes. Axes 1 with title y1 contains 2 objects of type line. These objects represent original, detrended. Axes 2 with title u1 contains 2 objects of type line. These objects represent original, detrended.

Входные и выходные данные теперь не содержат ни смещения, ни V-образного тренда.

Входные аргументы

свернуть все

Входные-выходные данные временной области, указанные как iddata объект, содержащий один или более наборов сигналов временной области. iddata объект может содержать данные SISO, MIMO или данные мультиэксперимента. Наборы сигналов могут содержать либо входные и выходные данные, либо только выходные данные.

Вычитаемый тип тренда, указанный как один из:

  • 0 - вычислить и вычесть среднее значение

  • 1 - Вычисление и вычитание линейного тренда (подгонка методом наименьших квадратов)

  • TrendInfo object - вычитание тренда, указанного в TrendInfo объект. Использовать getTrend для создания TrendInfo объект. Пример см. в разделе Удаление указанных смещений из сигналов.

Местоположения временных точек прерываний трендов (точки останова), указанные как:

Выходные аргументы

свернуть все

Сдержанные сигналы, возвращенные в виде iddata объект. Размеры содержимого совпадают с размерами содержимого data.

Данные тренда вычитаются из data произвести data_d, возвращено как TrendInfo объект.

При использовании brkpt чтобы указать несколько трендов, нельзя извлечь вычисленные данные тренда.

См. также

| | |

Представлен до R2006a