Доступ и изменение данных моделей

В этом примере показано, как получить доступ или изменить значения параметров и метаданные в объектах 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, можно легко исследовать чувствительность к изменениям параметров. Для примера рассмотрим передаточную функцию второго порядка

H(s)=s+5s2+2ζs+5

Можно исследовать эффект параметра демпфирования 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

Figure contains 2 axes. Axes 1 contains 3 objects of type line. This object represents H. Axes 2 contains 3 objects of type line. This object represents H.