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