示例#1
0
        private void button2_Click(object sender, EventArgs e)
        {
            EraseGraph();

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string FileName;
                int    datalength   = 0;
                double dataB_avg    = 0;
                double dataB_avgAbs = 0;
                //double[] dataA;

                FileName = openFileDialog1.FileName;
                //openFileDialog1.FileName = "*.txt";

                if (openFileDialog1.FilterIndex == 0)
                {
                    /*StreamReader sr = new StreamReader(FileName, Encoding.ASCII);
                     * //  int nextChar = sr.Read();
                     * //  nextChar = sr.Read();
                     * //  nextChar -= 0x30;
                     * // 全部读完
                     * string restOfStream = sr.ReadToEnd();
                     * sr.Dispose();
                     * datalength = (restOfStream.Length - 6) / 6;
                     * //  label4.Text = Convert.ToString(nextChar);
                     * //处理数据,计算平均值
                     * // float dataA_avg = 0;
                     * dataA = new double[datalength];
                     * byte[] tmp = new byte[4];
                     * for (int i = 0; i < datalength; i++)
                     * {
                     *  tmp[0] = (byte)restOfStream[3 + i * 6];
                     *  tmp[1] = (byte)restOfStream[3 + i * 6 + 1];
                     *  tmp[2] = (byte)restOfStream[3 + i * 6 + 3];
                     *  tmp[3] = (byte)restOfStream[3 + i * 6 + 4];
                     *
                     *  for (int j = 0; j < 4; j++)
                     *  {
                     *
                     *      if (tmp[j] > 96 && tmp[j] < 103)
                     *          tmp[j] = (byte)((int)tmp[j] - 87);
                     *      else if (tmp[j] > 64 && tmp[j] < 71)
                     *          tmp[j] = (byte)((int)tmp[j] - 55);
                     *      else if (tmp[j] > 47 && tmp[j] < 58)
                     *          tmp[j] = (byte)((int)tmp[j] - 48);
                     *  }
                     *
                     *  dataA[i] = 0;
                     *  for (int j = 0; j < 4; j++)
                     *      dataA[i] = (dataA[i] * 0x10 + tmp[j]);
                     *
                     *  dataA_avg += dataA[i] / datalength;
                     * }*/
                }
                else
                {
                    FileStream fs = new FileStream(FileName, FileMode.Open);
                    datalength = (int)(fs.Length - 2) / 2 - cutNum;
                    dataB      = new double[datalength];
                    byte[] data = new byte[datalength * 2];



                    fs.Seek(cutNum + 1, SeekOrigin.Begin);//跳过第一个字符
                    fs.Read(data, 0, datalength * 2);


                    fs.Dispose();



                    // byte[] adata = new byte[datalength * 2];
                    // adata = data;
                    //data_B = adata;



                    for (int i = 0; i < datalength; i++)
                    {
                        dataB[i] = (double)(data[2 * i] * 0x100 + data[2 * i + 1]);
                    }


                    dataB_avg = 0;
                    for (int i = 0; i < datalength; i++)
                    {
                        dataB_avg += dataB[i] / datalength;
                    }
                }


                for (int i = 0; i < datalength; i++)
                {
                    dataB[i] = (dataB[i] - dataB_avg) / dataB_avg;
                }

                //B平均幅值
                for (int i = 0; i < datalength; i++)
                {
                    dataB_avgAbs += System.Math.Abs(dataB[i]) / datalength;
                }
                textBoxAvgB.Text = dataB_avgAbs.ToString();

                //保存数据
                WaterLeak.set_DataLength(datalength);
                WaterLeak.set_DataB(dataB);
                WaterLeak.set_DataB_Avg(dataB_avg);


                //画图形

                /*panel2.Controls.Clear();
                 *
                 * ZedGraphControl zed2 = new ZedGraphControl();
                 * zed2.Width = MasterPane.Width;
                 * zed2.Height = MasterPane.Height;
                 * panel2.Controls.Add(zed2);
                 *
                 * GraphPane Pane = zed2.GraphPane;*/
                /*Pane.Title = "数据B";
                 * Pane.XAxis.Title = "点数";
                 * Pane.YAxis.Title = "信号强度";*/


                for (int i = 0; i < datalength; i++)
                {
                    listB.Add(i, dataB[i]);
                }

                //LineItem myCurve = Pane.AddCurve("Porsche", list, Color.Blue, SymbolType.None);
                //zed2.AxisChange();

                //开启状态使能
                button3.Enabled = true;
            }
        }
示例#2
0
        private void button1_Click(object sender, EventArgs e)
        {
            EraseGraph();

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string FileName;
                int    datalength   = 0;
                double dataA_avg    = 0;
                double dataA_avgAbs = 0;
                //double[] dataA;

                FileName = openFileDialog1.FileName; //选取的文件

                //openFileDialog1.FileName = "*.txt";

                if (openFileDialog1.FilterIndex == 0)                             //文件筛选器的索引,第一项
                {
                    StreamReader sr = new StreamReader(FileName, Encoding.ASCII); //输入流用于从外部源读取数据
                    //  int nextChar = sr.Read();
                    //  nextChar = sr.Read();
                    //  nextChar -= 0x30;
                    // 全部读完
                    string restOfStream = sr.ReadToEnd();  //从流的当前位置到末尾读取流。
                    datalength = (restOfStream.Length - 6) / 6;
                    //  label4.Text = Convert.ToString(nextChar);
                    //处理数据,计算平均值
                    byte[] tmp = new byte[4];
                    dataA = new double[datalength];

                    for (int i = 0; i < datalength; i++)
                    {
                        tmp[0] = (byte)restOfStream[3 + i * 6];
                        tmp[1] = (byte)restOfStream[3 + i * 6 + 1];
                        tmp[2] = (byte)restOfStream[3 + i * 6 + 3];
                        tmp[3] = (byte)restOfStream[3 + i * 6 + 4];

                        for (int j = 0; j < 4; j++)
                        {
                            if (tmp[j] > 96 && tmp[j] < 103)
                            {
                                tmp[j] = (byte)((int)tmp[j] - 87);
                            }
                            else if (tmp[j] > 64 && tmp[j] < 71)
                            {
                                tmp[j] = (byte)((int)tmp[j] - 55);
                            }
                            else if (tmp[j] > 47 && tmp[j] < 58)
                            {
                                tmp[j] = (byte)((int)tmp[j] - 48);
                            }
                        }

                        dataA[i] = 0;
                        for (int j = 0; j < 4; j++)
                        {
                            dataA[i] = (dataA[i] * 0x10 + tmp[j]);
                        }

                        dataA_avg += dataA[i] / datalength;
                    }

                    sr.Dispose();
                }
                else
                {
                    FileStream fs = new FileStream(FileName, FileMode.Open);
                    //datalength = (int)(fs.Length-2)/2;

                    datalength = (int)((fs.Length - 2) / 2) - cutNum;
                    dataA      = new double[datalength];
                    byte[] data = new byte[datalength * 2];



                    fs.Seek(cutNum + 1, SeekOrigin.Begin);//跳过字符
                    fs.Read(data, 0, datalength * 2);

                    fs.Dispose();


                    //byte[] adata = new byte[datalength * 2];
                    //adata = data;
                    //data_A = adata;


                    for (int i = 0; i < datalength; i++)
                    {
                        dataA[i] = (double)(data[2 * i] * 0x100 + data[2 * i + 1]);
                    }
                    dataA_avg = 0;
                    for (int i = 0; i < datalength; i++)
                    {
                        dataA_avg += dataA[i] / datalength;
                    }
                }

                double variance = ComputeVariance2(dataA);

                //double[] data1 = dataA;
                //double[] data2 = dataA;
                //MyMath mm = new MyMath();
                //double fc = mm.mse(data1);
                //double[] maxten = new double[10];
                //maxten = mm.maxten(data1);
                //double[] minten = new double[10];
                //minten = mm.minten(data2);

                for (int i = 0; i < datalength; i++)//归一处理
                {
                    dataA[i] = (dataA[i] - dataA_avg) / dataA_avg;
                }



                //A平均幅值
                for (int i = 0; i < datalength; i++)
                {
                    dataA_avgAbs += System.Math.Abs(dataA[i]) / datalength;
                }
                textBoxAvgA.Text = dataA_avgAbs.ToString();

                //保存数据
                WaterLeak.set_DataLength(datalength);
                WaterLeak.set_DataA(dataA);
                WaterLeak.set_DataA_Avg(dataA_avg);

                //画图形

                /*MasterPane.Controls.Clear();  //清空
                 *
                 * ZedGraphControl zed1 = new ZedGraphControl();
                 * zed1.Width = MasterPane.Width;
                 * zed1.Height = MasterPane.Height;
                 * MasterPane.Controls.Add(zed1);
                 *
                 * GraphPane Pane = zed1.GraphPane;
                 * /*Pane.Title = "数据A";
                 * Pane.XAxis.Title = "点数";
                 * Pane.YAxis.Title = "信号强度";*/

                //PointPairList list = new PointPairList();

                for (int i = 0; i < datalength; i++)
                {
                    listA.Add(i, dataA[i]);
                }

                //LineItem myCurve = Pane.AddCurve("Porsche", list, Color.Blue, SymbolType.None);
                //zed1.AxisChange();

                //开启状态使能
                button2.Enabled = true;
            }
        }