MATLAB 中值的随机扰动

问题描述 投票:0回答:1

假设我有一个值 100,我想根据正态分布随机扰动该值 1%。我怎样才能在 MATLAB 中做到这一点?我似乎对

randn
等有些困惑

到目前为止我已经使用了

randn
,但我似乎并不一直处于这个1%的阈值内。

matlab
1个回答
1
投票

您必须将标准差定义为 1%。

rand
生成一个 0 到 1 之间的数字,因此首先我们将其在所需的 -1 到 +1 之间进行缩放。接下来,您只需将标准差(此处为 0.01)乘以您的
random_number 
即可获得所需的随机值范围,然后将此数字添加到您的
original_value
中以获得所需的 1% 扰动,如下所示:

original_value = 100;
std_deviation = 0.01 * original_value;
lower_bound = -1; 
upper_bound = +1;
random_number = lower_bound + (upper_bound - lower_bound) * rand;
perturbed_value = original_value + (std_deviation * random_number);
disp(perturbed_value);

如果您的值不是 100,只需将

original_value
更改为您想要的值,1% 的扰动就会添加到您的数字中。如果您想将 1% 扰动更改为任何其他值,则必须将
0.01
更改为您想要的值。

original_value = 100
std_deviation = 0.01
(1%) 给了我们这个。 (我在这里生成了 1000 个数字)。

original_value = 800
std_deviation = 0.07
(7%) 给了我们这个。 (我在这里生成了 1000 个数字)。

© www.soinside.com 2019 - 2024. All rights reserved.