sbiosampleerror

Дискретизируйте ошибку на основе модели ошибки и добавьте шум к данным моделирования

Описание

пример

sdN = sbiosampleerror(sd,errormodel,errorparam) добавляет шум к данным моделирования sd использование одной или нескольких моделей ошибок errormodel и параметры ошибки errorparam.

Примеры

свернуть все

Этот пример добавляет шум (или ошибку) к данным моделирования из модели радиоактивного распада с реакцией первого порядка: dzdt=cx, где x и z являются видами и c - константа прямой скорости.

Загрузите образец проекта, содержащий модель radiodecay m1.

sbioloadproject radiodecay;

Симулируйте модель.

[t,sd,names] = sbiosimulate(m1);

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

plot(t,sd);
legend(names,'AutoUpdate','off');
hold on

Figure contains an axes. The axes contains 2 objects of type line. These objects represent x, z.

Добавьте шум в результаты симуляции с помощью модели постоянной ошибки с набора параметров ошибки до 20.

sdNoisy = sbiosampleerror(sd,'constant',20);

Постройте график зашумленных данных моделирования.

plot(t,sdNoisy);

Figure contains an axes. The axes contains 4 objects of type line. These objects represent x, z.

Этот пример задает пользовательскую модель ошибки с помощью указателя на функцию и добавляет шум к данным моделирования модели радиоактивного распада с реакцией первого порядка, ${{dz} \over {dt}} = c \cdot x$где x и z являются видами, и c - константа прямой скорости.

Загрузите образец проекта, содержащий модель radiodecay m1.

sbioloadproject radiodecay;

Предположим, что у вас есть простая пользовательская модель ошибки со стандартной средней нулевой и единичной дисперсией (Гауссовой) нормальной переменной e, результаты симуляции fи два параметра p1 и p2: $y = f + p1 + p2 * e$

Задайте указатель на функцию, который представляет модель ошибки.

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);

Входные параметры

свернуть все

Результаты симуляции, заданные как SimData object или матрица.

Модели (модели ) (ы) ошибки, заданная как символьный вектор, строка, указатель на функцию, вектор-строка, массив ячеек из символьных векторов или массив ячеек, содержащий смесь векторов символов и указателей на функцию.

Если это строка вектора или массив ячеек, его длина должна совпадать с количеством столбцов (откликов) в sd, и каждая модель ошибки применяется к соответствующему столбцу в sd. Если это один вектор символов, строка или указатель на функцию, та же модель ошибки применяется ко всем столбцам в sd.

Первый аргумент указателя на функцию должен быть матрицей результатов симуляции. Последующие аргументы являются параметрами модели ошибки, предоставленной в errorparam входной параметр. Выход указателя на функцию должна быть матрицей того же размера, что и первый входной параметр ( результаты симуляции).

Для примера предположим, что у вас есть пользовательская модель ошибки со стандартными e переменной среднего нуля и дисперсии единиц (Гауссов), результатов симуляции f и двумя параметрами p1 и p2: y=f+p1+p2e. Соответствующий указатель на функцию можно задать следующим образом.

em = @(y,p1,p2) y+p1+p2*randn(size(y));
где y - матрица результатов симуляции и p1 и p2 являются параметрами ошибки. Выход указателя на функцию должен быть такого же размера, как и y, что аналогично результатам симуляции, заданным в sd входной параметр. Параметры p1 и p2 указаны в errorparam аргумент.

Существует четыре встроенные модели ошибок. Каждая модель определяет ошибку при использовании стандартного среднего нуля и отклонения модуля (Гауссовская) переменная e, результаты симуляции f, и один или два параметра a и b. Модели:

  • 'constant': y=f+ae

  • 'proportional': y=f+b|f|e

  • 'combined': y=f+(a+b|f|)e

  • 'exponential': y=fexp(ae)

Параметры (параметры) модели ошибок, заданные как скаляр, вектор или массив ячеек. Если 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};

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

свернуть все

Результаты симуляции с добавленным шумом, возвращенные как вектор SimData объекты или числовая матрица. Если sd является вектором SimData объекты, sdN является также вектором SimData объекты, и ошибка добавляется к каждому столбцу в sd.Data свойство. Если sd задается как матрица, sdN является матрицей, и ошибка добавляется к каждому столбцу матрицы.

Введенный в R2014a