В этом примере показано, как получить доступ или изменить значения параметров и метаданные в объектах 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 value
ans = 3
Можно использовать сокращения для имен свойства, если они однозначны, например:
G.iod % get transport delay value
ans = 0
G.var % get variable
ans = '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';
G
G = 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