В этом примере показано, как получить доступ или отредактировать значения параметров и метаданные в объектах LTI.
tf
, zpk
, ss
, и frd
команды создают объекты LTI, которые хранят данные модели в одной переменной MATLAB®. Эти данные включают параметры модели специфичные (e.g., A, B, C, D матрицы для моделей в пространстве состояний), а также типовые метаданные, таких как имена ввода и вывода. Данные располагаются в фиксированный набор названных свойств полей данных.
Можно получить доступ к данным модели следующими способами:
get
команда
Подобная структуре запись через точку
Команды поиска данных
В целях рисунка создайте передаточную функцию (TF) SISO:
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 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.
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
значения и сравнение их Предвещать ответы:
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