假设我有一个值 100,我想根据正态分布随机扰动该值 1%。我怎样才能在 MATLAB 中做到这一点?我似乎对
randn
等有些困惑
到目前为止我已经使用了
randn
,但我似乎并不一直处于这个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 个数字)。