В этом примере показано, как получить доступ или изменить значения параметров и метаданные в объектах LTI.
The tf, zpk, ss, и frd команды создают объекты LTI, которые хранят данные модели в одной переменной MATLAB ®. Эти данные включают специфичные для модели параметры (например, матрицы A, B, C, D для моделей пространства состояний), а также типовые метаданные, такие как входные и выходные имена. Данные упорядочены в фиксированный набор полей данных, называемых свойствами.
Вы можете получить доступ к данным моделям следующими способами:
The get команда
Структурная запись через точку
Команды извлечения данных
В целях рисунка создайте передаточную функцию SISO (TF):
G = tf([1 2],[1 3 10],'inputdelay',3)G =
s + 2
exp(-3*s) * --------------
s^2 + 3 s + 10
Continuous-time transfer function.
Чтобы увидеть все свойства объекта TF G, type
get(G)
Numerator: {[0 1 2]}
Denominator: {[1 3 10]}
Variable: 's'
IODelay: 0
InputDelay: 3
OutputDelay: 0
Ts: 0
TimeUnit: 'seconds'
InputName: {''}
InputUnit: {''}
InputGroup: [1x1 struct]
OutputName: {''}
OutputUnit: {''}
OutputGroup: [1x1 struct]
Notes: [0x1 string]
UserData: []
Name: ''
SamplingGrid: [1x1 struct]
Первые четыре свойства Numerator, Denominator, IODelay, и Variable специфичны для представления TF. Остальные свойства являются общими для всех представлений LTI. Можно использовать help tf.Numerator чтобы получить больше информации о Numerator свойство и аналогично для других свойств.
Чтобы получить значение конкретного свойства, используйте
G.InputDelay % get input delay valueans = 3
Можно использовать сокращения для имен свойства, если они однозначны, например:
G.iod % get transport delay valueans = 0
G.var % get variableans = 's'
Можно также извлечь все параметры модели сразу с помощью tfdata, zpkdata, ssdata, или frdata. Для примера:
[Numerator,Denominator,Ts] = tfdata(G)
Numerator = 1x1 cell array
{[0 1 2]}
Denominator = 1x1 cell array
{[1 3 10]}
Ts = 0
Обратите внимание, что числитель и знаменатель возвращаются как массивы ячеек. Это согласуется со случаем MIMO, когда Numerator и Denominator содержат массивы ячеек числителя и полиномов знаменателя (с одной записью на пару ввода-вывода). Для передаточных функций SISO можно вернуть данные числителя и знаменателя в качестве векторов с помощью флага, например:
[Numerator,Denominator] = tfdata(G,'v')Numerator = 1×3
0 1 2
Denominator = 1×3
1 3 10
Можно изменить данные, хранящиеся в объектах LTI, изменив соответствующие значения свойств с set или запись через точку. Для примера, для передаточной функции G созданный выше,
G.Ts = 1;
изменяет шаг расчета с 0 на 1, что переопределяет модель как дискретную:
G
G =
z + 2
z^(-3) * --------------
z^2 + 3 z + 10
Sample time: 1 seconds
Discrete-time transfer function.
The set команда эквивалентна назначению точек, но также позволяет вам задать несколько свойств сразу:
G.Ts = 0.1;
G.Variable = 'q';
GG =
q + 2
q^(-3) * --------------
q^2 + 3 q + 10
Sample time: 0.1 seconds
Discrete-time transfer function.
Используя редактирование моделей вместе с поддержкой массива LTI, можно легко исследовать чувствительность к изменениям параметров. Для примера рассмотрим передаточную функцию второго порядка
Можно исследовать эффект параметра демпфирования zeta об частотной характеристики путем создания трех моделей с различными zeta значения и сравнение их Bode-характеристик:
s = tf('s'); % Create 3 transfer functions with Numerator = s+5 and Denominator = 1 H = repsys(s+5,[1 1 3]); % Specify denominators using 3 different zeta values zeta = [1 .5 .2]; for k = 1:3 H(:,:,k).Denominator = [1 2*zeta(k) 5]; % zeta(k) -> k-th model end % Plot Bode response bode(H) grid
