Python:方程图平滑但给出 'jagged' 输出?

标签 python jupyter-notebook

我正在使用 python 2.7,交互式笔记本。

当我绘制这段代码时...

plt.xlabel('Frame')
plt.ylabel('Iterations')
x = np.arange(-10000., 10000., 1)
y = (np.rint((-np.sin(x/88)+x*0.0027)*26.2))-5
y = np.clip(y, 0, 200)
plt.axis([0, 1500, -4, 100])
plt.plot(x, y, linewidth=0.5, color='g')
plt.grid()
plt.show()

我得到了一个非常平滑的图表。

在这里看到

Smooth graph

但是当我将它应用到我试图平滑改变的迭代次数时,使用以下代码四舍五入到最接近的整数:

frame_i = 1
nrframes = 1500
for i in xrange(frame_i, nrframes):
    actualiter = (-np.sin(frame_i/88)+frame_i*0.0027)*26.2 #Iteration Bouncy Curve
    actualiter = np.clip(actualiter, 0, 200)
    plt.plot([frame_i],[actualiter], 'ro')
    plt.axis([0, 1500, 0, 100])
    frame_i = frame_i + 1
plt.show()

我在这里看到一个非常参差不齐的输出

Jagged graph

有人知道为什么吗?我的一些其他函数在我的代码中用于计算数字时也“看起来”非常“参差不齐”

y = -(cos(x/10)*0.007)+0.0029
y = -(cos(x/25)*1)

最佳答案

在您的第一个示例中,x 是一个 float ,因此 (x/88) 产生一个 float ,并且您有一个连续变量 sin 函数:
[sin(0.114), sin(0.227), sin(0.341)...等]

在你的第二个中,frame_i 是一个 int,所以 (frame_i/88) 被执行为整数除法,因此你的 sin 函数有步骤:
[sin(0), sin(0), .... , sin(0), sin(1), sin(1), ... 等]

88 更改为 88.0 会强制进行浮点除法,您会再次获得平滑的正弦波。

enter image description here

关于Python:方程图平滑但给出 'jagged' 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565901/

相关文章:

python - 单用户应用程序可以使用 Django 开发服务器吗?

python - 我如何调试垂死的 jupyter notebook ipython 内核?

jupyter-notebook - 让 Pygments 为我的细胞结果工作

python - matplotlib 图例性能问题

bash - Jupyter/iPython Notebook 的根访问权限

python - 使用多处理模块进行集群计算

python - 在 Python 中子类化特定异常的缺点?

python - string.format(**D) 中的**D 是什么意思?

python - 选择不在名称列表中的列名称

ssh - 为运行 Jupyter Notebook 的远程 docker 容器创建 ssh 隧道