Пример #1
0
        private void SetFormingTypeMenu(SliceFormingType type)
        {
            нулевойСдвигToolStripMenuItem.Checked          = false;
            общийПунктВозбужденияToolStripMenuItem.Checked = false;
            общийПунктПриемаToolStripMenuItem.Checked      = false;
            общаяСредняяТочкаToolStripMenuItem.Checked     = false;

            switch (type)
            {
            case SliceFormingType.ns:
                нулевойСдвигToolStripMenuItem.Checked = true;
                break;

            case SliceFormingType.opv:
                общийПунктВозбужденияToolStripMenuItem.Checked = true;
                break;

            case SliceFormingType.opp:
                общийПунктПриемаToolStripMenuItem.Checked = true;
                break;

            case SliceFormingType.ost:
                общаяСредняяТочкаToolStripMenuItem.Checked = true;
                break;
            }
        }
Пример #2
0
        public static void RefreshSlicesData(SliceFormingType type)
        {
            var tData = useDeconvolvedData ? tracesDataDeconv : tracesData;

            if (tData == null || tData.Length == 0)
            {
                tData = tracesData;
            }

            currentSliceFormingType = type;

            slices = new float[numberOfSonograms][, ];

            Parallel.For(0, numberOfSonograms, sliceNumber =>
            {
                float[,] sliceData = new float[numberOfTraces, maxtime];

                for (int x = 0; x < numberOfTraces; x++)
                {
                    Trace t = new Trace();
                    switch (type)
                    {
                    case SliceFormingType.ns:
                        t = tData.Where(e => e.position == x && e.transmitter == x).FirstOrDefault();    //нулевого сдвига
                        break;

                    case SliceFormingType.opv:
                        t = tData.Where(e => e.position == x && e.transmitter == sliceNumber).FirstOrDefault();    //общего пункта возбуждения
                        break;

                    case SliceFormingType.opp:
                        t = tData.Where(e => e.position == sliceNumber && e.transmitter == x).FirstOrDefault();    //общего пункта приёма
                        break;

                    case SliceFormingType.ost:
                        t = tData.Where(e => e.position == sliceNumber * 2 - x && e.transmitter == x).FirstOrDefault();    //общей средней точки
                        break;
                    }
                    ;

                    if (t.data == null)
                    {
                        continue;                     //для данной трассы данных не нашлось
                    }
                    for (int y = 0; y < maxtime; y++) //здесь нам нужно взять нужные трассы и собрать из них кадр
                    {
                        sliceData[x, y] = t.data[y];
                    }
                }
                slices[sliceNumber] = sliceData;
            });
        }