2011-05-03 5 views
1

.NET/Link 프로토콜을 사용하여 Mathematica 8을 호출하는 C# 라이브러리 (DLL)를 만들려고합니다. 특히, 나는 FFTs와 같은 것들에 대해 사용하고 있습니다. 지금은 EvaluateToOutputForm을 사용하고 결과 문자열을 double 형으로 파싱합니다. 언제든지 Evaluate() 및 GetDoubleArray()를 사용하여 시도 할 때 잘못된 차원의 데이터에서 읽으려는 오류 메시지 (예외)가 발생합니다. 심지어 Evaluate ("2 + 2")를 사용하고 GetInteger()는 대기중인 데이터가 정수가 아님 (기본적으로) 오류로 실패합니다.MathLink 연결에서 데이터 가져 오기

EvaluateToOutputForm()의 문제점은 Abs @ Fourier [data]에서 구문 분석 한 숫자가 중요하지 않은 (예 : 상당히 긴) 입력에 잘못되었음을 나타냅니다. 나는 무엇이 잘못되었는지 말할 수 없다. 아무도 나를 도울 수 있습니까?

답변

2

OutputForm은 실제로 결과를 보는 데 유용합니다. 결과에서 숫자의 전체 정밀도를 유지하므로 실제로 여기에서 InputForm을 사용하려고합니다. InputForm 구문은 잘 정의되고 파싱 가능합니다. InputForm은 또한 OutputForm과 같은 의사 2D 형식을 생성하지 않습니다.

+0

글쎄, 이제 GetDoubleArray()가 작동하도록했습니다 (WaitForAnswer를 잊어 버렸습니다). 그래서 거기에 논점이 있다고 가정합니다. 하지만 고마워, 나는 InputForm이 파싱하기에 훨씬 낫다는 것을 몰랐다. 하지만 여전히 "잘못된 대답"문제가 있습니다. 그리고 Wolfram Support 티켓을 열었습니다. 빠른 답변에 감사드립니다. – PrinceBilliard

+0

업데이트 : 내 구문 분석이 잘못된 것으로 밝혀졌으며 MMA가 올바르게 작동합니다. – PrinceBilliard