Параметрическая ковариация идентифицированной модели
возвращает необработанную ковариацию параметров идентифицированной модели.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,...)
.
Получите идентифицированную модель.
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');
sys
- Идентифицированная модельidtf
, idss
, idgrey
, idpoly
, idproc
, idnlarx
, idnlhw
, или idnlgrey
объект | массив моделейcov_type
- Ковариационный тип'value'
(по умолчанию) | 'factors'
Ковариацияо возврата, заданный как 'value'
или 'factors'
.
Если cov_type
является 'value'
, затем cov_data
возвращается как матрица (необработанная ковариация).
Если cov_type
является 'factors'
, затем cov_data
возвращается как структура, содержащая факторы ковариационной матрицы.
Используйте эту опцию для выборки ковариационных данных, если ковариационная матрица содержит нефинитные значения, не является положительно определенной или плохо обусловлена. Можно вычислить неопределенность ответа с помощью ковариационных факторов вместо численно невыгодной ковариационной матрицы.
Эта опция не предлагает численного преимущества в следующих случаях:
Типы данных: char
cov_data
- Параметр ковариации sys
Параметр ковариации 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,...)
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.