iddata

Данные ввода - вывода и их свойства для идентификации системыво временной или частотной областях

Описание

Используйте iddata объект инкапсулировать данные об измерении ввода и вывода для системы вы хотите идентифицировать. Функции системы идентификации используют эти измерения, чтобы оценить модель. Функции проверки допустимости модели используют входные измерения, чтобы обеспечить вход для симуляций и выходных измерений, чтобы выдержать сравнение, как хорошо предполагаемый ответ модели соответствует исходным данным.

iddata объекты могут содержать один набор измерений или несколько наборов. Каждый набор данных соответствует experiment. Объекты имеют следующие характеристики, которые закодированы в свойствах объектов:

  • Данные могут быть в частотном диапазоне или временном интервале. Можно преобразовать объекты от одной области до другого.

  • Во временном интервале могут быть однородно или неоднородно произведены данные. Использовать iddata объект для оценки, однако, данные должны быть однородно произведены, и входные и выходные данные для каждого эксперимента должны быть зарегистрированы одновременно моменты.

  • Можно задать свойства данных, такие как шаг расчета, время начала, моменты времени, точки выборки частоты и междемонстрационное поведение.

  • Можно обеспечить метки и комментарии, чтобы дифференцировать и аннотировать компоненты данных, эксперименты и объект в целом.

.

Создание

Описание

пример

data = iddata(y,u,Ts) создает iddata объект, содержащий выходной сигнал временного интервала y и входной сигнал u. Ts задает шаг расчета экспериментальных данных.

Можно использовать iddata создать мультиэксперимент iddata объект путем определения y и u как массивы ячеек. В качестве альтернативы можно создать одно эксперимент iddata объекты и использование merge (iddata) объединить объекты в один мультиэксперимент iddata объект. Для получения дополнительной информации о мультиэксперименте iddata объекты, смотрите, Создают Данные о Мультиэксперименте в Командной строке.

пример

data = iddata(y,[],Ts) создает iddata объект для данных timeseries. Объект содержит выходной сигнал временного интервала y и пустой входной сигнал []. Ts задает шаг расчета экспериментальных данных.

пример

data = iddata(y,u,Ts,'Frequency',W) создает iddata объект, содержащий данные частотной области. W устанавливает iddata свойство Frequency к вектору из частот. Как правило, y и u дискретное преобразование Фурье сигналов временной области.

пример

data = iddata(___,Name,Value) аргументы пары "имя-значение" использования дополнительных свойств наборов. Задайте Name,Value после любой из комбинаций входных аргументов в предыдущих синтаксисах.

Входные параметры

развернуть все

Выходной сигнал системы в виде одного из следующего:

  • N-by-1 вектор для одной выходной системы, где N является количеством наблюдений

  • N-by-Ny матрица для нескольких - выходная система, где Ny является количеством выходных каналов

  • Массив ячеек элемента Ne для набора данных мультиэксперимента, где Ne является количеством экспериментов и каждой ячейки, содержит выходные сигналы для одного эксперимента

  • [] для системы, которая не имеет никакого выходного сигнала, такой как тогда, когда только входной сигнал зарегистрирован

y должен быть в той же области как входные данные u. Если данные находятся во временном интервале, y и u должен быть зарегистрирован одновременно моменты.

Если вы используете iddata объект для оценки, y и u должен быть однородно произведен. Если неоднородность мала, можно смочь к способному преобразовать данные в однородно произведенный набор с достаточной целостностью что конвертированная оценка информационной поддержки. Для получения дополнительной информации о методах можно попробовать, видеть interp1 и Пропавшие без вести данных в MATLAB.

y устанавливает OutputData свойство iddata объект.

Входной сигнал к системе в виде одного из следующего:

  • N-by-1 вектор для одной входной системы, где N является количеством наблюдений

  • N-by-Nu матрица для нескольких - входная система, где Nu является количеством входных каналов

  • Массив ячеек элемента Ne для набора данных мультиэксперимента, где Ne является количеством экспериментов и каждой ячейки, содержит входные сигналы для одного эксперимента

  • [] для системы, которая не имеет никакого входного сигнала, такого как временные ряды

u должен быть в той же области как выходные данные y. Если данные находятся во временном интервале, y и u должен быть зарегистрирован одновременно моменты.

Если вы используете iddata объект для оценки, y и u должен быть однородно произведен. Если неоднородность мала, можно смочь к способному преобразовать данные в однородно произведенный набор с достаточной целостностью что конвертированная оценка информационной поддержки. Для получения дополнительной информации о методах можно попробовать, видеть interp1 и Пропавшие без вести данных в MATLAB.

u устанавливает InputData свойство iddata объект.

Шаг расчета в модулях задан свойством TimeUnitВ виде одного из следующего:

  • Скаляр, когда y и u однородно производятся.

  • 0 для данных непрерывного времени в частотном диапазоне.

  • [] когда y и u однородно не производятся и вы задаете временные стоимости в свойстве SamplingInstants. Для неоднородной выборки, y и u должен быть во временном интервале.

Ts устанавливает Ts свойство iddata объект.

Свойства

развернуть все

Время данных или частотный диапазон в виде также:

  • 'Time' — Данные находятся во временном интервале

  • 'Frequency' — Данные находятся в частотном диапазоне

Имя каждого набора данных, содержавшегося в iddata объект в виде Ne-by-1 массив ячеек из символьных векторов, где Ne является количеством экспериментов. Каждая ячейка содержит имя соответствующего эксперимента. Например, {'MyMeas1';'MyMeas2';'MyMeas3'} содержит имена эксперимента для с тремя экспериментами iddata объект.

Значения частоты для данных частотной области в виде также:

  • N-by-1 вектор, где N является количеством значений частоты в одном эксперименте

  • 1 Ne массивом ячеек, где Ne является количеством экспериментов и каждой ячейки, содержит вектор частоты для соответствующего эксперимента. Векторы частоты должны все быть в тех же модулях.

Единицы частоты для данных частотной области в виде одного из следующего:

  1. Скаляр для одного эксперимента.

    1 Ne массивом ячеек, где Ne является количеством экспериментов. Поскольку весь Frequency векторы должны иметь те же модули, все значения FrequencyUnit должно быть то же самое.

Изменение этого свойства не масштабирует или преобразует данные. Изменение свойства изменяет только интерпретацию существующих данных.

Значения входного сигнала к системе в виде одного из следующего:

  • Для одного эксперимента N-by-Nu матрица, где N является количеством выборок данных и Nu, является количеством входных каналов

  • Для нескольких экспериментов, массив ячеек, содержащий матрицы одно эксперимента Ne, где Ne является количеством экспериментов

При доступе к InputData из командной строки можно использовать краткую форму u. Например, u1 = data.InputData эквивалентно u1 = data.u.

Введите названия канала в виде Nu-by-1 массив ячеек, где Nu является количеством входных каналов.

Введите модули канала в виде Nu-by-1 массив ячеек, где Nu является количеством входных каналов. Каждая ячейка содержит модули соответствующего входного канала.

Пример: {'rad';'rad/s'}

Междемонстрационное поведение для преобразований между дискретным временем и непрерывным временем в виде вектора символов или как массив ячеек из символьных векторов. Для каждого эксперимента возможные значения для каждого входного канала:

  • zoh — Нулевой порядок содержит, обеспечивает кусочно-постоянный входной сигнал между выборками.

  • foh — Хранение первого порядка обеспечивает кусочно-линейный входной сигнал между выборками.

  • bl — Ограниченное полосой поведение указывает, что входной сигнал непрерывного времени имеет нулевую силу выше частоты Найквиста.

Для одного эксперимента с одним входным каналом, InterSample содержит одно из значений в предыдущем списке. Для нескольких экспериментов, InterSample Nu-by-Ne массив ячеек, где Nu является количеством входных каналов, и Ne является количеством экспериментов. Каждая ячейка содержит значение поведения, сопоставленное с экспериментом и входным каналом, который представляет ячейка.

Имя набора данных в виде вектора символов.

Пример: 'dryer data'

Комментарии о наборе данных в виде вектора символов или, для наборов данных мультиэксперимента, Ne-by-1 массив ячеек из символьных векторов, где Ne является количеством экспериментов.

Пример: {'data from experiment 1';data from experiment 2'}

Значения выходного сигнала от системы в виде одного из следующего:

  • Для одного эксперимента N-by-Ny матрица, где N является количеством выборок данных и Ny, является количеством выходных каналов

  • Для нескольких экспериментов, массив ячеек, содержащий матрицы одно эксперимента Ne, где Ne является количеством экспериментов

При доступе к OutputData из командной строки можно использовать краткую форму y. Например, y1 = data.InputData эквивалентно y1 = data.y.

Выведите названия канала в виде Ny-by-1 массив ячеек, где Ny является количеством выходных каналов.

Выведите модули канала в виде Ny-by-1 массив ячеек, где Nu является количеством выходных каналов. Каждая ячейка содержит модули соответствующего входного канала.

Пример: {'rad';'rad/s'}

Период входного сигнала в виде двойного для каждого эксперимента. Значением является любой Inf для апериодических входных сигналов или периода в модулях, заданных свойством TimeUnit для периодических входных сигналов.

  • Для одного эксперимента с одним входным каналом, Period содержит одно значение.

  • Для нескольких - входная система, Period Nu-by-1 вектор, где Nu является количеством входных каналов, и k th запись содержит период k th вход.

  • Для данных нескольких-экспериментов, Period 1 Ne массивом ячеек, где Ne является количеством экспериментов, и каждая ячейка содержит скаляр или вектор из периодов для соответствующего эксперимента.

Временные стоимости для данных временного интервала в модулях заданы TimeUnitВ виде:

  • N-by-1 вектор, где N является количеством точек данных

  • 1 Ne массивом ячеек, где Ne является количеством экспериментов и каждой ячейки, содержит моменты выборки для соответствующего эксперимента.

Значения в SamplingInstants может быть универсальным или неоднородным. Если вы задаете Ts свойство, программное обеспечение вычисляет универсальные временные стоимости в SamplingInstants от Ts и Tstart. Если вы имеете неоднородные точки выборки, задаете временные стоимости в SamplingInstants. Программное обеспечение затем устанавливает Ts свойство опустеть. Функции оценки не поддерживают неоднородную выборку.

Модули для переменной времени и шага расчета в виде скаляра. Это свойство применяется ко всем экспериментам в наборе данных.

Изменение этого свойства не передискретизирует или преобразует данные. Изменение свойства изменяет только интерпретацию существующих данных.

Шаг расчета в модулях задан TimeUnitВ виде скаляра или массива ячеек. Для каждого эксперимента значение является одним из следующего:

  • Скаляр, когда y и u однородно производятся

  • 0 для данных непрерывного времени в частотном диапазоне

  • [] когда y и u однородно не производятся и во временном интервале, потому что SamplingInstants наборы свойств временные стоимости для таких данных.

Для одного эксперимента, Ts скаляр. Для данных о мультиэксперименте, Ts 1 Ne массивом ячеек, где Ne является количеством экспериментов, и каждая ячейка содержит шаг расчета для соответствующего эксперимента.

Для данных частотной области программное обеспечение использует Ts интерпретировать данные.

  • Если Ts 0, программное обеспечение интерпретирует вводы и выводы как преобразования Фурье непрерывного времени (CTFTs) соответствующих сигналов.

  • Если Ts скаляр, программное обеспечение интерпретирует вводы и выводы как преобразования Фурье дискретного времени (DTFTs) соответствующих сигналов с Ts как шаг расчета.

Время начала для данных временного интервала в виде:

  • Скаляр для одного эксперимента

  • 1 Ne массивом ячеек для нескольких экспериментов, где Ne является количеством экспериментов и каждой ячейки, содержит время начала для соответствующего эксперимента

Дополнительные комментарии к набору данных в виде любого типа данных MATLAB.

Функции объекта

В общем случае любая функция, применимая к данным о системе идентификации, применима к iddata объект. Эти функции имеют три общих типа.

  1. Функции, которые и работают с и возвращают iddata объекты позволяют вам управлять и обработать iddata объекты.

    • Использование fft и ifft преобразовать существующий iddata объекты к и от временного и частотного диапазона. Например:

      datafd = fft(Data);
      datatd = ifft(Dataf);

    • Использование merge (iddata) объединять iddata объекты в один iddata объект, содержащий несколько экспериментов. Извлекать эксперимент из мультиэксперимента iddata объект, использовать getexp. Например:

      data123 = merge(data1,data2,data3);
      data2 = getexp(data123,2);
      

      Для более подробного примера см. Извлечение и Определенные Сегменты Данных Модели.

    • Используйте функции предварительной обработки такой как detrend или idfilt отфильтровать данные в iddata объекты и удалить неправильные данные. Например:

      data_d = detrend(data);
      data_f = idfilt(data,filter);

  2. Функции, которые выполняют аналитическую обработку на iddata объекты и создают графики или возвращают определенные параметры, или значения позволяют вам анализировать данные и определить входные параметры, чтобы использовать для оценки.

    • Используйте аналитические функции такой как delayest и spa вычислить переменные, такие как спектр частоты и задержка.

  3. Функции, которые используют данные в iddata объекты оценить, симулируйте и подтвердите модели, которым позволяют вы создать динамические модели и оценить, как тесно ответ модели совпадает с данными о валидации.

    • Используйте функции оценки такой как ssest и tfest оценить модели с определенными структурами.

    • Используйте функции валидации такой как compare и sim симулировать оцененные модели и сравнить симулированные выходные параметры с данными о валидации и с другими моделями.

    Следующие списки содержат представительное подмножество функций, которые можно использовать с iddata объекты.

развернуть все

plotПостройте графики входного и выходного каналов iddata объект
getexpОпределенные эксперименты из набора данных нескольких экспериментов
merge (iddata)Объедините наборы данных в объект iddata
detrendВычтите смещение или тренд от сигналов временной области, содержавшихся в iddata объекты
retrendДобавьте смещения или тренды к сигналам данных временного интервала, сохраненным в iddata объекты
idfiltОтфильтруйте данные с помощью пользовательских полос пропускания, общих фильтров или Фильтров Баттерворта
diffДифференцируйте сигналы в iddata объектах
misdataВосстановите недостающие входные и выходные данные
idresampПередискретизируйте данные временного интервала прореживанием или интерполяцией
fftПреобразовать iddata возразите против данных частотной области
ifftПреобразуйте iddata объекты из частотной во временную области
realdataОпределите ли iddata основан на вещественных сигналах
delayestОцените задержку (потеря времени) из данных
isrealОпределите, являются ли значения параметров модели или данных вещественными
impulseestНепараметрическая оценка импульсной характеристики
pexcitУровень возбуждения входных сигналов
feedbackИдентифицируйте возможные данные об обратной связи
etfeОцените эмпирические передаточные функции и периодограммы
spafdrОцените частотную характеристику и спектр с помощью спектрального анализа с частотно-зависимым разрешением
spaОцените частотную характеристику с разрешением фиксированной частоты с помощью спектрального анализа
iddataPlotOptionsОпция установлена для plot когда отображение на графике данных содержится в iddata объект
ssestОцените модель в пространстве состояний с помощью временного интервала или данных частотной области
tfestОцените передаточную функцию
arОцените параметры модели AR или модели ARI для скалярных временных рядов
simСимулируйте ответ идентифицированной модели
findstatesОцените начальные состояния модели
compareСравните идентифицированный выход модели и измеренный выход
predictПредскажите выходK-step-ahead модели
goodnessOfFitКачество подгонки между тестовыми и заданными данными для анализа и валидации идентифицированных моделей
procestОцените модель процесса, использующую данные о частоте или время
residВычислите и протестируйте остаточные значения

Примеры

свернуть все

Создайте iddata объект с помощью single-input/single-output (SISO) данные временного интервала. Ввод и вывод каждый содержит 1 000 выборок с шагом расчета 0,08 секунд.

load dryer2_data output input;
data = iddata(output,input,0.08)
data =

Time domain data set with 1000 samples.
Sample time: 0.08 seconds               
                                        
Outputs      Unit (if specified)        
   y1                                   
                                        
Inputs       Unit (if specified)        
   u1                                   
                                        

Программное обеспечение присваивает название канала по умолчанию 'y1' к первому и единственному выходному каналу. Когда выходной сигнал содержит несколько каналов, программное обеспечение присваивает имена по умолчанию 'y1','y2',...,'yn'. Точно так же программное обеспечение присваивает название канала по умолчанию 'u1' к первому и единственному входному каналу. Для получения дополнительной информации об именовании каналов, смотрите Именование, Добавление и Удаление Каналов Данных.

Отобразите данные на графике.

plot(data)

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

Данные об отображаемом выводе прилегающих участков и входные данные.

Создайте iddata объект из данных timeseries. Данные timeseries не имеют никакого входного канала.

Загрузите выходной канал набора данных и создайте iddata объект, который имеет шаг расчета 0,08 секунд.

load dryer2_data output
data = iddata(output,[],0.08)
data =

Time domain data set with 1000 samples.
Sample time: 0.08 seconds               
                                        
Outputs      Unit (if specified)        
   y1                                   
                                        

Отобразите данные на графике.

plot(data)

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

Можно использовать data для оценки модели timeseries.

Создайте и исследуйте iddata объект из данных ввода - вывода частотного диапазона с комплексным знаком. Преобразуйте объект во временной интервал.

Входные и выходные данные иногда описываются в форме преобразований Фурье сигналов ввода - вывода временного интервала. Можно инкапсулировать эти данные в частотном диапазоне iddata объект.

Загрузите данные, которые состоят из данных частотной области ввода - вывода с комплексным знаком U и Y, вектор частоты W, и шаг расчета Ts.

load demofr1 U Y W Ts

Создайте частотный диапазон iddata объект data_fr.

data_fr = iddata(Y,U,Ts,'Frequency',W)
data_fr =

Frequency domain data set with responses at 501 frequencies.
Frequency range: 0 to 31.416 rad/seconds
Sample time: 0.1 seconds                                                                              
                                                                                                      
Outputs      Unit (if specified)                                                                      
   y1                                                                                                 
                                                                                                      
Inputs       Unit (if specified)                                                                      
   u1                                                                                                 
                                                                                                      

Исследуйте свойства. Частотный диапазон iddata объекты включают специфичные для частоты свойства, такие как Frequency для вектора частоты и FrequencyUnit для единиц частоты. В отличие от этого временной интервал iddata объекты включают специфичные для времени свойства, такие как Tstart и SamplingInstants для данных временного интервала.

get(data_fr)
ans = struct with fields:
            Domain: 'Frequency'
              Name: ''
        OutputData: [501x1 double]
                 y: 'Same as OutputData'
        OutputName: {'y1'}
        OutputUnit: {''}
         InputData: [501x1 double]
                 u: 'Same as InputData'
         InputName: {'u1'}
         InputUnit: {''}
            Period: Inf
       InterSample: 'zoh'
                Ts: 0.1000
     FrequencyUnit: 'rad/TimeUnit'
         Frequency: [501x1 double]
          TimeUnit: 'seconds'
    ExperimentName: 'Exp1'
             Notes: {}
          UserData: []

Присвойте содержимое свойства частоты к переменной F.

F = data_fr.Frequency;

Получите единицы частоты данных. Свойство TimeUnit устанавливает модули шага расчета.

frequ = data_fr.FrequencyUnit
frequ = 
'rad/TimeUnit'
timeu = data_fr.TimeUnit
timeu = 
'seconds'

Преобразуйте data_fr назад во временной интервал при помощи обратного преобразования Фурье функционируют ifft.

data_t = ifft(data_fr)
data_t =

Time domain data set with 1000 samples.
Sample time: 0.1 seconds                
                                        
Outputs      Unit (if specified)        
   y1                                   
                                        
Inputs       Unit (if specified)        
   u1                                   
                                        
get(data_t)
ans = struct with fields:
              Domain: 'Time'
                Name: ''
          OutputData: [1000x1 double]
                   y: 'Same as OutputData'
          OutputName: {'y1'}
          OutputUnit: {''}
           InputData: [1000x1 double]
                   u: 'Same as InputData'
           InputName: {'u1'}
           InputUnit: {''}
              Period: Inf
         InterSample: 'zoh'
                  Ts: 0.1000
              Tstart: []
    SamplingInstants: []
            TimeUnit: 'seconds'
      ExperimentName: 'Exp1'
               Notes: {}
            UserData: []

Просмотрите свойства iddata объект. Измените свойства оба в течение и после создания объекта.

Загрузите входные и выходные данные.

load dryer2_data input output

Создайте iddata объект.

data = iddata(output,input,0.08)
data =

Time domain data set with 1000 samples.
Sample time: 0.08 seconds               
                                        
Outputs      Unit (if specified)        
   y1                                   
                                        
Inputs       Unit (if specified)        
   u1                                   
                                        

Просмотрите все свойства iddata объект.

get(data)
ans = struct with fields:
              Domain: 'Time'
                Name: ''
          OutputData: [1000x1 double]
                   y: 'Same as OutputData'
          OutputName: {'y1'}
          OutputUnit: {''}
           InputData: [1000x1 double]
                   u: 'Same as InputData'
           InputName: {'u1'}
           InputUnit: {''}
              Period: Inf
         InterSample: 'zoh'
                  Ts: 0.0800
              Tstart: []
    SamplingInstants: [1000x0 double]
            TimeUnit: 'seconds'
      ExperimentName: 'Exp1'
               Notes: {}
            UserData: []

Можно задать свойства, когда вы создаете iddata аргументы пары "имя-значение" использования объекта. Создайте iddata объект от тех же вводов данных, но изменяют название эксперимента от его настройки по умолчанию до Dryer2.

data = iddata(output,input,0.08,'ExperimentName','Dryer2')
data =

Experiment Dryer2.Time domain data set with 1000 samples.
Sample time: 0.08 seconds                                 
                                                          
Outputs      Unit (if specified)                          
   y1                                                     
                                                          
Inputs       Unit (if specified)                          
   u1                                                     
                                                          

Изменить значения свойств для существующего iddata объект, используйте запись через точку. Измените свойство Ts шага расчета к 0,05 секундам.

data.Ts = 0.05
data =

Experiment Dryer2.Time domain data set with 1000 samples.
Sample time: 0.05 seconds                                 
                                                          
Outputs      Unit (if specified)                          
   y1                                                     
                                                          
Inputs       Unit (if specified)                          
   u1                                                     
                                                          

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

data.exp = "Dryer2 January 2015"
data =

Experiment Dryer2 January 2015.Time domain data set with 1000 samples.
Sample time: 0.05 seconds                                              
                                                                       
Outputs                   Unit (if specified)                          
   y1                                                                  
                                                                       
Inputs                    Unit (if specified)                          
   u1                                                                  
                                                                       

Можно использовать data.y как сокращение для data.OutputData получить доступ к выходным значениям или использовать data.u как сокращение для data.InputData получить доступ к входным значениям.

y_data = data.y;
u_data = data.u;
Представлено до R2006a