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