iddata
ОбъектыСоздать iddata
объект, вы, должно быть, уже импортировали данные в рабочую область MATLAB®, как описано в Представлении Данных в рабочем пространстве MATLAB.
Используйте следующий синтаксис, чтобы создать временной интервал 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
объект:
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
объект, используйте 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: []
Подссылка на данные и его свойства позволяет вам выбрать значения данных и присвоить новые данные и значения свойств.
Используйте следующий общий синтаксис, чтобы подсослаться на определенные значения данных в 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)
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
должен иметь то же количество входных каналов, вывести каналы и эксперименты.