从Octave代码在python中创建动画

时间:2017-09-16 21:32:39

标签: python animation octave montecarlo scatter

我是编码的新手,并且一直在尝试使用Octave(下面)中之前生成的代码在python中创建动画。到目前为止,我还没有取得任何成功,除了绘制一个非动画的散点图。任何提示或帮助将不胜感激。

    clear;

    N = 100;  
    NT = 200;

    for i=1:N  
        x(i) = 0;  
        y(i) = 0;  
    end

    plot(x,y,'o');  
    axis([0 20 -10 10]);

    for k = 1 : NT 
        x = x + normrnd(0.1,0.1,1,N);  
        y = y + normrnd(0,0.1,1,N);  
        temp = mod(k,1);  
        if temp == 0  

          plot(x,y,'s');
          axis([0 20 -10 10]);
          drawnow

       end
    end

以下是许多无效的尝试之一(下文)。

    import numpy as np
    import matplotlib as plt
    from pylab import *
    from matplotlib import animation
    import random

    n=100
    nt=2000
    m=20
    mu=0
    sigma=0.1
    p=100

    fig = plt.figure()
    ax = plt.axes(xlim=(-10, 10), ylim=(-10, 10))
    scat, = ax.plot([], [])

    # initialization function: plot the background of each frame
    def init():
          x = 0
          y = 0
          return scat,

    # animation function.  This is called sequentially
    def animate(i):
        for k in range (1,nt):
            x =  x+ np.random.normal(mu, sigma, n)
            return scat,

        for i in range (1,nt):
            y =  y+ np.random.normal(mu, sigma, n)
            return scat,

    anim = animation.FuncAnimation(fig, animate, 
    init_func=init,frames=200, interval=20, blit=True)

    plt.show()

1 个答案:

答案 0 :(得分:0)

你可以使用Octave of Python来制作动画。

对于python脚本,我认为其中一个问题是在循环中设置返回,因此对于一个函数def animate有几次。看动画文档https://matplotlib.org/api/animation_api.html我编辑了你的例子并得到了我认为可能有用的内容:

s = 'ABHAXA'
c = 'A'

filter(lambda i: c == s[i], range(len(s)))

您也可以使用octaves print命令生成动画,以生成多个png并使用gimp生成gif或使用animate在LaTeX中嵌入pngs。

最佳, 乔治