gpt4 book ai didi

python - 用高斯噪声绘制线

转载 作者:行者123 更新时间:2023-11-28 17:36:41 31 4
gpt4 key购买 nike

我的任务是编写一个名为 random_line 的函数,它为具有正态分布 N(0,σ^2) 的 y 方向随机噪声的直线创建 x 和 y 数据:y=mx+b+N(0,σ^2)。

我想我现在的问题更多是与数学相关,而不是与编程相关。要创建我的 ydata 点,我猜我必须将我的 x 数据点数组插入到上面的等式中。但是,我不知道如何计算 N(0,σ^2) 部分。有什么想法吗?

def random_line(m, b, sigma, size=10):
"""Create a line y = m*x + b + N(0,sigma**2) between x=[-1.0,1.0]

Parameters
----------
m : float
The slope of the line.
b : float
The y-intercept of the line.
sigma : float
The standard deviation of the y direction normal distribution noise.
size : int
The number of points to create for the line.

Returns
-------
x : array of floats
The array of x values for the line with `size` points.
y : array of floats
The array of y values for the lines with `size` points.
"""
xdata = np.linspace(-1.0,1.0,size)
ydata = 'xxxxxxx'
return xdata, ydata

最佳答案

使用 scipy.stats 中的分布很容易创建正态分布的错误,您可以轻松地将它们添加到其他 numpy 数组,如 xdata :

import scipy.stats
import numpy as np
import matplotlib.pyplot as plt

def random_line(m, b, sigma, size=10):
xdata = np.linspace(-1.0,1.0,size)
# Generate normally distributed random error ~ N(0, sigma**2)
errors = scipy.stats.norm.rvs(loc=0, scale=sigma, size=size)
ydata = m * xdata + b + errors
return xdata, ydata

xs, ys = random_line(2, 3, 2, size=50)

# Plot to see how closely the values fit the
# original line
fig, ax = plt.subplots()
ax.plot(xs, ys, 'o')
ax.plot(xs, 2 * xs + 3)

关于python - 用高斯噪声绘制线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29788267/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com