2013-06-06 2 views
1

나는 C#에서 매우 새롭고 AFM 캔틸레버의 교정을 위해 소프트웨어를 작성하는 데 사용하고 싶습니다. 그러므로, 나는 어떤 선형 데이터의 첫 번째 피크에 꽤 못생긴 함수를 맞추어야 할 것입니다. ALGLIB 패키지가이 목적을 위해 유용 할 수 있다고 생각했는데, 비교적 쉽게 적용 할 수 있습니다. 홈페이지의 예에서 X 축 데이터를 사용합니다.목록을 <double> 이중 [,] ALGLIB

double[,] x = new double[,]{{-1},{-0.8},{-0.6},{-0.4},{-0.2},{0},{0.2},{0.4},{0.6},{0.8},{1.0}}; 

목록에 내 X 값이있어이를 사용하고 싶습니다. 어떻게 그들을 명부에서 두 배로 내버려 두는가? 내 마지막 방법은 나중에 기능을 위해 필수입니다

alglib.lsfitcreatef(x, y, c, diffstep, out state); 

누군가가 나를 도울 수 있기 때문에 더블 [,] 배열에 있어야하는 것 같다이

List<double> xz = new List<double>(); 
... 
double[,] x = new double[,]{xz.ToArray()}; 

같은입니까? 아니면 누구나 비선형 적합성에 대한 더 쉬운 접근법을 추천 할 수 있습니까?

덕분에 사전

답변

1

은 배열 목록에서 값을 복사하는 간단한 방법 수동 복사. ToArray()은 호환되지 않는 유형 (double[])을 만들고 Array.Copy은 배열의 순위 (즉, 차원 수)가 같을 것으로 기대합니다.

+0

훌륭합니다. 완벽하게 작동합니다. 다시 한 번 감사드립니다 – matjes

+0

때로는 무력이 유일한 방법입니다! – DonBoitnott

+0

예. 때로는 무력이보기 흉하게 보일 수도 있지만 실제로는 가장 빠른 방법 중 하나입니다! (예 : LINQ를 사용하는 대부분의 항목 : 일반적으로 더 빠른 코드를 쉽게 작성할 수 있지만 더 못생긴 경우) –

0
예는 다차원 배열되는 것을

에서 많은 : http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx

...하지만 그것은 보이지 않는 아주 잘 구성 할 수 있습니다.

귀하의 목록은 하나의 차원입니다.

따라서, 동등한은 다음과 같습니다

List<double> xz = // something 
double[,] x = new double[xz.Count, 1]; 
for (int i = 0; i < xz.Count; i++) 
{ 
    x[i, 0] = xz[i]; 
} 

내가 이것보다 더 나은 방법을 찾을 수 없습니다 :

여기
List<Double> xz = new List<Double>(); 
Double[] myDblArray = xz.ToArray(); 
+0

저는 알기로 ALGLIB가 왜이 시점에서 다차원 배열을 갖고 싶어하는지 혼란스러워했습니다. – matjes

관련 문제