Tom*_*Tom 2 c# complex-numbers
我有两个数组。一个包含“真实”值,另一个包含“虚”值。这两个数组需要组合成一个复数数组。我尝试了以下方法:
Complex[] complexArray = new Complex[16384];
for (int i = 0; i <16384; i++)
(
complexArray[i].Real = realArray[i];
complexArray[i].Imaginary = imaginaryArray[i];
}
Run Code Online (Sandbox Code Playgroud)
它不起作用。它给出了错误:属性或索引器“System.Numerics.Complex.Real”不能被分配——它是只读的我知道复数是不可变的,但是如何创建这样一个数组?
更重要的是,一旦我有了这个数组,我就想移动其中的值。
只需将构造函数用于Complex:
Complex[] complexArray = new Complex[16384];
for (int i = 0; i < complexArray.Length; i++)
(
complexArray[i] = new Complex(realArray[i], imaginaryArray[i]);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 LINQ 减少代码量(轻微的性能成本):
var complexArray = realArray.Zip(imaginaryArray, (a, b) => new Complex(a, b)).ToArray();
Run Code Online (Sandbox Code Playgroud)
要移动数组中的值,请执行与值是int或 相同的操作double:
int i = 5;
int j = 7;
// Swap positions i and j
var temp = complex[i];
complex[i] = complex[j];
complex[j] = temp;
Run Code Online (Sandbox Code Playgroud)