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) mustBeNonempty.

Input1,...,InputN

Несколько входных параметров к переводу функционируют fcn. По крайней мере один из N входные параметры должны быть линейной идентифицированной моделью с информацией о ковариации параметра. Другие входные параметры могут быть любым типом данных MATLAB®. Для примера смотрите, Переводят Ковариацию Параметра в Модель С обратной связью.

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

sys_new

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

Примеры

свернуть все

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

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

load iddata1
sys1 = tfest(z1,2);

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

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

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

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

     []

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

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

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

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

Доверительные границы для 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')
ans = struct with fields:
       R: [36x36 double]
       T: [24x36 double]
    Free: [90x1 logical]

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

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

     []

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

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);

График показывает эффект неопределенности в 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