这与我之前的问题有关,但不同。我不知道如何在不使用Evaluate()等的情况下给出MathLink函数选项。例如,我有以下C#代码:
ml.PutFunction("Abs",1);
ml.PutFunction("Fourier",2);
ml.Put(data); //data = double[]
ml.Put("FourierParameters->{-1,1}");
它不起作用。它将FourierParameters部分作为文字字符串,而不是选项。我尝试使用该字符串创建一个Expr并将其放入,但这也失败了。这甚至可以在.NETLink中完成吗?
答案 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函数将基于标准选项处理技术数学。