Lua から scipy.optimize.curve_fit

2016-08-15 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
7、2、0、0、0、 0、1、0、0、0(40)で、換算ポイント 87pt 。
「Firefox」7位ダウン。「Perl」「化学業界」「FM COCOLO」「e-radio」、
「グルコサミン」「Python」bg値変動。「C言語」「硝子業界」「FM青森」変化無し。
・-・ - -・

さて、本文。

先々月(2016-06-13)の記事「LuaPy で使えるもの/使えないもの
で、

  ・・・・・
  ・・・・・
  “scipy.optimize.curve_fit”・・・・・OK
  ・・・・・
  ・・・・・

と書いているが、・・・・・


前回(2016-08-13)の記事「LuaPy 経由で使う汎用 Python サブ
で作った“Sub_LuaPy_Gen.py”を使ってやってみた。
----- use_Sub_LuaPy_Gen.gsl
function split( str, sep )
if sep == nil then sep = '%s' end
local t={} ; i=1
for str in string.gmatch( str, "([^"..sep.."]+)") do
t[i] = str i=i+1
end
return t
end
-----------------------------------------------------------------
charA = |x| ffi.cast( 'char*', x )
Int = |x| ffi.cast( 'int32_t', x )
function setITk(s) IT[k]=Int(charA(s)); k=k+1 end

LuaPy = ffi.load('LuaPy_1')
ffi.cdef[[
int PyIni( char* ); // Pyファイル名
int PyFun( char*, int, void* ); // 関数名、Count、領域
int PyFin( ); // Pyファイナライズ
]]
IT = ffi.new( 'int32_t[50]' ) --------------- インタフェース情報

LuaPy.PyIni( charA('Sub_LuaPy_Gen') ) -- Python / ファイル 初期化

------------------------ Fittingデータ --------------------------
IT[40] = Int( matrix.vec{ 1, 2, 3, 4, 5, 6, 7, 10 }.data )
IT[41] = Int( matrix.vec{ 8, 7, 6.5, 6, 5.8, 5.3, 5, 4 }.data )
r = ffi.new( 'double[2]' ) -- インタフェース情報
IT[42] = Int( r )
------------------------ Python スクリプト ---------------------
Py = split( [[from scipy.optimize import curve_fit
def DblA(x): return ct.cast( x, ct.POINTER(ct.c_double) )
xx=8
x = np.zeros( xx, dtype=np.float )
y = np.zeros( xx, dtype=np.float )
_=ct.cdll.msvcrt.memcpy( np_data(x), IT[40], xx*8 )
_=ct.cdll.msvcrt.memcpy( np_data(y), IT[41], xx*8 )
def yfx( x, a, b ): return a*(x**(-1/b))
abV, _ = curve_fit( yfx, x, y, p0=(1,1) )
r = DblA( IT[42] )
r[0] = abV[0]; r[1] = abV[1]
]], '\n'); k=0 ------------------------------------------------
for j=1,#Py do setITk( Py[j] ) end
LuaPy.PyFun( charA('Exec'), k, IT )

print( r[0] ) ---> 8.2595111874288 これが、a
print( r[1] ) ---> 3.942786255794 これが、b

LuaPy.PyFin() -- Python ファイナライズ
出来ますね。


・・・・・・・・・・


ところで、
“Sub_LuaPy_Gen.py”は、カレント以外では、
何処に置けばイイ?

・・・・・

結局、
“LuaPy_1.dll”と共に、
「gsl-shell.exe」がある場所。

でした。

(<紙>の場合は)D:/TOOL/Lua/gsl-shell/


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


160703
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク