私の場合、 プログラムは一から新しく書くことはまれで、 最初は何かを下敷きにして作り、 後から使っている言語、ライブラリィの特徴を生かすように改良して行く、 という書き方をしている。
そういうわけで、 (格子点上の関数値を計算するために) MATLAB のプログラムの真似をして meshgrid() に相当することをしようとして、 一応出来て、それで動作するプログラムを書いたのだが…
# MATLABの meshgrid() の真似 # 参考 https://qiita.com/yshutaro/items/54d64c406f624545429a # xx,yy=meshgrid(x,y); fv=f.(xx,yy) の代わりに fv=f.(x',y) でOKとか function meshgrid(x,y) m=size(x)[1] n=size(y)[1] ones(n)*x',y*ones(m)' end |
x=range(0.0, W, length=nx+1) y=range(0.0, H, length=ny+1) xx,yy=meshgrid(x,y) # xx, yy は (ny+1)×(nx+1) Array になる fv=f.(xx,yy) # fv[j,i] は f の xi,yj での値 |
こんなことが出来る (こうすると meshgrid() は不要) |
x=range(0.0, W, length=nx+1) y=range(0.0, H, length=ny+1) fv=f.(x',y) # fv[j,i] は f の xi,yj での値 |