Представление времени - и данные частотного диапазона Используя объекты iddata

Конструктор iddata

Требования для Построения Объекта iddata

Чтобы создать объект iddata, вы, должно быть, уже импортировали данные в рабочую область MATLAB®, как описано в Представлении Данных в рабочем пространстве MATLAB.

Построение Объекта iddata для Данных Временного интервала

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

data = iddata(y,u,Ts)

Можно также задать дополнительные свойства, можно следующим образом:

data = iddata(y,u,Ts,'Property1',Value1,...,'PropertyN',ValueN)

Для получения дополнительной информации о доступе к свойствам объектов, смотрите Свойства.

В этом примере Ts является шагом расчета или временным интервалом, между последовательными выборками данных. Для однородно выборочных данных Ts является скалярным значением, равным шагу расчета вашего эксперимента. Единица измерения времени по умолчанию является секундами, но можно установить ее на новое значение с помощью свойства TimeUnit. Для получения дополнительной информации о свойствах времени iddata, смотрите Векторы Времени и Частоты Изменения.

Для неоднородно выборочных данных задайте Ts как [] и установите значение свойства SamplingInstants как вектор-столбец, содержащий отдельные временные стоимости. Например:

data = iddata(y,u,[],'SamplingInstants',TimeVector)

Где TimeVector представляет вектор временных стоимостей.

Примечание

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

Чтобы представлять данные timeseries, используйте следующий синтаксис:

ts_data = iddata(y,[],Ts)

где y является выходными данными, [] указывает на пустые входные данные, и Ts является шагом расчета.

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

% Load input u2 and output y2 .
load dryer2                 
% Create iddata object.
data = iddata(y2,u2,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' присвоено первому и единственному выходному каналу. Когда y2 содержит несколько каналов, каналы являются присвоенными именами по умолчанию 'y1','y2','y2',...,'yn'. Точно так же название канала по умолчанию 'u1' присвоено первому и единственному входному каналу. Для получения дополнительной информации об именовании каналов, смотрите Именование, Добавление и Удаление Каналов Данных.

Построение Объекта iddata для Данных Частотного диапазона

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

data = iddata(y,u,Ts,'Frequency',w)

'Frequency' является свойством iddata, которое задает значения частоты w, где w является вектор-столбцом частоты, который задает частоты, на которых вычисляются значения преобразования Фурье y и u. Ts является временным интервалом между последовательными выборками данных в секундах для исходных данных временного интервала. w, y и u имеют одинаковое число строк.

Примечание

Необходимо задать вектор частоты для данных частотного диапазона.

Для получения дополнительной информации во время iddata и свойства частоты, смотрите Векторы Времени и Частоты Изменения.

Чтобы задать непрерывно-разовую систему, установите Ts на 0.

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

data = iddata(y,u,Ts,'Property1',Value1,...,'PropertyN',ValueN)

Для получения дополнительной информации о доступе к свойствам объектов, смотрите Свойства.

Свойства iddata

Чтобы просмотреть свойства объекта iddata, используйте команду get. Например, введите следующие команды в подсказке:

% Load input u2 and output y2.
load dryer2                 
% Create iddata object.
data = iddata(y2,u2,0.08);  
% Get property values of data.
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 с помощью синтаксиса конструктора:

data = iddata(y,u,Ts,'Property1',Value1,...,'PropertyN',ValueN)

Чтобы изменить значения свойств для существующего объекта iddata, используйте команду set или запись через точку. Например, чтобы изменить шаг расчета на 0.05, введите следующее в подсказке:

set(data,'Ts',0.05)

или эквивалентно:

data.ts = 0.05

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

Совет

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

Объект iddata, содержащий данные частотного диапазона, включает специфичные для частоты свойства, такие как Frequency для вектора частоты и Units для единиц частоты (вместо Tstart и SamplingInstants).

Чтобы просмотреть список свойств, введите следующую последовательность команды в подсказке:

% Load input u2 and output y2.
  load dryer2;
% Create iddata object.
  data = iddata(y2,u2,0.08);
% Take the Fourier transform of the data
% transforming it to frequency domain.
  data = fft(data)           
data =

Frequency domain data set with responses at 501 frequencies.
Frequency range: 0 to 39.27 rad/seconds
Sample time: 0.08 seconds                                                                            
                                                                                                     
Outputs      Unit (if specified)                                                                     
   y1                                                                                                
                                                                                                     
Inputs       Unit (if specified)                                                                     
   u1                                                                                                
                                                                                                     
% Get property values of data.
  get(data)
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.0800
     FrequencyUnit: 'rad/TimeUnit'
         Frequency: [501x1 double]
          TimeUnit: 'seconds'
    ExperimentName: 'Exp1'
             Notes: {}
          UserData: []

Выберите Data Channels, I/O Data и Experiments в Объектах iddata

Подссылка на входные и выходные данные

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

Используйте следующий общий синтаксис, чтобы подсослаться на определенные значения данных в объектах iddata:

data(samples,outputchannels,inputchannels,experimentname)

В этом синтаксисе samples указывает, что один или несколько демонстрационных индексов, outputchannels и inputchannels задают индексы канала или названия канала, и experimentname задает индексы эксперимента или имена.

Например, чтобы получить выборки 5 через 30 в объекте iddata data и сохранить их в новом объекте iddata data_sub, используйте следующий синтаксис:

data_sub = data(5:30)

Можно также использовать логические выражения для подсправочных данных. Например, чтобы получить все значения данных из набора данных одно эксперимента, которые падают между демонстрационными моментами 1.27 и 9.3 в объекте iddata data и присваивают их data_sub, используйте следующий синтаксис:

data_sub = data(data.sa>1.27&data.sa<9.3)

Примечание

Вы не должны вводить целое имя свойства. В этом примере sa в data.sa однозначно определяет свойство SamplingInstants.

Можно получить входной сигнал из объекта iddata с помощью следующих команд:

u = get(data,'InputData')

или

data.InputData

или

data.u    % u is the abbreviation for InputData

Точно так же можно получить использование выходных данных

data.OutputData 

или

data.y    % y is the abbreviation for OutputData

Подссылка на каналы данных

Используйте следующий общий синтаксис, чтобы подсослаться на определенные каналы данных в объектах iddata:

data(samples,outputchannels,inputchannels,experiment)

В этом синтаксисе samples указывает, что один или несколько демонстрационных индексов, outputchannels и inputchannels задают индексы канала или названия канала, и experimentname задает индексы эксперимента или имена.

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

Например, предположите объект iddata, data содержит три выходных канала (названный y1, y2 и y3), и четыре входных канала (названный u1, u2, u3 и u4). Чтобы выбрать все выборки данных в y3, u1 и u4, вводят следующую команду в подсказке:

% Use a cell array to reference
% input channels 'u1' and 'u4'
data_sub = data(:,'y3',{'u1','u4'})

или эквивалентно

% Use channel indexes 1 and 4
% to reference the input channels
  data_sub = data(:,3,[1 4])

Совет

Используйте двоеточие (:), чтобы задать все выборки или все каналы и пустую матрицу ([]), чтобы не задать выборки или никакие каналы.

Если вы хотите создать объект timeseries путем извлечения только выходных данных от объекта iddata, введите следующую команду:

data_ts = data(:,:,[])

Можно присвоить новые значения переменным, на которые подссылаются. Например, следующая команда присваивает первые 10 значений выходного канала 1 data к значениям в выборках 101 через 110 в выходном канале 2 data1. Это также присваивает значения в выборках 101 через 110 во входном канале 3 data1 к первым 10 значениям входного канала 1 data.

data(1:10,1,1) = data1(101:110,2,3)

Подссылка на эксперименты

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

data(samples,outputchannels,inputchannels,experimentname)

В этом синтаксисе samples указывает, что один или несколько демонстрационных индексов, outputchannels и inputchannels задают индексы канала или названия канала, и experimentname задает индексы эксперимента или имена.

При определении нескольких имен эксперимента необходимо использовать массив ячеек из символьных векторов имен. Объектно-ориентированная память iddata экспериментирует имя в свойстве ExperimentName.

Например, предположите объект iddata, data содержит пять экспериментов с именами по умолчанию, Exp1, Exp2, Exp3, Exp4 и Exp5. Используйте следующий синтаксис, чтобы подсослаться на первый и пятый эксперимент в data:

data_sub = data(:,:,:,{'Exp1','Exp5'}) % Using experiment name

или

data_sub = data(:,:,:,[1 5])           % Using experiment index

Совет

Используйте двоеточие (:), чтобы обозначить все выборки и все каналы и пустую матрицу ([]), чтобы не задать выборки и никакие каналы.

Также можно использовать команду getexp. Следующий пример показывает, как подсослаться на первый и пятый эксперимент в data:

data_sub = getexp(data,{'Exp1','Exp5'}) % Using experiment name

или

data_sub = getexp(data,[1 5])           % Using experiment index

Следующий пример показывает, как получить первые 100 выборок выходных каналов 2 и 3 и ввести каналы 4 - 8 из Эксперимента 3:

dat(1:100,[2,3],[4:8],3)

Растущее число Каналов или Точки данных Объектов iddata

Свойства iddata, Хранящие Входные и выходные данные

Свойство InputData iddata хранит постолбцовые входные данные, и свойство OutputData хранит постолбцовые выходные данные. Для получения дополнительной информации о доступе к свойствам iddata, см. iddata Свойства.

Горизонтальная конкатенация

Горизонтальная конкатенация объектов iddata создает новый объект iddata, который добавляет всю информацию о InputData и весь OutputData. Этот тип конкатенации производит отдельный объект с большим количеством каналов ввода и вывода. Например, следующий синтаксис выполняет горизонтальную конкатенацию на объектах iddata data1,data2,...,dataN:

data = [data1,data2,...,dataN]

Этот синтаксис эквивалентен следующему более длинному синтаксису:

data.InputData =
     [data1.InputData,data2.InputData,...,dataN.InputData]
data.OutputData =
     [data1.OutputData,data2.OutputData,...,dataN.OutputData]

Для горизонтальной конкатенации data1,data2,...,dataN должен иметь то же количество выборок и экспериментов, и значений Tstart и sameTs.

Каналы в конкатенированном объекте iddata называют согласно следующим правилам:

  • Объединение названий канала по умолчанию — Если вы конкатенируете объекты iddata с названиями канала по умолчанию, такими как u1 и y1, каналы в новом объекте iddata, автоматически переименовано, чтобы избежать дублирования имени.

  • Комбинируя дублирующиеся входные каналы — Если data1,data2,...,dataN ввел каналы с дублирующимися пользовательскими именами, такими, что dataK содержит названия канала, которые уже присутствуют в dataJ с J < K, каналы dataK проигнорированы.

  • Объединение дублирующихся выходных каналов — Если data1,data2,...,dataN ввел каналы с дублирующимися пользовательскими именами, только выходные каналы с уникальными именами, добавляется во время конкатенации.

Вертикальная конкатенация

Вертикальная конкатенация объектов iddata создает новый объект iddata, который вертикально складывает значения входных и выходных данных в соответствующих каналах данных. Полученный объект имеет то же количество каналов, но каждый канал содержит больше точек данных. Например, следующий синтаксис создает объект data, таким образом, что его общее количество выборок является суммой выборок в data1,data2,...,dataN.

data = [data1;data2;... ;dataN]

Этот синтаксис эквивалентен следующему более длинному синтаксису:

data.InputData =
     [data1.InputData;data2.InputData;...;dataN.InputData]
data.OutputData =
     [data1.OutputData;data2.OutputData;...;dataN.OutputData]

Для вертикальной конкатенации data1,data2,...,dataN должен иметь то же количество входных каналов, вывести каналы и эксперименты.

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

Похожие темы