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 с любыми комбинациями входных аргументов в предыдущих синтаксисах.

пример

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

The OutputOffset и OutputSlope свойства обеспечивают параметры линии, которая detrend удален. Можно восстановить эту линию, а затем наложить ее на график данных перед и после. The 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

Детрендируйте данные, используя brkpт.

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 объект - вычесть тренд, указанный в TrendInfo объект. Использовать getTrend для создания TrendInfo объект. Например, см. «пример заданных смещений из сигналов».

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

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

свернуть все

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

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

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

См. также

| | |

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