exponenta event banner

sbiosampleerror

Пример ошибки на основе модели ошибки и добавление шума в данные моделирования

Описание

пример

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

Примеры

свернуть все

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

Загрузка образца проекта, содержащего модель радиодекая 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 - постоянная прямой скорости.

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

sbioloadproject radiodecay;

Предположим, что у вас есть простая пользовательская модель ошибок со стандартной переменной среднеквадратичной и единичной дисперсии (Gaussian) 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 входной аргумент. Выходной сигнал дескриптора функции должен быть матрицей того же размера, что и первый входной аргумент (результаты моделирования).

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

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

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

  • 'constant': y = f + ae

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

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

  • 'exponential': y=f∗exp (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