2015-01-27 6 views
0

두 개의 배열이 있습니다. 하나는 "실제"값을 포함하고 다른 하나는 "허수"값을 포함합니다. 이 두 배열은 복소수 배열로 결합되어야합니다. 나는 다음을 시도했다 :복소수 배열 채우기 오류

Complex[] complexArray = new Complex[16384]; 

for (int i = 0; i <16384; i++) 
(
    complexArray[i].Real = realArray[i]; 
    complexArray[i].Imaginary = imaginaryArray[i]; 
} 

그것은 작동하지 않는다. 그것은 오류를 제공합니다 : 속성 또는 인덱서 'System.Numerics.Complex.Real'을 할당 할 수 없습니다 - 읽기 전용입니다 복소수는 불변이지만 그와 같은 배열을 만드는 방법은 알고 있습니까?

이 배열을 사용하면 더 이상 값을 이동하려고합니다.

+2

아마도 구조체에는 생성자가 있으며 생성자를 사용하여 필드를 초기화해야합니다. –

+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

답변

4

그냥 Complex의 생성자를 사용

Complex[] complexArray = new Complex[16384]; 
for (int i = 0; i < complexArray.Length; i++) 
(
    complexArray[i] = new Complex(realArray[i], imaginaryArray[i]); 
} 

선택적으로, 당신은 다음 LINQ를 사용하여 코드의 양 (약간의 성능 비용)을 줄일 수

var complexArray = realArray.Zip(imaginaryArray, (a, b) => new Complex(a, b)).ToArray(); 

은 배열에 값을 이동하려면 값이 int 또는 double 인 경우와 동일한 작업을 수행하십시오.

int i = 5; 
int j = 7; 
// Swap positions i and j 
var temp = complex[i]; 
complex[i] = complex[j]; 
complex[j] = temp; 
+0

https://msdn.microsoft.com/en-us/library/system.numerics.complex(v=vs.110).aspx – Gus

+0

감사합니다. 완전한 – Tom