exponenta event banner

getcov

Ковариация параметров идентифицированной модели

Описание

пример

cov_data = getcov(sys) возвращает необработанную ковариацию параметров идентифицированной модели.

  • Если sys является единственной моделью, то cov_data является матрицей np-by-np. np - количество параметров sys.

  • Если sys является массивом модели, то cov_data - массив ячеек размером, равным размеру массива sys.

    cov_data(i,j,k,...) содержит ковариационные данные для sys(:,:,i,j,k,...).

пример

cov_data = getcov(sys,cov_type) возвращает ковариацию параметра в виде матрицы или структуры в зависимости от указанного типа ковариации.

пример

cov_data = getcov(sys,cov_type,'free') возвращает ковариационные данные только для параметров свободной модели.

Примеры

свернуть все

Получение идентифицированной модели.

load iddata1 z1
sys = tfest(z1,2);

Получение ковариации необработанного параметра для модели.

cov_data = getcov(sys)
cov_data = 5×5

    1.2131   -4.3949   -0.0309   -0.5531         0
   -4.3949  115.0838    1.8598   10.6660         0
   -0.0309    1.8598    0.0636    0.1672         0
   -0.5531   10.6660    0.1672    1.2433         0
         0         0         0         0         0

cov_data содержит ковариационную матрицу для вектора параметров [sys.Numerator,sys.Denominator(2:end),sys.IODelay].

sys.Denominator(1) фиксируется в 1 и не рассматривается как параметр. Записи ковариационной матрицы, соответствующие параметру задержки (пятая строка и столбец), равны нулю, поскольку задержка не была оценена.

Получение идентифицированного массива модели.

load iddata1 z1;
sys1 = tfest(z1,2);
sys2 = tfest(z1,3);
sysarr = stack(1,sys1,sys2);

sysarr представляет собой массив непрерывных временных функций передачи 2 на 1.

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

cov_data = getcov(sysarr)
cov_data=2×1 cell array
    {5x5 double}
    {7x7 double}

cov_data является массивом ячеек 2 на 1. cov_data{1} и cov_data{2} являются матрицами ковариации необработанных параметров для sys1 и sys2.

Загрузите оценочные данные.

load iddata1 z1
z1.y = cumsum(z1.y);

Оцените модель.

init_sys = idtf([100 1500],[1 10 10 0]);
init_sys.Structure.Numerator.Minimum = eps;
init_sys.Structure.Denominator.Minimum = eps;
init_sys.Structure.Denominator.Free(end) = false;
opt = tfestOptions('SearchMethod','lm');
sys = tfest(z1,init_sys,opt);

sys является idtf модель с шестью параметрами, четыре из которых оценены.

Получение матрицы ковариации для оцененных параметров.

cov_type = 'value';
cov_data = getcov(sys,cov_type,'free')
cov_data = 4×4
105 ×

    0.0269   -0.1237   -0.0001   -0.0017
   -0.1237    1.0221    0.0016    0.0133
   -0.0001    0.0016    0.0000    0.0000
   -0.0017    0.0133    0.0000    0.0002

cov_data является 4x4 ковариационная матрица, с записями, соответствующими четырем оцененным параметрам.

Получение идентифицированной модели.

load iddata1 z1
sys = tfest(z1,2);

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

cov_type = 'factors';
cov_data = getcov(sys,cov_type);

Получение идентифицированного массива модели.

load iddata1 z1
sys1 = tfest(z1,2);
sys2 = tfest(z1,3);
sysarr = stack(1,sys1,sys2);

sysarr представляет собой массив непрерывных временных функций передачи 2 на 1.

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

cov_type = 'factors';
cov_data = getcov(sysarr,cov_type)
cov_data=2×1 struct array with fields:
    R
    T
    Free

cov_data является массивом структуры 2 на 1. cov_data(1) и cov_data(2) являются факторизованными ковариационными структурами для sys1 и sys2.

Загрузите оценочные данные.

load iddata1 z1
z1.y = cumsum(z1.y);

Оцените модель.

init_sys = idtf([100 1500],[1 10 10 0]);
init_sys.Structure.Numerator.Minimum = eps;
init_sys.Structure.Denominator.Minimum = eps;
init_sys.Structure.Denominator.Free(end) = false;
opt = tfestOptions('SearchMethod','lm');
sys = tfest(z1,init_sys,opt);

sysодин idtf модель, имеет шесть параметров, четыре из которых оценены.

Получить факторизованную ковариацию для оцененных параметров.

cov_type = 'factors';
cov_data = getcov(sys,cov_type,'free');

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

свернуть все

Идентифицированная модель, указанная как idtf, idss, idgrey, idpoly, idproc, idnlarx, idnlhw, или idnlgrey модель или массив таких моделей.

getcov возврат команды cov_data как [] для idnlarx и idnlhw модели, поскольку эти модели не хранят ковариационные данные параметров.

Тип возврата ковариации, указанный как 'value' или 'factors'.

  • Если cov_type является 'value', то cov_data возвращается в виде матрицы (необработанная ковариация).

  • Если cov_type является 'factors', то cov_data возвращается как структура, содержащая множители ковариационной матрицы.

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

    Эта опция не дает численного преимущества в следующих случаях:

    • sys оценивается с использованием определенных методов переменной инструмента, таких как iv4.

    • Вы явно указали ковариацию параметра sys с использованием устаревшего CovarianceMatrix свойство модели.

Типы данных: char

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

свернуть все

Параметр ковариации sys, возвращается в виде матрицы, массива ячеек матриц, структуры или массива ячеек структур. cov_data является [] для idnlarx и idnlhw модели.

  • Если sys является единой моделью и cov_type является 'value', то cov_data является матрицей np-by-np. np - количество параметров sys.

    Значение ненулевых элементов этой матрицы равно sys.Report.Parameters.FreeParCovariance когда sys получают путем оценки. Записи строк и столбцов, соответствующие фиксированным параметрам, равны нулю.

  • Если sys является единой моделью и cov_type является 'factors', то cov_data - структура с полями:

    • R - Обычно верхняя треугольная матрица.

    • T - Матрица преобразования.

    • Free - Логический вектор длины np, указывающий, свободен (оценен) параметр модели или нет np - количество параметров sys.

    Для получения ковариационной матрицы с использованием факторизованной формы введите:

    Free = cov_factored.Free; 
    T = cov_factored.T;
    R = cov_factored.R;
    np = nparams(sys); 
    cov_matrix = zeros(np);
    cov_matrix(Free, Free) = T*inv(R'*R)*T';

    Для числовой точности рассчитайте T*inv(R'*R)*T' как X*X', где X = T/R.

  • Если sys является массивом модели, то cov_data - массив ячеек размером, равным размеру массива sys.

    cov_data(i,j,k,...) содержит ковариационные данные для sys(:,:,i,j,k,...).

Представлен в R2012a