Как инициализировать массив комплексных чисел, чтобы отображались такие свойства, как фаза, величина - PullRequest
0 голосов
/ 08 мая 2018

так что у меня есть две формы. Одна форма получает числа, вычисляет комплексное число и сохраняет его в массиве form1. Все проходит и рассчитывается правильно. Я получаю свой сложный массив без проблем. Проблема в том, когда я пытаюсь получить фазу комплексного числа. Я знаю, что величина и фаза являются свойствами структуры Complex, так что я могу просто сделать load_Results.Magnitude или load_Results.Phase и получить соответствующие значения, но это не дает мне возможность иметь это как свойство. Я неправильно их инициализировал в форме 1? Как я могу сделать так, чтобы эти свойства отображались.

Это то, что отображается как моя ошибка:

Error   24  'System.Array' does not contain a definition for 'Magnitude' and no extension method 'Magnitude' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an assembly reference?)

Форма 1

 public static  double[] freqList;
 public static Complex[] load_Results;


public form 1()
{           InitializeComponent();
            freqList = new double[801];
            load_Results = new Complex[801];

}

private void click_view(object sender, EventArgs e)
{ // part that fails
Graph.Series[0].Points.AddXY(freqList,load_Results.Magnitude);
}

Форма 2

private void test()
        {                    
             form1.load_Results[i] = Calculations(form1.freqList[i]);


        }
public Complex Calculations(double freq)
        {   Complex cval = new Complex();
            double mag, phase;
            //does math stuff to calculate mag and phase
            cval = Complex.FromPolarCoordinates(mag, phase);
            return (cval);
        }

1 Ответ

0 голосов
/ 08 мая 2018

load_Results - это массив, который содержит элементы типа Complex. Вам нужно получить свойство Magnitude от каждого элемента этого массива и вернуть его. Например:

Graph.Series[0].Points.AddXY(freqList, load_Results.Select(x => x.Magnitude).ToArray());
...