如何将选项放入MathLink中的函数中

时间:2011-05-04 14:52:19

标签: c# .net wolfram-mathematica mathlink

这与我之前的问题有关,但不同。我不知道如何在不使用Evaluate()等的情况下给出MathLink函数选项。例如,我有以下C#代码:

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

它不起作用。它将FourierParameters部分作为文字字符串,而不是选项。我尝试使用该字符串创建一个Expr并将其放入,但这也失败了。这甚至可以在.NETLink中完成吗?

2 个答案:

答案 0 :(得分:2)

this example page之后,似乎必须使用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();

答案 1 :(得分:1)

我会使用高级包装器来完成此操作。例如,可以编写一个名为MyFunction的Mathematica函数,使用Mathematica的所有便利,调用几个低级的mathlink函数之一,例如myFunction1,myFunction2等。调用哪个mathlink函数将基于标准选项处理技术数学。