translatecov

Переведите ковариацию параметра через операции преобразования моделей

Синтаксис

sys_new = translatecov(fcn,sys)
sys_new = translatecov(fcn,Input1,...,InputN)

Описание

sys_new = translatecov(fcn,sys) преобразования sys в sys_new = fcn(sys), и переводит параметрическую ковариацию sys к параметрической ковариации преобразованной модели. fcn является заданной функцией преобразования. Команда вычисляет ковариацию параметров sys_new путем применения формулы Гаусса приближения. Чтобы просмотреть переведенный параметр ковариации, используйте getcov.

Применение преобразований моделей непосредственно не всегда переводит ковариацию параметра исходной модели к ковариации преобразованной модели. Для примера, d2c(sys) не переводит ковариацию параметра sys. Напротив, translatecov(@(x)d2c(x),sys) производит преобразованную модель, которая имеет те же коэффициенты, что и d2c(sys) и имеет переведенный параметр ковариации sys.

sys_new = translatecov(fcn,Input1,...,InputN) возвращает модель sys_new = fcn(Input1,...,InputN) и его параметрической ковариации. По крайней мере, один из N входы должны быть линейной моделью с параметрической ковариационной информацией.

Входные параметры

fcn

Преобразование моделей, заданная как указатель на функцию.

Для функций с одним входом, sys_new = fcn(sys). Вход в fcn должна быть идентифицированной моделью с параметром ковариации информацией. Типичные операции преобразования с одним входом включают:

  • Преобразование типа модели, такое как idpoly и idss. Для примера, fcn = @(x)idpoly(x) преобразует модель x в полиномиальную модель.

  • Шаг расчета, например c2d и d2c. Для примера, fcn = @(x)c2d(x,Ts) преобразует модель в непрерывном времени x в дискретное время с использованием заданного шага расчета Ts.

Для мультивходов, sys_new = fcn(Input1,..InputN). По крайней мере, один из входных параметров Input1,...,InputN должна быть идентифицированной моделью с параметром ковариации информацией. Типичные мультивходы включают объединение и конкатенацию нескольких моделей. Для примера, fcn = @(x,y)[x,y] выполняет горизонтальную конкатенацию моделей x и y.

sys

Линейная модель с параметром информацией о ковариации, заданная как один из следующих типов модели:

Модель должна содержать информацию о параметре ковариации, то есть getcov(sys) должно быть непустым.

Input1,...,InputN

Несколько входных параметров в функцию преобразования fcn. По крайней мере, один из N входы должны быть линейно идентифицированной моделью с параметрической ковариационной информацией. Другие входы могут быть любыми MATLAB® тип данных. Для получения примера смотрите Translate Parameter Covariation to Closed-Loop Model.

Выходные аргументы

sys_new

Модель, полученная в результате операции преобразования. Модель включает параметрическую ковариационную информацию.

Примеры

свернуть все

Преобразуйте предполагаемую модель передаточной функции в модель пространства состояний, переводя также предполагаемую ковариацию параметра.

Оцените модель передаточной функции.

load iddata1
sys1 = tfest(z1,2);

Преобразуйте предполагаемую модель в форму пространства состояний, переводя также предполагаемую ковариацию параметра.

sys2 = translatecov(@(x)idss(x),sys1);

Если вы преобразовываете модель передаточной функции в форму пространства состояний непосредственно, предполагаемая ковариация параметра теряется (выход getcov пуст).

sys3 = idss(sys1);
getcov(sys3)
ans =

     []

Посмотрите ковариацию параметра в оцененных и преобразованных моделях.

covsys1 = getcov(sys1);
covsys2 = getcov(sys2);

Сравните доверительные области.

h = bodeplot(sys1,sys2);
showConfidence(h,2);

Figure contains 2 axes. Axes 1 with title From: u1 To: y1 contains 2 objects of type line. These objects represent sys1, sys2. Axes 2 contains 2 objects of type line. These objects represent sys1, sys2.

Доверительные границы для sys1 перекрытия с sys2.

Конкатенируйте 3 модели с одним выходом, так что ковариационные данные из 3 моделей объединяются, чтобы получить ковариационные данные для полученной модели.

Создайте модель пространства состояний.

a = [-1.1008 0.3733;0.3733 -0.9561];
b = [0.7254 0.7147;-0.0631 -0.2050];
c = [-0.1241 0; 1.4897 0.6715; 1.4090 -1.2075];
d = [0 1.0347; 1.6302 0; 0.4889 0];
sys = idss(a,b,c,d,'Ts',0);

Сгенерируйте данные оценки с мультивыходами.

t = (0:0.01:0.99)';
u = randn(100,2);
y = lsim(sys,u,t,'zoh');
y = y +  rand(size(y))/10;
data = iddata(y,u,0.01);

Оцените отдельную модель для каждого выходного сигнала.

m1 = ssest(data(:,1,:),2,'feedthrough',true(1,2), 'DisturbanceModel', 'none');
m2 = ssest(data(:,2,:),2,'feedthrough',true(1,2), 'DisturbanceModel', 'none');
m3 = ssest(data(:,3,:),2,'feedthrough',true(1,2), 'DisturbanceModel', 'none');

Объедините предполагаемые модели с одновременным переводом ковариационной информации.

f = @(x,y,z)[x;y;z];
M2 = translatecov(f, m1, m2, m3);

Ковариация параметра не пуста.

getcov(M2, 'factors')

Если вы комбинируете предполагаемые модели в одну модель с 3 выходами непосредственно, ковариационная информация теряется (выход getcov пуст).

M1 = [m1;m2;m3];
getcov(M1)

Сравните доверительные границы.

h = bodeplot(M2, m1, m2, m3);
showConfidence(h);

Доверительные границы для M2 перекрываются с частями m1, m2 и m3 модели на соответствующих осях графиков.

Рассмотрите модель обратной связи с обратной связью, состоящую из объекта и контроллера. Переведите ковариацию параметра объекта к модели обратной связи с обратной связью.

Оцените объект как модель пространства состояний четвертого порядка с помощью данных оценки z1.

load iddata1 z1
Plant = ssest(z1,4);

Plant содержит информацию о параметре ковариации.

Создайте контроллер как непрерывную модель с нулями , полюса и усиления, полюсами и усилением, равными -2, -10, 5, соответственно.

Controller = zpk(-2,-10,5);

Определите функцию преобразования, чтобы произвести модель в пространстве состояний обратной связи с обратной связью.

fcn = @(x,y)idss(feedback(x,y));

Переведите ковариацию параметра объекта к модели обратной связи с обратной связью.

sys_new = translatecov(fcn,Plant,Controller);

sys_new содержит переведенную ковариационную информацию параметра.

Постройте график частотной характеристики преобразованной модели sys_new, и просмотрите доверие область ответа.

h = bodeplot(sys_new);
showConfidence(h);

Figure contains 2 axes. Axes 1 with title From: u1 To: y1 contains an object of type line. This object represents sys\_new. Axes 2 contains an object of type line. This object represents sys\_new.

График показывает эффект неопределенности в Plant на отклике с обратной связью.

Совет

  • Если вы получили sys через оценку и иметь доступ к данным оценки, можно использовать обновление нулевой итерации, чтобы пересчитать ковариацию параметра. Для примера:

    load iddata1
    m = ssest(z1,4);
    opt = ssestOptions
    opt.SearchOptions.MaxIterations = 0;
    m_new = ssest(z1,m2,opt)
    

    Вы не можете запустить обновление с нулем итерации в следующих случаях:

    • Если MaxIterations опция, которая зависит от SearchMethod опция, недоступна.

    • Для некоторых моделей и типов данных. Для примера - непрерывное время idpoly модели с использованием данных временной области.

Алгоритмы

translatecov использует числовые возмущения отдельных параметров sys вычислить якобиан fcn(sys) параметры относительно параметров sys. translatecov затем применяется формула Гаусса приближения cov_new=J×cov× JT перевести ковариацию, где J - якобийская матрица. Эта операция может быть медленной для моделей, содержащих большое количество свободных параметров.

Введенный в R2012b