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; } }
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; }); }