超音波流体屋のプログラム備忘録
Python
最終更新:
usapfrog
-
view
atwikiは行番号を入れるとコピペ時インデントが飛ぶので、この文書では行番号は付けていない。
基本
インタラクティブモードは
python3
windows実行時はminttyなど使用せず、cmdを使うほうが良い模様。
コメントは#、代入演算子(+=)は使えるがインクリメントはなし。
電気屋なのか複素数はj
電気屋なのか複素数はj
z=1+2j z.conjugate()
^はビット演算子(排他的ビット和)なのでpowを使う
numpyなど毎回使うものは適当にスクリプトとして書いておき
alias py="python3 -i ~/startup.py"とかすればよい
alias py="python3 -i ~/startup.py"とかすればよい
import numpy as np import math as m import matplotlib.pyplot as plt
出力フォーマット
%に続いておなじみのC形式のフォーマットが使える(のは2までらしい。)
複数あるときはタプル(=変更不可リスト・丸括弧で囲む)を使う。
複数あるときはタプル(=変更不可リスト・丸括弧で囲む)を使う。
print "Hello World"
print "Count Down: %d" % 3
print "Count Down: %d %d %d" % (3,2,1)
条件分岐
:とelif
if condition1:
statement1
elif condition2:
statement2
else:
statement3
endやら閉じる括弧がない
ループ
これで1-9までが表示される。
rangeはbegin-end式で、first-final式でないのに注意。
rangeはbegin-end式で、first-final式でないのに注意。
for i in range(1,10):
print "loop : %d", i
リストやタプルでも指定できる。
for i in [1,2,3]:
print "loop : %d", i
whileは while condition:
配列
角括弧でアクセスする。0インデックス。
a=[1,2,3]
print a[0]
ファイルIO
読み込み、文字→数値変換は int()やfloat()など。
f = open('text.txt', 'r')
for line in f:
print line,
f.close()
書き込み
f = open("test.txt","w")
f.write("hogehoge.")
f.close()
バイナリ読み込み
matlabでfwriteで書いたら下記で読める。
データ型で使うのは"i4(int32)"か"f8(float64)"くらい。
データ型で使うのは"i4(int32)"か"f8(float64)"くらい。
<MATLAB>
a=magic(3) save -mat a.mat a fid=fopen('magic.bin','w'); fwrite(fid,a,'double'); fclose(fid)
バイナリ経由で読む
import numpy as np
a=np.fromfile('magic.bin',dtype='f8')
b=a.reshape([3,-1], order='F')
#array([[8., 1., 6.],
# [3., 5., 7.],
# [4., 9., 2.]])
np.savetxt('b.txt',b,'%16.5e')
#save/loadはnumpy専用
np.save('b',b)
c=np.load('b.npy')
mat経由で読む
import numpy as np
import scipy.io as scio
dic=scio.loadmat('a.mat')
d=dic['a'].astype('f8')
scio.savemat('d.mat',{'d': d})
プロットコマンドなど
意外と充実しているらしい。
Python, SciPy, matplotlibのインストール(Windows)
matplotlib 入門 ―matplotlib 1.0 documentation
matplotlib入門 ―りんごがでている
Python, SciPy, matplotlibのインストール(Windows)
matplotlib 入門 ―matplotlib 1.0 documentation
matplotlib入門 ―りんごがでている
#exec(open("./read_and_plot.py").read())
import numpy as np
import matplotlib.pyplot as plt
f=np.fromfile('f.bin',dtype='f8')
y=np.fromfile('y0o.bin',dtype='f8')
z=np.fromfile('y0n.bin',dtype='f8')
plt.rcParams["font.size"] = 14
plt.plot(f,y, "b", label="signal")
plt.plot(f,z, "r", label="noise")
plt.xlim(160, 190)
plt.ylim(0, 5)
plt.xlabel("Frequency [Hz]")
plt.ylabel("Spectrum")
plt.legend()
plt.savefig("freq.png")
plt.show()
https://numpy.org/doc/stable/reference/generated/numpy.fromfile.html
https://note.nkmk.me/python-numpy-dtype-astype/
https://note.nkmk.me/python-numpy-dtype-astype/