В этом примере показано, как получить доступ к значениям параметров и метаданным в объектах LTI или изменить их.
tf, zpk, ss, и frd команды создают объекты LTI, хранящие данные модели в одной переменной MATLAB ®. Эти данные включают специфичные для модели параметры (например, матрицы A, B, C, D для моделей пространства состояний), а также общие метаданные, такие как входные и выходные имена. Данные располагаются в фиксированном наборе полей данных, называемых свойствами.
Доступ к данным модели можно получить следующими способами:
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, тип
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.
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 можно легко исследовать чувствительность к вариациям параметров. Например, рассмотрим функцию переноса второго заказа.
+ 2λ s + 5
Можно исследовать влияние параметра демпфирования zeta на частотной характеристике путем создания трех моделей с различными zeta значения и сравнение их ответов Боде:
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
