hirax.net::inside out::2009年10月12日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2009年9月 を読む << 2009年10月 を読む >> 2009年11月 を読む

2009-10-12[n年前へ]

引数付きのMathLinkFactory.CreateKernelLinkの書き方 

 無料配布のMathematicaカーネルを(やはり同じく無料で使うことができる).NET Framework上で動作するRubyであるIronRubyから使うときに、引数無しの"MathLinkFactory.CreateKernelLink() "を使うと、毎回ダイアログが開き"MathKernel.exe"のパスを尋ねられます。そして、毎回パスを入力します。

 その作業は、やはり面倒くさいものです。そこで、「MathLinkFactoryでリンクを作成する」といったドキュメントを頼りに、(「ありがち」なMathematicaカーネルのパスを指定して)自動でMathematicaカーネルと通信を開始するスクリプトを書いてみます。(大文字小文字が最初の記事投稿では間違えていたので、mathkernel.exeからMathKernel.exeへと修正してあります)

require 'pp'

class Mathematica
require 'Wolfram.NETLink'
include Wolfram::NETLink

def initialize
   @kernelLink=MathLinkFactory.CreateKernelLink(
    "-linkmode launch -linkname 
    'C:\\Program Files\\Wolfram Research\\
     Mathematica Player\\7.0
    \\MathKernel.exe'")
   @kernelLink.WaitAndDiscardAnswer()
 end

 def do(command)
   @kernelLink.EvaluateToInputForm(command, 0)
 end

 def close
   @kernelLink.EvaluateToInputForm(
       'MVClose[]', 0)
 end

end

m=Mathematica.new
pp m.do('Table[i,{i,1,10}]')
m.close
 CreateKernelに引数をつけただけですが、Mathematica Playerのインストール先が決まっているなら、とても便利で手間要らずになるのでここにメモしておくことにします。