コード例 #1
0
ファイル: Form1.cs プロジェクト: homjan/Specific_PPG_points
        private void button3_Click(object sender, EventArgs e)//Сохранить 1 период
        {
            nomer_period = System.Convert.ToInt32(textBox2.Text);
            Boolean povtor = false;

            richTextBox2.Clear();

            long n2_x = 0;
            long n3_x = 0;
            long n4_x = 0;

            long n2_y = 0;
            long n3_y = 0;
            long n4_y = 0;

            int B2 = System.Convert.ToInt32(textBox4.Text);
            int B3 = System.Convert.ToInt32(textBox6.Text);
            int B4 = System.Convert.ToInt32(textBox8.Text);

            int reg = System.Convert.ToInt32(this.textBox1.Text);
            int ekg = 1;

            Initial_data init_data = new Initial_data("test3.txt", reg, ekg);

            init_data.Shift_Row1_To_Time_0(); //Сдвигаем время к 0
            init_data.Smoothe_Row1();         // Сглаживаем полученные данные
            init_data.Calculate_Derivative_Row2();
            init_data.Average_Canal_REG_Row3();
            init_data.Smoothing_Ekg_Row4();

            long[,] row_1 = init_data.Get_Row1();
            int b = init_data.Get_Number_Strings();

            Initial_processing.Divided_by_periods_data divided_row = new Initial_processing.Divided_by_periods_data(init_data, this.comboBox2.Text);
            Special_point osob_point = new Special_point(divided_row, init_data);

            long[,] osob = null;
            osob_point.Calculate_Special_Point(this.comboBox2.Text);
            osob = osob_point.Get_Special_Point();

            int arre = osob.Length;
            int ew   = arre / 15;//счетчик найденных максимумов

            /////////////////////////
            /////////////////////////
            // новое
            //ЭКГ мах -     0
            //ЭКГ мах -х -  1
            // В1, В5 -     2
            // В1x, В5x -   3
            // В2 -         4
            // В2x -        5
            // В3 -         6
            // В3x -        7
            // В4 -         8
            // В4x -        9
            //osob_10  -    Изначальная высота

            ////////////////////////

            long[,] osob_x = new long[5, ew];// список особых точек для вывода на график
            long[,] osob_y = new long[5, ew];

            for (int i = 0; i < ew - 1; i++)
            {
                osob_x[0, i] = osob[1, i];
                osob_y[0, i] = osob[0, i];

                osob_x[1, i] = osob[3, i];
                osob_y[1, i] = osob[2, i];

                osob_x[2, i] = osob[5, i];
                osob_y[2, i] = osob[4, i] + osob[10, i];

                osob_x[3, i] = osob[7, i];
                osob_y[3, i] = osob[6, i] + osob[10, i];

                osob_x[4, i] = osob[9, i];
                osob_y[4, i] = osob[8, i] + osob[10, i];
            }

            StreamWriter rw  = new StreamWriter("Данные обработанные.txt", true);
            StreamWriter rw2 = new StreamWriter("Особые точки.txt", true);

            int nub_dop = 0;

            for (int q = 3; q < b; q++)// Выбираем отрезок
            {
                if (row_1[q, 0] >= osob_x[1, nomer_period] && row_1[q, 0] < osob_x[1, nomer_period + 1])
                {
                    rw.Write(row_1[q, reg] + "\t");
                    povtor = true;

                    if (nub_dop == B2)
                    {
                        n2_x = B2;
                        n2_y = row_1[q, reg];
                    }
                    if (nub_dop == B3)
                    {
                        n3_x = B3;
                        n3_y = row_1[q, reg];
                    }
                    if (nub_dop == B4)
                    {
                        n4_x = B4;
                        n4_y = row_1[q, reg];
                    }
                    nub_dop++;
                }
            }

            //Дополняем отрезок нулями до равной длины
            for (int i = nub_dop; i < number_point_line; i++)
            {
                if (i == number_point_line - 1)
                {
                    rw2.Write(0);
                }
                else
                {
                    rw.Write(0 + "\t");
                }
            }

            rw.WriteLine();

            for (int i = 0; i < number_point_line; i++)
            {
                if (i == n2_x)
                {
                    rw2.Write(n2_y + "\t");
                }
                else if (i == n3_x)
                {
                    rw2.Write(n3_y + "\t");
                }
                else if (i == n4_x)
                {
                    rw2.Write(n4_y + "\t");
                }
                else if (i == number_point_line - 1)
                {
                    rw2.Write(0);
                }
                else
                {
                    rw2.Write(0 + "\t");
                }
            }
            rw2.WriteLine();


            rw.Close();
            rw2.Close();

            scet_period++;
            textBox10.Text = System.Convert.ToString(scet_period);

            StreamWriter scetch = new StreamWriter("счетчик.txt");

            scetch.WriteLine(scet_period);
            scetch.Close();
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: homjan/Specific_PPG_points
        private void button11_Click(object sender, EventArgs e)//Редактировать особые точки
        {
            button12.Enabled = true;
            button13.Enabled = true;
            button14.Enabled = true;
            button15.Enabled = true;
            button16.Enabled = true;
            button17.Enabled = true;

            nomer_period = System.Convert.ToInt32(textBox2.Text);
            Boolean povtor = false;

            richTextBox2.Clear();

            int reg = System.Convert.ToInt32(this.textBox1.Text);
            int ekg = 1;

            Initial_data init_data = new Initial_data("test3.txt", reg, ekg);

            init_data.Shift_Row1_To_Time_0(); //Сдвигаем время к 0
            init_data.Smoothe_Row1();         // Сглаживаем полученные данные
            init_data.Calculate_Derivative_Row2();
            init_data.Average_Canal_REG_Row3();
            init_data.Smoothing_Ekg_Row4();

            long[,] row_1 = init_data.Get_Row1();
            int b = init_data.Get_Number_Strings();

            Initial_processing.Divided_by_periods_data divided_row = new Initial_processing.Divided_by_periods_data(init_data, this.comboBox2.Text);
            Special_point osob_point = new Special_point(divided_row, init_data);

            long[,] osob = null;
            osob_point.Calculate_Special_Point(this.comboBox2.Text);
            osob = osob_point.Get_Special_Point();

            int arre = osob.Length;
            int ew   = arre / 15;//счетчик найденных максимумов

            /////////////////////////
            /////////////////////////
            // новое
            //ЭКГ мах -     0
            //ЭКГ мах -х -  1
            // В1, В5 -     2
            // В1x, В5x -   3
            // В2 -         4
            // В2x -        5
            // В3 -         6
            // В3x -        7
            // В4 -         8
            // В4x -        9
            //osob_10  -    Изначальная высота

            ////////////////////////

            long[,] osob_x = new long[5, ew];// список особых точек для вывода на график
            long[,] osob_y = new long[5, ew];

            for (int i = 0; i < ew - 1; i++)
            {
                osob_x[0, i] = osob[1, i];
                osob_y[0, i] = osob[0, i];

                osob_x[1, i] = osob[3, i];
                osob_y[1, i] = osob[2, i];

                osob_x[2, i] = osob[5, i];
                osob_y[2, i] = osob[4, i] + osob[10, i];

                osob_x[3, i] = osob[7, i];
                osob_y[3, i] = osob[6, i] + osob[10, i];

                osob_x[4, i] = osob[9, i];
                osob_y[4, i] = osob[8, i] + osob[10, i];
            }

            // Файлы для редактирования
            StreamWriter rw  = new StreamWriter("Исправляемый цикл.txt");
            StreamWriter rw2 = new StreamWriter("Исправляемый цикл - точки.txt");

            GraphPane pane = zedGraph1.GraphPane;

            pane.CurveList.Clear();

            // Создадим список точек для кривой f2(x)
            PointPairList f2_list  = new PointPairList();
            PointPairList f4_list  = new PointPairList();
            int           scah_max = 1;
            int           B2       = 0;
            int           B3       = 0;
            int           B4       = 0;

            for (int q = 3; q < b; q++)// считаем производную
            {
                if (row_1[q, 0] >= osob_x[1, nomer_period] && row_1[q, 0] < osob_x[1, nomer_period + 1])
                {
                    f2_list.Add(row_1[q, 0] / 1000, 570);
                    f4_list.Add(row_1[q, 0] / 1000, row_1[q, reg]);
                    rw.WriteLine(row_1[q, 0] + "\t" + row_1[q, reg]);
                    richTextBox2.AppendText(System.Convert.ToString(scah_max) + "\t" + System.Convert.ToString(row_1[q, reg]) + "\n");

                    if (osob_x[2, nomer_period] > row_1[q, 0])
                    {
                        B2 = scah_max;
                    }
                    if (osob_x[3, nomer_period] > row_1[q, 0])
                    {
                        B3 = scah_max;
                    }
                    if (osob_x[4, nomer_period] > row_1[q, 0])
                    {
                        B4 = scah_max;
                    }

                    scah_max++;
                    povtor = true;
                } //rw.WriteLine(row1[q, 0] + "\t" + row1[q, reg]);
            }
            // Заполним массив точек для кривой f1-3(x)
            textBox5.Text = System.Convert.ToString(scah_max);
            textBox7.Text = System.Convert.ToString(scah_max);
            textBox9.Text = System.Convert.ToString(scah_max);

            textBox4.Text = System.Convert.ToString(B2);
            textBox6.Text = System.Convert.ToString(B3);
            textBox8.Text = System.Convert.ToString(B4);

            usergraph = new UseZedgraph(zedGraph1, init_data);
            usergraph.ClearAll();//Очищаем полотно
            usergraph.MakeGraph_On_Chosen_Canal_Only_One_Graph(reg, osob_x[1, nomer_period], osob_x[1, nomer_period + 1]);

            if (povtor == true)
            {
                usergraph.MakeGraph_Special_Point_Without_EKG_One_Period(osob_x, osob_y, B2, B3, B4, nomer_period);
                usergraph.ResetGraph();
                usergraph.Install_Pane("t, мc", "R, Ом", " "); //Устанавливаем оси и заглавие
                usergraph.ResetGraph();                        //Обновляем
            }

            rw.Close();
            rw2.Close();
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: homjan/Specific_PPG_points
        private void button5_Click(object sender, EventArgs e)//Рассчитать особые точки
        {
            StringBuilder buffer = new StringBuilder();

            richTextBox2.Clear();

            int reg = System.Convert.ToInt32(this.textBox1.Text);
            int ekg = 1;

            Initial_data init_data = new Initial_data("test3.txt", reg, ekg);

            init_data.Shift_Row1_To_Time_0(); //Сдвигаем время к 0
            init_data.Smoothe_Row1();         // Сглаживаем полученные данные
            init_data.Calculate_Derivative_Row2();
            init_data.Average_Canal_REG_Row3();
            init_data.Smoothing_Ekg_Row4();

            usergraph = new UseZedgraph(zedGraph1, init_data);
            usergraph.ClearAll();//Очищаем полотно
            usergraph.MakeGraph_On_Chosen_Canal();

            //Разделяем
            Initial_processing.Divided_by_periods_data divided_row = new Initial_processing.Divided_by_periods_data(init_data, this.comboBox2.Text);
            divided_row.Calculate_Data_In_Period();

            Special_point osob_point = new Special_point(divided_row, init_data);

            long[,] osob = null;

            osob_point.Calculate_Special_Point(this.comboBox2.Text);
            osob = osob_point.Get_Special_Point();

            int arre = osob.Length;
            int ew   = arre / 15;//счетчик найденных максимумов

            /////////////////////////
            /////////////////////////
            // новое
            //ЭКГ мах -     0
            //ЭКГ мах -х -  1
            // В1, В5 -     2
            // В1x, В5x -   3
            // В2 -         4
            // В2x -        5
            // В3 -         6
            // В3x -        7
            // В4 -         8
            // В4x -        9
            //osob_10  -    Изначальная высота

            ////////////////////////

            long[,] osob_x = new long[5, ew];// список особых точек для вывода на график
            long[,] osob_y = new long[5, ew];

            for (int i = 0; i < ew - 1; i++)
            {
                osob_x[0, i] = osob[1, i];
                osob_y[0, i] = osob[0, i];

                osob_x[1, i] = osob[3, i];
                osob_y[1, i] = osob[2, i];

                osob_x[2, i] = osob[5, i];
                osob_y[2, i] = osob[4, i] + osob[10, i];

                osob_x[3, i] = osob[7, i];
                osob_y[3, i] = osob[6, i] + osob[10, i];

                osob_x[4, i] = osob[9, i];
                osob_y[4, i] = osob[8, i] + osob[10, i];
            }

            textBox3.Text = Convert.ToString(ew - 4);
            usergraph.MakeGraph_Special_Point(osob_x, osob_y, ew);
            usergraph.Install_Pane("t, мc", "R, Ом", " "); //Устанавливаем оси и заглавие
            usergraph.ResetGraph();                        //Обновляем
            StreamReader scetch = new StreamReader("счетчик.txt");
            String       ssssq  = scetch.ReadLine();

            textBox10.Text = ssssq;
            scet_period    = System.Convert.ToInt32(ssssq);
            scetch.Close();
        }