主要内容

sbiosampleerror

根据误差模型对误差进行采样,并在输入数据中添加噪声

描述

例子

noisydata= sbiosampleerror (inputdata,errormodel,errorparam使用一个或多个错误模型和错误参数向输入数据添加噪声。

例子

全部折叠

本例将噪声(或误差)添加到一阶反应的放射性衰变模型的模拟数据中: d z d t c x ,在那里x而且z是物种和c是正向速率常数。

加载包含放射性衰变模型的示例项目m1

sbioloadprojectradiodecay;

模拟模型。

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

绘制模拟结果图。

情节(t, sd);传奇(名称,“自动更新”,“关闭”);持有

图中包含一个轴对象。axis对象包含2个line类型的对象。这些物体代表x和z。

使用误差参数设置为20的常数误差模型,在仿真结果中添加噪声。

噪声数据= sbioosampleerror (sd,“不变”, 20);

绘制有噪声的模拟数据。

情节(t, noisydata);

图中包含一个轴对象。axis对象包含4个line类型的对象。这些物体代表x和z。

本例使用函数句柄定义了一个自定义误差模型,并将噪声添加到具有一阶反应的放射性衰变模型的模拟数据中${{dz} \ / {dt}} = c \cdot x$,在那里x而且z都是物种,而且c是正向速率常数。

加载包含放射性衰变模型的示例项目m1

sbioloadprojectradiodecay;

假设你有一个简单的自定义误差模型,它有一个标准的均值-零和单位-方差(高斯)正态变量e,模拟结果f,和两个参数p1而且p2$y = f + p1 + p2 * e$

定义一个表示错误模型的函数句柄。

Em = @(y,p1,p2) y+p1+p2*randn(size(y));

模拟模型。

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

绘制仿真结果并持有图。

情节(t, sd);传奇(名称,“自动更新”,“关闭”);持有

使用前面定义的自定义函数对错误进行采样,其中两个参数分别设置为0.5和30。

Noisydata = sbioosampleerror (sd,em,{0.5,30});

绘制有噪声的模拟数据。

情节(t, noisydata);

还可以对每个状态应用不同的错误模型,该状态为中的一列sd.假设您希望应用自定义错误模型(新兴市场)到第一列(物种x数据)和比例误差模型到第二列(物种z数据)。

持有Noisydata = sbioosampleerror (sd,{em,“比例”30}}, {{0.5,, 0.3});情节(t, sd);传奇(名称,“自动更新”,“关闭”);持有情节(t, noisydata);

输入参数

全部折叠

输入数据,指定为SimData对象的向量SimData对象,或者数字矩阵。如果它是向量SimData对象中的每一列都将添加错误数据财产。如果是数值矩阵,则将误差添加到矩阵中的每一列。

错误模型,指定为字符向量、字符串、函数句柄、字符串向量、字符向量的单元格数组或包含字符向量和函数句柄的混合单元格数组。

如果是字符串向量或单元格数组,则其长度必须与中的列(响应)数匹配inputdata,每个误差模型应用于中对应的列inputdata.如果是单个字符向量、字符串或函数句柄,则将相同的错误模型应用于中的所有列inputdata

函数句柄的第一个参数必须是模拟结果的矩阵。方法中提供的错误模型的参数errorparam输入参数。函数句柄的输出必须是与第一个输入参数相同大小的矩阵(模拟结果)。

例如,假设您有一个自定义误差模型,该模型具有标准的均值-零和单位-方差(高斯)正态变量e,模拟结果f,和两个参数p1而且p2 y f + p 1 + p 2 e .您可以定义对应的函数句柄,如下所示。

Em = @(y,p1,p2) y+p1+p2*randn(size(y));
在哪里y矩阵的仿真结果和p1而且p2是错误参数。函数句柄的输出必须与y的模拟结果,与inputdata输入参数。的参数p1而且p2errorparam论点。

有四个内置的错误模型。每个模型都使用标准的均值零和单位方差(高斯)变量来定义误差e,模拟结果f,和一个或两个参数一个而且b.模型是:

  • “不变” y f + 一个 e

  • “比例” y f + b | f | e

  • “组合” y f + 一个 + b | f | e

  • “指数” y f 经验值 一个 e

错误模型参数,指定为标量、向量或单元格数组。如果errormodel“不变”,“比例”,或“指数”,然后errorparam指定为数值标量。如果是的话“组合”,然后errorparam指定为具有两个元素的行向量[b]

如果errormodel是单元格数组吗errorparam必须是相同长度的单元格数组。换句话说,errorparam必须包含N个元素,其中N是错误模型的数量errormodel.对于相应的错误模型,每个元素必须有正确数量的参数。

例如,假设有三列inputdata,并且您正在应用不同的错误模型(常数,成比例的,指数带有错误参数的错误模型0.1,0.2,0.5,分别)到每列,则errormodel而且errorparam必须是包含三个元素的单元格数组,如下所示。

Errormodel = {“不变”,“比例”,“指数”};Errorparam = {0.1,0.2,0.5};

输出参数

全部折叠

带有附加噪声的数据,作为矢量返回SimData对象或数值矩阵。如果inputdata的向量SimData对象,noisydata也是向量SimData对象的每一列中都添加了该错误inputdata。数据财产。如果inputdata指定为一个矩阵,noisydata是一个矩阵,误差被添加到矩阵中的每一列。

版本历史

在R2014a中引入