exponenta event banner

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

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

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

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.