MATLAB 给函数加上随机噪声/扰动的一种方法

在进行数值计算时,为了检验一个数值算法是否稳定,通常要给输入数据加上随机噪声。下面介绍一下向函数中添加两种随机噪声的方法,假设需要添加噪声的函数是 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)+δ(2Ri1)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 原数据与添加正态分布噪声后的数据的对比

  • 21
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值