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(___) также возвращает вычтенный тренд как a TrendInfo объект T_r. Можно получить T_r с любой из комбинаций входных аргументов в предыдущих синтаксисах.

пример

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 и постройте результат, с помощью той же шкалы в качестве исходного plot.

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

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

Примените различные типы тренда к сигналам ввода и вывода, содержавшимся в an 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 объект — вычитает тренд, который вы задаете в TrendInfo объект. Использование getTrend создать a TrendInfo объект. Для примера смотрите, Удаляют Заданные Смещения из Сигналов.

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

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

свернуть все

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

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

Когда вы используете brkpt чтобы задать несколько трендов, вы не можете получить вычисленные данные о тренде.

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

| | |

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