November 26, 2010

Python 调用gnuplot的例子

最近和lvzongting一块儿做一些仿真,不想用matlab了,原因有:

  • 商业软件,用破解版毕竟不好

  • 难以实现分布式计算和并行计算

  • 太慢 考虑之下决定用可爱的Python,因为

  • God,it’s so simple!

  • 完善的类库,数学功能不亚于matlab

  • 比matlab通用,再也不需要“一切都是矩阵”了

  • 灵活

  • 自由,开源

为了实现 网络变型的仿真,先做一个框架,也算为python练练手

#!/usr/bin/env python
import numpy
import Gnuplot, Gnuplot.funcutils
import matplotlib.pyplot as pl
import time
import sys

def lzt_1(num,x):

    x=numpy.random.randint(0,100,[num,2])

    return x

def lzt(num,x):               #all the array of x
 
    xx=numpy.random.randint(-1,2,[num,2])
    #print xx
    x=x+xx
    
    return x

if __name__=='__main__':
    #the part of init #
    g = Gnuplot.Gnuplot(debug=1) #init of gnuplot

    #print sys.argv[1]
    step=10                      #default step is 10
    if len(sys.argv) > 1:
        step=int(sys.argv[1])    #first argv is step of simulation
    num=100                      #default num is 100
    if len(sys.argv) > 2:      
        num=int(sys.argv[2])     #second argv is step of simulation
    range_x_min=[-10,-10]
    range_x_max=[110,110]        #rang of simulation default is 100*100
    x=numpy.random.randint(0,100,[num,2])       #print x

    for i in range(0,step):      
        print i
        #the part of iterative #
        x=lzt(num,x)             #the function of controling the node
        #the part of plot #
        y=x.tolist()             #change to list in order to plot
        y.append(range_x_min)    #add de range point
        y.append(range_x_max)
        g.plot(y)                #point
        #raw_input('Please press return to continue...\n')
        time.sleep(0.1)

就是这样,程序没有什么实际意义,也没啥算法,几个类库的调用,一个仿真的框架而已。