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, an 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