概述
在进行数值计算时,为了检验一个数值算法是否稳定,通常要给输入数据加上随机噪声。下面介绍一下向函数中添加两种随机噪声的方法,假设需要添加噪声的函数是 f ( x ) f(x) f(x)。
一、添加均匀分布噪声
添加[-1,1]上均匀分布噪声的公式为:
f
δ
(
x
i
)
=
f
(
x
i
)
+
δ
(
2
R
i
−
1
)
f
(
x
i
)
.
f^delta(x_i)=f(x_i)+delta (2R_i-1)f(x_i).
fδ(xi)=f(xi)+δ(2Ri−1)f(xi).其中,
f
δ
(
x
i
)
f^delta(x_i)
fδ(xi) 是添加了噪声的数据,
δ
delta
δ是相对误差水平,
R
i
R_{i}
Ri是在区间
[
0
,
1
]
[0,1]
[0,1]上均匀分布随机数。
二、添加正态分布噪声
添加正态分布噪声的公式为:
f
δ
(
x
i
)
=
f
(
x
i
)
+
δ
R
i
n
f
(
x
i
)
.
f^delta(x_i)=f(x_i)+delta R_i^nf(x_i).
fδ(xi)=f(xi)+δRinf(xi).其中,
f
δ
(
x
i
)
f^delta(x_i)
fδ(xi) 是添加了噪声的数据,
δ
delta
δ是相对误差水平,
R
i
n
R_{i}^n
Rin均值为0,方差为1的正态分布随机数。
例子
设 f ( x ) = x 2 f(x)=x^2 f(x)=x2, 下面我们想给 f ( x ) f(x) f(x)加上相对误差水平为 0.1 0.1 0.1的噪声,MATLAB中可利用如下代码实现:
% % 定义函数f(x)
f = @(x) x.^2;
% % 生成离散点
x1 = 0:1/100:1
% % 添加均匀分布噪声
f_delta = f(x1) + 0.1*(2*rand(size(x1))-1).*f(x1);
% % 添加正态分布噪声
f_delta1 = f(x1) + 0.1*randn(size(x1)).*f(x1);
图1 原数据与添加均匀分布噪声后的数据的对比
图2 原数据与添加正态分布噪声后的数据的对比
最后
以上就是善良大雁为你收集整理的MATLAB 给函数加上随机噪声/扰动的一种方法的全部内容,希望文章能够帮你解决MATLAB 给函数加上随机噪声/扰动的一种方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复