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

В этом примере показано, как получить доступ или отредактировать значения параметров и метаданные в объектах 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
    {1x3 double}

Denominator = 1x1 cell array
    {1x3 double}

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

H(s)=s+5s2+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