exponenta event banner

iddata

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

Описание

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

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

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

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

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

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

.

Создание

Описание

пример

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

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

пример

data = iddata(y,[],Ts) создает iddata объект для данных временных рядов. Объект содержит выходной сигнал временной области 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-на-Ny для системы с несколькими выходами, где Ny - количество выходных каналов

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

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

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

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

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

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

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

  • Матрица N-за-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-by-Ne ячеек, где Ne - количество экспериментов, и каждая ячейка содержит частотный вектор для соответствующего эксперимента. Все частотные векторы должны состоять из одних и тех же единиц.

Частотные единицы для данных частотной области, указанные как одно из следующих:

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

    Массив 1-by-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-на-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-by-Ne ячеек, где Ne - количество экспериментов, и каждая ячейка содержит скаляр или вектор периодов для соответствующего эксперимента.

Значения времени для данных временной области в единицах, указанных TimeUnit, указано как:

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

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

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

Единицы измерения для переменной времени и времени выборки, заданного как скаляр. Это свойство применяется ко всем экспериментам в наборе данных.

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

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

  • Скаляр, когда y и u равномерно отбираются пробы

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

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

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

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

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

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

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

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

  • Массив 1-by-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Фильтрация данных с помощью пользовательских полос пропускания, общих фильтров или фильтров Butterworth
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 с использованием данных временной области с одним входом/одним выходом (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 объект из данных временных рядов. Данные временного ряда не имеют входного канала.

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

Создание и проверка 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: []

Назначение содержимого свойства frequency переменной 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 объект, используйте точечную нотацию. Изменение свойства sample time 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