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