这与我之前的问题有些关系,但不同。我不知道如何在不使用Evaluate()等方法的情况下提供MathLink函数选项。例如,我有以下C#代码:
ml.PutFunction("Abs",1);
ml.PutFunction("Fourier",2);
ml.Put(data); //data = double[]
ml.Put("FourierParameters->{-1,1}");它不起作用。它将FourierParameters部件作为一个文字字符串,而不是一个选项。我尝试使用该字符串创建Expr并将其放入,但也失败了。这在.NETLink中是可能的吗?
发布于 2011-05-04 23:23:19
在之后,该选项似乎必须与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-04 23:20:57
我会使用高级包装器来做这件事。例如,您可以使用Mathematica的所有便利功能编写一个名为MyFunction的数学函数,该函数调用几个低级数学链接函数中的一个,例如myFunction1、myFunction2等。
https://stackoverflow.com/questions/5885378
复制相似问题