iddata

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

Описание

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

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

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

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

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

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

.

Создание

Описание

пример

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

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

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

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

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

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

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

Пример: 'dryer data'

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

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

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

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

  • Если Ts является скаляром, программное обеспечение интерпретирует входы и выходы как преобразования Фурье в дискретном времени (DTFT) соответствующих сигналов с 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-шага вперед
goodnessOfFitКачество подгонки между тестовыми и эталонными данными для анализа и валидации идентифицированных моделей
procestОцените модель процесса с помощью временных или частотных данных
residВычисление и тестирование невязок

Примеры

свернуть все

Создайте iddata объект с использованием данных временной области с одним входом/одним выходом (SISO). Каждый вход и выход содержат 1000 выборки со шаг расчета 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. 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.

Смежные графики отображают выходные данные и входные данные.

Создайте 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. The axes 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