BrownPython
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* Pythonによるブラウン運動データ解析 [#c9a28c9e]
このページではPythonを用いてブラウン運動実験で得られたデ...
#contents
** インストール [#p520d870]
一般に、Pythonは、[[PythonのWebsite>http://www.python.org...
以下に、各種OSにおけるインストール方法を概説する。
Linuxの場合は、Distributionのパッケージシステムからインス...
また、下で説明する[[Enthought Python Distribution (EPD)>h...
この場合、科学技術計算環境が一気に揃うので便利である。
Windowsの場合、[[Python(x,y)>http://www.pythonxy.com/]]と...
MacOSXには最初からPythonがインストールされているようであ...
しかし、その他の科学技術計算用拡張モジュールを一気にイン...
*** [[Enthought Python Distribution (EPD)>http://www.enth...
Enthoughtという会社が開発している、科学技術計算用のPython...
EPDは基本的に有料のディストリビューションだが、アカデミッ...
[[ダウンロードページ>http://www.enthought.com/products/ge...
*** 追加モジュール [#x29ac246]
Pythonは汎用言語であり、本体には基本的なプログラミング言...
様々な応用的機能は、モジュールとして提供されており、標準...
ここで解説されている、ブラウン運動の解析を行うためには、...
- [[Numpy>http://numpy.scipy.org/]]: 数値計算ライブラリ
- [[matplotlib>http://matplotlib.sourceforge.net/]]: プロ...
- [[Scipy>http://www.scipy.org/]]: 科学技術計算ライブラリ
これらのモジュールは、個別にダウンロードしてインストール...
EPDを利用する場合、これらは自動的にインストールされるので...
この他、データ解析に必須ではないが、Pythonを対話的に利用...
** Pythonの基本 [#s788f0a2]
Python自体の入門には、以下のようなサイトが役に立つ。
- [[Python Documentation>http://www.python.org/doc/]]: Py...
- [[Dive into Python>http://diveintopython.org/]]: 非常に...
- [[インスタント Python>http://www.python.jp/Zope/intro/i...
科学技術関連のモジュールについては、日本語の解説はほとん...
英語だが、Scipyの[[チュートリアル集>http://www.scipy.org/...
Matplotlibに関しては、http://matplotlib.sourceforge.net/c...
その他、このWiki上にもPythonを用いた科学技術計算の[[解説>...
*** モジュールと名前空間 [#l0ab4430]
Pythonを使う上で一つ注意しなければならないのは、名前空間...
Pythonでは、次のようにモジュールを読み込む。
import numpy
この記述によって、numpyモジュールが読み込まれた。numpyに...
numpy.exp(3)
のように呼ばなければならない。これは、様々なモジュールを...
from numpy import *
とすることができる。この場合、numpyの名前空間がトップレベ...
import numpy as np
のように、numpyに短い別名を付けることもある。この場合、np...
*** ヘルプ [#t54b0ff8]
コンソールにipythonを使っている場合、
np.exp?
というように、オブジェクト名(関数名)の後に?を付けてEnter...
*** Matlab, Scilabとの相違点 [#qd64e935]
PythonはMatlab系言語とはかなり違った文法を持つが、以下の...
- リストのIndexは0から始まる。
>>>a=[1,2,3,4]
>>>a[0]
1
添字でリスト一部を読み出す際の規則(PythonではSlicingと呼...
>>>a[1:3]
[2,3]
これについては、Python Tutorialの[[Stringsに関する部分>ht...
- べき乗は**で表す。
>>>2**3
8
** モジュールの読み込み [#j6f3067a]
以下の解説で利用されるモジュールをあらかじめ読み込んでお...
import numpy as np
import matplotlib.pyplot as plt
import fileinput
import scipy.optimize as opt
** データの読み込み [#bda76670]
ASCIIファイルからデータを読み込むには次のようにする。
d=np.loadtxt('brown.dat',delimiter=',')
t=d[:,0]
v=d[:,1]
plt.plot(t,v)
*** Matlab風dlmread() [#nccd4a21]
上述の方法とは別に、ここではMatlab風のdlmread()を定義して...
def dlmread(filename, delimiter=None,comment="#"):
"""Load contents of an ascii file"""
lineCount=0
for line in fileinput.input(filename):
if line.strip()[0] == comment:
continue #Skip lines starting from comment
if lineCount == 0:
data=np.transpose(np.array([map(float,line.sp...
lineCount=lineCount+1;
else:
data=np.hstack((data, np.transpose(np.array([...
lineCount=lineCount+1;
return data
この関数を使って、brown.datからセーブされた時系列データを...
d=dlmread('brown.dat',',')
t=d[0] #時間
v=d[1] #電圧
plt.plot(t,v)
** 平均、分散、自己相関関数 [#p9c2d81f]
平均と分散は以下のコマンドで求まる。
np.mean(v)
np.var(v)
自己相関関数は、np.correlate()関数を使ってもよいが、以下...
dt=t[1]-t[0]
numPoints=100
a=np.zeros(numPoints)
tau=np.zeros(numPoints)
for ii in range(numPoints):
tau[ii]=dt*ii;
a[ii]=np.sum(v[ii:]*v[:np.size(v)-ii])/np.size(v[ii:])
plt.plot(tau,a)
** ヒストグラム [#pd6f4f30]
vのヒストグラムを求めるには、
(n,bin,pat)=plt.hist(v,20)
x=(bin[:-1]+bin[1:])/2
plt.plot(x,n)
のようにすれば良い。~
binには各binの境界値が入っているので、x=...の行でbinの中...
** Fitting [#d62fd105]
得られたヒストグラムをGaussianでFitする。~
まず、Fitする関数型を定義する。(lambda形式については[[こ...
fitFunc = lambda p,x: p[0]*np.exp(-(x-p[1])**2/p[2]**2)
Fitting関数とデータの差を求める関数。
errFunc = lambda p,x,y: fitFunc(p, x) - y
初期パラメータ
p0=[2500,0,2.5]
最適パラメータの探索
(p,success) = opt.leastsq(errFunc, p0[:], args=(x,n))
得られた結果をチェックする。
nfit = fitFunc(p,x)
plt.plot(x,n,x,nfit)
終了行:
* Pythonによるブラウン運動データ解析 [#c9a28c9e]
このページではPythonを用いてブラウン運動実験で得られたデ...
#contents
** インストール [#p520d870]
一般に、Pythonは、[[PythonのWebsite>http://www.python.org...
以下に、各種OSにおけるインストール方法を概説する。
Linuxの場合は、Distributionのパッケージシステムからインス...
また、下で説明する[[Enthought Python Distribution (EPD)>h...
この場合、科学技術計算環境が一気に揃うので便利である。
Windowsの場合、[[Python(x,y)>http://www.pythonxy.com/]]と...
MacOSXには最初からPythonがインストールされているようであ...
しかし、その他の科学技術計算用拡張モジュールを一気にイン...
*** [[Enthought Python Distribution (EPD)>http://www.enth...
Enthoughtという会社が開発している、科学技術計算用のPython...
EPDは基本的に有料のディストリビューションだが、アカデミッ...
[[ダウンロードページ>http://www.enthought.com/products/ge...
*** 追加モジュール [#x29ac246]
Pythonは汎用言語であり、本体には基本的なプログラミング言...
様々な応用的機能は、モジュールとして提供されており、標準...
ここで解説されている、ブラウン運動の解析を行うためには、...
- [[Numpy>http://numpy.scipy.org/]]: 数値計算ライブラリ
- [[matplotlib>http://matplotlib.sourceforge.net/]]: プロ...
- [[Scipy>http://www.scipy.org/]]: 科学技術計算ライブラリ
これらのモジュールは、個別にダウンロードしてインストール...
EPDを利用する場合、これらは自動的にインストールされるので...
この他、データ解析に必須ではないが、Pythonを対話的に利用...
** Pythonの基本 [#s788f0a2]
Python自体の入門には、以下のようなサイトが役に立つ。
- [[Python Documentation>http://www.python.org/doc/]]: Py...
- [[Dive into Python>http://diveintopython.org/]]: 非常に...
- [[インスタント Python>http://www.python.jp/Zope/intro/i...
科学技術関連のモジュールについては、日本語の解説はほとん...
英語だが、Scipyの[[チュートリアル集>http://www.scipy.org/...
Matplotlibに関しては、http://matplotlib.sourceforge.net/c...
その他、このWiki上にもPythonを用いた科学技術計算の[[解説>...
*** モジュールと名前空間 [#l0ab4430]
Pythonを使う上で一つ注意しなければならないのは、名前空間...
Pythonでは、次のようにモジュールを読み込む。
import numpy
この記述によって、numpyモジュールが読み込まれた。numpyに...
numpy.exp(3)
のように呼ばなければならない。これは、様々なモジュールを...
from numpy import *
とすることができる。この場合、numpyの名前空間がトップレベ...
import numpy as np
のように、numpyに短い別名を付けることもある。この場合、np...
*** ヘルプ [#t54b0ff8]
コンソールにipythonを使っている場合、
np.exp?
というように、オブジェクト名(関数名)の後に?を付けてEnter...
*** Matlab, Scilabとの相違点 [#qd64e935]
PythonはMatlab系言語とはかなり違った文法を持つが、以下の...
- リストのIndexは0から始まる。
>>>a=[1,2,3,4]
>>>a[0]
1
添字でリスト一部を読み出す際の規則(PythonではSlicingと呼...
>>>a[1:3]
[2,3]
これについては、Python Tutorialの[[Stringsに関する部分>ht...
- べき乗は**で表す。
>>>2**3
8
** モジュールの読み込み [#j6f3067a]
以下の解説で利用されるモジュールをあらかじめ読み込んでお...
import numpy as np
import matplotlib.pyplot as plt
import fileinput
import scipy.optimize as opt
** データの読み込み [#bda76670]
ASCIIファイルからデータを読み込むには次のようにする。
d=np.loadtxt('brown.dat',delimiter=',')
t=d[:,0]
v=d[:,1]
plt.plot(t,v)
*** Matlab風dlmread() [#nccd4a21]
上述の方法とは別に、ここではMatlab風のdlmread()を定義して...
def dlmread(filename, delimiter=None,comment="#"):
"""Load contents of an ascii file"""
lineCount=0
for line in fileinput.input(filename):
if line.strip()[0] == comment:
continue #Skip lines starting from comment
if lineCount == 0:
data=np.transpose(np.array([map(float,line.sp...
lineCount=lineCount+1;
else:
data=np.hstack((data, np.transpose(np.array([...
lineCount=lineCount+1;
return data
この関数を使って、brown.datからセーブされた時系列データを...
d=dlmread('brown.dat',',')
t=d[0] #時間
v=d[1] #電圧
plt.plot(t,v)
** 平均、分散、自己相関関数 [#p9c2d81f]
平均と分散は以下のコマンドで求まる。
np.mean(v)
np.var(v)
自己相関関数は、np.correlate()関数を使ってもよいが、以下...
dt=t[1]-t[0]
numPoints=100
a=np.zeros(numPoints)
tau=np.zeros(numPoints)
for ii in range(numPoints):
tau[ii]=dt*ii;
a[ii]=np.sum(v[ii:]*v[:np.size(v)-ii])/np.size(v[ii:])
plt.plot(tau,a)
** ヒストグラム [#pd6f4f30]
vのヒストグラムを求めるには、
(n,bin,pat)=plt.hist(v,20)
x=(bin[:-1]+bin[1:])/2
plt.plot(x,n)
のようにすれば良い。~
binには各binの境界値が入っているので、x=...の行でbinの中...
** Fitting [#d62fd105]
得られたヒストグラムをGaussianでFitする。~
まず、Fitする関数型を定義する。(lambda形式については[[こ...
fitFunc = lambda p,x: p[0]*np.exp(-(x-p[1])**2/p[2]**2)
Fitting関数とデータの差を求める関数。
errFunc = lambda p,x,y: fitFunc(p, x) - y
初期パラメータ
p0=[2500,0,2.5]
最適パラメータの探索
(p,success) = opt.leastsq(errFunc, p0[:], args=(x,n))
得られた結果をチェックする。
nfit = fitFunc(p,x)
plt.plot(x,n,x,nfit)
ページ名: