Дискретизируйте ошибку на основе модели ошибки и добавьте шум к данным моделирования
добавляет шум к данным моделирования sdN
= sbiosampleerror(sd
,errormodel
,errorparam
)sd
использование одной или нескольких моделей ошибок errormodel
и параметры ошибки errorparam
.
Этот пример добавляет шум (или ошибку) к данным моделирования из модели радиоактивного распада с реакцией первого порядка: , где x
и z
являются видами и c
- константа прямой скорости.
Загрузите образец проекта, содержащий модель radiodecay m1
.
sbioloadproject radiodecay;
Симулируйте модель.
[t,sd,names] = sbiosimulate(m1);
Постройте график результатов симуляции.
plot(t,sd); legend(names,'AutoUpdate','off'); hold on
Добавьте шум в результаты симуляции с помощью модели постоянной ошибки с набора параметров ошибки до 20.
sdNoisy = sbiosampleerror(sd,'constant',20);
Постройте график зашумленных данных моделирования.
plot(t,sdNoisy);
Этот пример задает пользовательскую модель ошибки с помощью указателя на функцию и добавляет шум к данным моделирования модели радиоактивного распада с реакцией первого порядка, где x и
z
являются видами, и c
- константа прямой скорости.
Загрузите образец проекта, содержащий модель radiodecay m1
.
sbioloadproject radiodecay;
Предположим, что у вас есть простая пользовательская модель ошибки со стандартной средней нулевой и единичной дисперсией (Гауссовой) нормальной переменной e
, результаты симуляции f
и два параметра p1
и p2
:
Задайте указатель на функцию, который представляет модель ошибки.
em = @(y,p1,p2) y+p1+p2*randn(size(y));
Симулируйте модель.
[t,sd,names] = sbiosimulate(m1);
Постройте график результатов симуляции и удерживайте график.
plot(t,sd); legend(names,'AutoUpdate','off'); hold on
Дискретизируйте ошибку с помощью ранее определенной пользовательской функции с двумя параметрами, установленными на 0,5 и 30, соответственно.
sdNoisy = sbiosampleerror(sd,em,{0.5,30});
Постройте график зашумленных данных моделирования.
plot(t,sdNoisy);
Можно также применить другую модель ошибок к каждому состоянию, которое является столбцом в sd
. Предположим, что вы хотите применить пользовательскую модель ошибки (em
) в первый столбец (виды x
данные) и пропорциональную модель ошибки второму столбцу (виды z
данные).
hold off sdNoisy = sbiosampleerror(sd,{em,'proportional'},{{0.5,30},0.3}); plot(t,sd); legend(names,'AutoUpdate','off'); hold on plot(t,sdNoisy);
sd
- Результаты симуляцииSimData object
| матрицаРезультаты симуляции, заданные как SimData
object
или матрица.
errormodel
- Модель ошибкиМодели (модели ) (ы) ошибки, заданная как символьный вектор, строка, указатель на функцию, вектор-строка, массив ячеек из символьных векторов или массив ячеек, содержащий смесь векторов символов и указателей на функцию.
Если это строка вектора или массив ячеек, его длина должна совпадать с количеством столбцов (откликов) в sd
, и каждая модель ошибки применяется к соответствующему столбцу в sd
. Если это один вектор символов, строка или указатель на функцию, та же модель ошибки применяется ко всем столбцам в sd
.
Первый аргумент указателя на функцию должен быть матрицей результатов симуляции. Последующие аргументы являются параметрами модели ошибки, предоставленной в errorparam
входной параметр. Выход указателя на функцию должна быть матрицей того же размера, что и первый входной параметр ( результаты симуляции).
Для примера предположим, что у вас есть пользовательская модель ошибки со стандартными e переменной среднего нуля и дисперсии единиц (Гауссов), результатов симуляции f и двумя параметрами p1 и p2: . Соответствующий указатель на функцию можно задать следующим образом.
em = @(y,p1,p2) y+p1+p2*randn(size(y));
y
- матрица результатов симуляции и p1
и p2
являются параметрами ошибки. Выход указателя на функцию должен быть такого же размера, как и y
, что аналогично результатам симуляции, заданным в sd
входной параметр. Параметры p1
и p2
указаны в errorparam
аргумент.
Существует четыре встроенные модели ошибок. Каждая модель определяет ошибку при использовании стандартного среднего нуля и отклонения модуля (Гауссовская) переменная e, результаты симуляции f, и один или два параметра a и b. Модели:
'constant'
:
'proportional'
:
'combined'
:
'exponential'
:
errorparam
- Параметр модели ошибкиПараметры (параметры) модели ошибок, заданные как скаляр, вектор или массив ячеек. Если errormodel
является 'constant'
, 'proportional'
, или 'exponential'
, затем errorparam
задается как числовой скаляр. Если это 'combined'
, затем errorparam
задается как вектор-строка с двумя элементами [a b]
.
Если errormodel
- массив ячеек, затем errorparam
должен быть массивом ячеек той же длины. Другими словами, errorparam
должен содержать N элементов, где N - количество моделей ошибок в errormodel
. Каждый элемент должен иметь правильное количество параметров для соответствующей модели ошибки.
Например, предположим, что у вас есть три столбца в sd
, и вы применяете другую модель ошибок (constant
, proportional
, и exponential
модели ошибок с параметрами ошибок 0.1
, 0.2
, и 0.5
, соответственно) каждому столбцу, затем errormodel
и errorparam
должны быть массивами ячеек с тремя элементами следующим образом.
errormodel = {'constant','proportional','exponential'}; errorparam = {0.1,0.2,0.5};
sdN
- Результаты симуляции с добавлением шумаРезультаты симуляции с добавленным шумом, возвращенные как вектор SimData
объекты или числовая матрица. Если sd
является вектором SimData
объекты, sdN
является также вектором SimData
объекты, и ошибка добавляется к каждому столбцу в sd.Data
свойство. Если sd
задается как матрица, sdN
является матрицей, и ошибка добавляется к каждому столбцу матрицы.
createSimFunction
| sbiosampleparameters
| SimFunction object
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.