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

Каналы в конкатенированном 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 должен иметь то же количество входных каналов, вывести каналы и эксперименты.

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

Похожие темы