久々maxscriptネタ。
maxscriptも調べたらhelpに載ってました。
start = timeStamp()
--------------------------
ここに計りたいscriptを書く。
--------------------------
end = timeStamp()
format "Processing took % seconds\n" ((end - start) / 1000.0)
これで実行時間が計れます。
2009年9月29日火曜日
python 計測時間
250000ループを含む関数をmaxscriptとpython実行、iphoneのストップウォッチで計測してみた。
結果
maxscript 24.2sec
python 12.3sec
pythonで実行時間の計測をしてくれる関数があった。
http://jutememo.blogspot.com/2008/10/python_07.html
import timeit
t = timeit.Timer("import def_GetCloseColor")
print t.timeit()
デフォルトだと100万回の結果が計算される。
t.timeit(10)とかやると10回の結果。
print t.repeat(3)だと100万回を3回計算する。
結果
maxscript 24.2sec
python 12.3sec
pythonで実行時間の計測をしてくれる関数があった。
http://jutememo.blogspot.com/2008/10/python_07.html
import timeit
t = timeit.Timer("import def_GetCloseColor")
print t.timeit()
デフォルトだと100万回の結果が計算される。
t.timeit(10)とかやると10回の結果。
print t.repeat(3)だと100万回を3回計算する。
2009年9月25日金曜日
python numpy
ベクトル
ベクトルの長さ&正規化
import numpy
a = numpy.array([[2,2]])
#ベクトルの長さ
length = numpy.linalg.norm(a)
#length=>2.8284271247461903
#ベクトルの正規化
a / numpy.linalg.norm(a)
#=>array([[ 0.70710678, 0.70710678]])
内積&外積
import numpy
v1 = numpy.array((1,0,0))
v2 = numpy.array((0,1,0))
#内積
numpy.dot(v1,v2) #=> 0
#外積
numpy.cross(v1,v2) #=>[0 0 1]
一般的には2次元の外積の存在は賛否が分かれる所ですが、numpyでは2次元ベクトルの外積が用意されています。
import numpy
numpy.cross([0,1],[ 1,0]) #-1
numpy.cross([0,1],[-1,0]) # 1
numpy.cross([1,0],[ 0,1]) # 0
内積を90度回転させた感じですね、左右の正と負の領域判定に使えそうです。
行列
単位行列の定義
import numpy
I = numpy.matrix(numpy.identity(3))
#[[ 1. 0. 0.]
# [ 0. 1. 0.]
# [ 0. 0. 1.]]
転置
import numpy
a = numpy.matrix([[1,2],[3,4]])
# [[1, 2],
# [3, 4]]
a.T
# [[1, 3],
# [2, 4]]
逆行列&行列式
import numpy
a = numpy.matrix([[3,1], [1,2]])
#逆行列
a.I
#[[ 0.4, -0.2],
# [-0.2, 0.6]]
#行列式
numpy.linalg.det(a)
# 5.0
回転行列
import python
from numpy import sin,cos
r = numpy.pi/2.
#2次元回転
numpy.matrix( (
( cos(r), sin(r)),
(-sin(r), cos(r))
) )
#3次元z軸回転
numpy.matrix( (
( cos(r), sin(r), 0.),
(-sin(r), cos(r), 0.),
( 0., 0., 1.)
) )
#3次元x軸回転
numpy.matrix( (
( 1., 0., 0.),
( 0., cos(r), sin(r)),
( 0.,-sin(r), cos(r))
) )
#3次元y軸回転
numpy.matrix( (
( cos(r), 0.,-sin(r)),
( 0., 1., 0.),
(-sin(r), 0., cos(r))
) )
行列とベクトルの積
import numpy
#行列
mat = numpy.matrix( (
(2.0, 0.0, 10),
(0.0, 3.0, 10),
) )
#ベクトル
vec = numpy.array( (2.0,2.0, 1.0) )
#行列とベクトルの積
numpy.dot(mat,vec)
#[ 14. 13.]
固有値・固有ベクトル&対角化
固有値、固有ベクトルは以下の式が成り立つベクトルとスカラ。
A*v = λ*v(λ=Aの固有値,v=Aの固有ベクトルとする)
行列の対角化(diagonal)とは、正方行列Aに対して対角化された行列をPとすると、
P^-1 * A * P = 対角要素が固有値の行列
(P^-1はPの逆行列を表す)
となる行列である。
なお、numpy.diagonal()は対角化する関数ではなく、単に行列の対角要素をベクトルとして返す関数なので注意。
import numpy
A = numpy.array([[5,-2],[-4,7]])
(l,v) = numpy.linalg.eig( A )
#l=>[ 3., 9.]
#v=>[[-0.70710678, 0.4472136 ],
# [-0.70710678, -0.89442719]]
その他
平均値&標準偏差
import numpy
pop = [79,81,77,78,83,80,82,78,80,82]
#平均
numpy.mean(pop) #=>80.0
#標準偏差
numpy.std(pop) #=>1.8973665961010275
相関係数&相関係数行列
import numpy
a = [1,2,3,4,5]
b = [1,1,3,5,5]
c = [5,4,3,1,1]
d = [-1,3,-4,5,-5]
#aとbの相関係数
numpy.corrcoef(a,b)[0][1] #=> 0.948683298051
#aとcの相関係数
numpy.corrcoef(a,c)[0][1] #=> -0.972271824132
#aとdの相関係数
numpy.corrcoef(a,d)[0][1] #=> -0.218797487247
#a,b,c,dの相関係数行列
numpy.corrcoef([a,b,c,d])
#[[ 1. 0.9486833 -0.97227182 -0.21879749]
# [ 0.9486833 1. -0.97827974 -0.1153164 ]
# [-0.97227182 -0.97827974 1. 0.01933915]
# [-0.21879749 -0.1153164 0.01933915 1. ]]
高速フーリエ変換(FFT)
import numpy
t = numpy.arange(0.0, 2*numpy.pi, 2*numpy.pi/32)
c = numpy.cos(t)
C = numpy.fft.fft(c)
ベクトルの長さ&正規化
import numpy
a = numpy.array([[2,2]])
#ベクトルの長さ
length = numpy.linalg.norm(a)
#length=>2.8284271247461903
#ベクトルの正規化
a / numpy.linalg.norm(a)
#=>array([[ 0.70710678, 0.70710678]])
内積&外積
import numpy
v1 = numpy.array((1,0,0))
v2 = numpy.array((0,1,0))
#内積
numpy.dot(v1,v2) #=> 0
#外積
numpy.cross(v1,v2) #=>[0 0 1]
一般的には2次元の外積の存在は賛否が分かれる所ですが、numpyでは2次元ベクトルの外積が用意されています。
import numpy
numpy.cross([0,1],[ 1,0]) #-1
numpy.cross([0,1],[-1,0]) # 1
numpy.cross([1,0],[ 0,1]) # 0
内積を90度回転させた感じですね、左右の正と負の領域判定に使えそうです。
行列
単位行列の定義
import numpy
I = numpy.matrix(numpy.identity(3))
#[[ 1. 0. 0.]
# [ 0. 1. 0.]
# [ 0. 0. 1.]]
転置
import numpy
a = numpy.matrix([[1,2],[3,4]])
# [[1, 2],
# [3, 4]]
a.T
# [[1, 3],
# [2, 4]]
逆行列&行列式
import numpy
a = numpy.matrix([[3,1], [1,2]])
#逆行列
a.I
#[[ 0.4, -0.2],
# [-0.2, 0.6]]
#行列式
numpy.linalg.det(a)
# 5.0
回転行列
import python
from numpy import sin,cos
r = numpy.pi/2.
#2次元回転
numpy.matrix( (
( cos(r), sin(r)),
(-sin(r), cos(r))
) )
#3次元z軸回転
numpy.matrix( (
( cos(r), sin(r), 0.),
(-sin(r), cos(r), 0.),
( 0., 0., 1.)
) )
#3次元x軸回転
numpy.matrix( (
( 1., 0., 0.),
( 0., cos(r), sin(r)),
( 0.,-sin(r), cos(r))
) )
#3次元y軸回転
numpy.matrix( (
( cos(r), 0.,-sin(r)),
( 0., 1., 0.),
(-sin(r), 0., cos(r))
) )
行列とベクトルの積
import numpy
#行列
mat = numpy.matrix( (
(2.0, 0.0, 10),
(0.0, 3.0, 10),
) )
#ベクトル
vec = numpy.array( (2.0,2.0, 1.0) )
#行列とベクトルの積
numpy.dot(mat,vec)
#[ 14. 13.]
固有値・固有ベクトル&対角化
固有値、固有ベクトルは以下の式が成り立つベクトルとスカラ。
A*v = λ*v(λ=Aの固有値,v=Aの固有ベクトルとする)
行列の対角化(diagonal)とは、正方行列Aに対して対角化された行列をPとすると、
P^-1 * A * P = 対角要素が固有値の行列
(P^-1はPの逆行列を表す)
となる行列である。
なお、numpy.diagonal()は対角化する関数ではなく、単に行列の対角要素をベクトルとして返す関数なので注意。
import numpy
A = numpy.array([[5,-2],[-4,7]])
(l,v) = numpy.linalg.eig( A )
#l=>[ 3., 9.]
#v=>[[-0.70710678, 0.4472136 ],
# [-0.70710678, -0.89442719]]
その他
平均値&標準偏差
import numpy
pop = [79,81,77,78,83,80,82,78,80,82]
#平均
numpy.mean(pop) #=>80.0
#標準偏差
numpy.std(pop) #=>1.8973665961010275
相関係数&相関係数行列
import numpy
a = [1,2,3,4,5]
b = [1,1,3,5,5]
c = [5,4,3,1,1]
d = [-1,3,-4,5,-5]
#aとbの相関係数
numpy.corrcoef(a,b)[0][1] #=> 0.948683298051
#aとcの相関係数
numpy.corrcoef(a,c)[0][1] #=> -0.972271824132
#aとdの相関係数
numpy.corrcoef(a,d)[0][1] #=> -0.218797487247
#a,b,c,dの相関係数行列
numpy.corrcoef([a,b,c,d])
#[[ 1. 0.9486833 -0.97227182 -0.21879749]
# [ 0.9486833 1. -0.97827974 -0.1153164 ]
# [-0.97227182 -0.97827974 1. 0.01933915]
# [-0.21879749 -0.1153164 0.01933915 1. ]]
高速フーリエ変換(FFT)
import numpy
t = numpy.arange(0.0, 2*numpy.pi, 2*numpy.pi/32)
c = numpy.cos(t)
C = numpy.fft.fft(c)
2009年9月18日金曜日
C++ GREAT VIDEO TUTORIALS
http://xoax.net/comp...nsole/index.php (GREAT VIDEO TUTORIALS)
http://www.codeproject.com/ (TEXT BASE)
http://www.parashift.com/c++-faq-lite/ (TEXT BASE)
http://www.cprogramming.com/begin.html ( For up todate info)
http://www.codeproject.com/ (TEXT BASE)
http://www.parashift.com/c++-faq-lite/ (TEXT BASE)
http://www.cprogramming.com/begin.html ( For up todate info)
2009年9月17日木曜日
Houdini hscript
padzero(4,$F4+299)
$PR プリミティブナンバー毎 $PTのプリミティブ版
AttributePromote
ポイントの持つアトリビュートを、プリミティブアトリビュートに変換。
逆や他への変換も可能。
$PR プリミティブナンバー毎 $PTのプリミティブ版
AttributePromote
ポイントの持つアトリビュートを、プリミティブアトリビュートに変換。
逆や他への変換も可能。
2009年9月14日月曜日
Python memo
Numericモジュール
http://www.python.jp/Zope/NumPy/simple
http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/fastTour/pyLinear.htm
ベクトルを使うのに必要、配列の方がリストより速い。
>>>from numpy import *
sort
http://d.hatena.ne.jp/pashango_p/20090614/1244984058
http://d.hatena.ne.jp/raqbgxue/20090709/1247072107
http://morchin.sakura.ne.jp/effective_python/sort.html
http://d.hatena.ne.jp/yumimue/20071218/1197985024
http://handasse.blogspot.com/2008/01/python.html
http://lightson.dip.jp/blog/seko/1565
http://kapi.jp/kapi_blog/182
keyキーワードの方が、DSU使用の為cmpより速い。
lambda式で関数をつくりkeyを使ってsort
http://atkonn.blogspot.com/2008/02/python-python27-lambda.html
http://www.python.jp/Zope/NumPy/simple
http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/fastTour/pyLinear.htm
ベクトルを使うのに必要、配列の方がリストより速い。
>>>from numpy import *
sort
http://d.hatena.ne.jp/pashango_p/20090614/1244984058
http://d.hatena.ne.jp/raqbgxue/20090709/1247072107
http://morchin.sakura.ne.jp/effective_python/sort.html
http://d.hatena.ne.jp/yumimue/20071218/1197985024
http://handasse.blogspot.com/2008/01/python.html
http://lightson.dip.jp/blog/seko/1565
http://kapi.jp/kapi_blog/182
keyキーワードの方が、DSU使用の為cmpより速い。
lambda式で関数をつくりkeyを使ってsort
http://atkonn.blogspot.com/2008/02/python-python27-lambda.html
2009年9月9日水曜日
PyQT
http://www.riverbankcomputing.co.uk/news
QT
http://qt.nokia.com/downloads/windows-cpp
sip
http://www.riverbankcomputing.com/software/sip/download
English
http://www.commandprompt.com/community/pyqt/
Japanese
http://digit.que.ne.jp/visit/index.cgi?PyQt
http://paison.hp.infoseek.co.jp/paison/qt/pyqthello.html
http://www.ibm.com/developerworks/jp/linux/library/l-qt/index.html
copy /y sipconfig.py C:\Python25\Lib\site-packages\sipconfig.py
copy /y sipdistutils.py C:\Python25\Lib\site-packages\sipdistutils.py
QT
http://qt.nokia.com/downloads/windows-cpp
sip
http://www.riverbankcomputing.com/software/sip/download
English
http://www.commandprompt.com/community/pyqt/
Japanese
http://digit.que.ne.jp/visit/index.cgi?PyQt
http://paison.hp.infoseek.co.jp/paison/qt/pyqthello.html
http://www.ibm.com/developerworks/jp/linux/library/l-qt/index.html
copy /y sipconfig.py C:\Python25\Lib\site-packages\sipconfig.py
copy /y sipdistutils.py C:\Python25\Lib\site-packages\sipdistutils.py
2009年9月7日月曜日
Siggraph2009 at New Orleans
すっかり遅くなりましたが、シーグラフの写真をちょいちょいまとめようかと思います。
とりあえず、iphoneで撮った写真から。
NewOrleansは初めてでしたが、今まで一番楽しい町でした。
そういえば、サンディエゴもかなり良かったけど、夜楽しめたのは初めてでした。
Burbon street
Full conferenceで無くとも、Exhibitionで結構良い内容のPresentation見れます。
これはDigitalDomain。
これはRythm and Hues
とりあえず、iphoneで撮った写真から。
NewOrleansは初めてでしたが、今まで一番楽しい町でした。
そういえば、サンディエゴもかなり良かったけど、夜楽しめたのは初めてでした。
Burbon street
Full conferenceで無くとも、Exhibitionで結構良い内容のPresentation見れます。
これはDigitalDomain。
これはRythm and Hues
登録:
投稿
(
Atom
)