exponenta event banner

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 ®. Пример см. в разделе Преобразование ковариации параметров в модель с замкнутым контуром.

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

sys_new

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

Примеры

свернуть все

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

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

load iddata1
sys1 = tfest(z1,2);

Преобразование расчетной модели в форму «состояние-пространство» при одновременном преобразовании ковариации расчетного параметра.

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

При прямом преобразовании модели передаточной функции в форму state-space оценка ковариации параметра теряется (выход 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')

При непосредственном объединении расчетных моделей в одну модель с тремя выходами информация ковариации теряется (вывод 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