1

これは私の以前の質問に関連していますが、異なります。Evaluate()などを使用せずにMathLink関数オプションを指定する方法を理解できません。たとえば、次のC#コードがあります。

ml.PutFunction("Abs",1);
ml.PutFunction("Fourier",2);
ml.Put(data); //data = double[]
ml.Put("FourierParameters->{-1,1}");

動作しません。これは、FourierParameters部分をオプションではなく、リテラル文字列として配置します。その文字列を使用してExprを作成し、それを配置しようとしましたが、それも失敗しました。これは.NETLinkでも可能ですか?

4

2 に答える 2

2

この例のページに従って、オプションは PutSymbol で入力する必要があり、「ルール」PutFunction を追加する必要があるようです。

次のような結果になります(テストされていません):

ml.PutFunction("EvaluatePacket", 1);
ml.PutFunction("Abs",1);
ml.PutFunction("Fourier",2);
ml.Put(data); //data = double[]

ml.PutFunction("Rule", 2);
ml.PutSymbol("FourierParameters");
ml.PutFunction("List", 2);
ml.Put(-1); 
ml.Put(1); 
ml.EndPacket();
于 2011-05-04T15:23:18.610 に答える
1

これは、高レベルのラッパーを使用して行います。たとえば、Mathematica のすべての便利さを利用してMyFunctionという名前のMathematica 関数を書くことができます。この関数は、いくつかの低レベルのmathlink関数の1つ、たとえばmyFunction1、myFunction2などを呼び出します。どのmathlink関数を呼び出すかは、マテマティカ。

于 2011-05-04T15:20:57.443 に答える