public MethodData(double con, bool en, int prob_index, int sub_prob_index, int frame_index, SpectrDataView data_view_sig, SpectrDataView data_view_nul, Dispers disp) { Con = con; Disp = disp; En = en; ProbIndex = prob_index; SubProbIndex = sub_prob_index; FrameIndex = frame_index; DataViewSig = data_view_sig; DataViewNull = data_view_nul; float[][] nul = DataViewNull.GetFullDataNoClone(); float[][] sig = DataViewSig.GetFullDataNoClone(); DataMinusNull = new float[nul.Length][]; for (int s = 0; s < nul.Length; s++) { int len = nul[s].Length; DataMinusNull[s] = new float[len]; for (int i = 0; i < len; i++) { DataMinusNull[s][i] = sig[s][i] - nul[s][i]; } } }
static public SpectrDataView Add(SpectrDataView sdv1, SpectrDataView sdv2) { float[][] data1 = sdv1.GetFullData(); float[][] data2 = sdv2.GetFullDataNoClone(); for (int sn = 0; sn < data1.Length; sn++) { for (int i = 0; i < data1[sn].Length; i++) { data1[sn][i] = (data1[sn][i] + data2[sn][i]) / 2; } } SpectrDataView ret = new SpectrDataView(sdv1.GetCondition(), data1, (short)sdv1.OverloadLevel, (short)sdv1.MaxLinarLevel); return(ret); }
List <double> HasLine(int sn, double ly, Dispers disp, int plus_minus, out double ly_real, out List <float[]> data) { int prob_count = Method.GetProbCount(); //double ret = 0; int n_ret = 0; ly_real = 0; List <double> ret = new List <double>(); data = new List <float[]>(); for (int pr = 0; pr < prob_count; pr++) { MethodSimpleProb msp = Method.GetProbHeader(pr); for (int spr = 0; spr < msp.MeasuredSpectrs.Count; spr++) { MethodSimpleProbMeasuring pm = msp.MeasuredSpectrs[spr]; if (pm.Sp == null) { continue; } SpectrDataView sdv = pm.Sp.GetDefultView(); double tmp = 0; double ly_cur = 0; float[] data_cur = null; try { tmp = CheckLine(sn, ly, sdv.GetFullDataNoClone(), disp, plus_minus, out ly_cur, out data_cur); } catch { } if (tmp == 0) { ly_real = -1; data = null; return(null); } ly_real += ly_cur; ret.Add(tmp); data.Add(data_cur); n_ret++; } } ly_real /= n_ret; return(ret);// / n_ret; }
//0-empty-14 15-blank-28 29-signal-3676 3677-blank-3690 float[] getData(SpectrDataView view) { short[] start = view.BlankStart[0]; short[] end = view.BlankEnd[0]; float[] data = view.GetFullDataNoClone()[0]; float[] res = new float[4096]; int ind = 0; for (int i = 0; i < start.Length; i++, ind++) { res[ind] = start[i]; } for (int i = 0; i < data.Length; i++, ind++) { res[ind] = data[i]; } for (int i = 0; i < end.Length; i++, ind++) { res[ind] = end[i]; } return(res); }
void GetData(SpectrDataView data, Dispers disp, OpticFk fk, out int[] sn, out int[] pixel, out int[] vpixel, out float[] signal, out float[] sens) { int[] ss = disp.GetSensorSizes(); float[][] vals = data.GetFullDataNoClone(); int len = 0; for (int s = 0; s < ss.Length; s++) { if (data.BlankStart != null) { len += data.BlankStart[s].Length; } if (data.BlankEnd != null) { len += data.BlankEnd[s].Length; } len += vals[s].Length; } sn = new int[len]; pixel = new int[len]; vpixel = new int[len]; signal = new float[len]; sens = new float[len]; int ind = 0; for (int s = 0; s < ss.Length; s++) { int pix = 0; int vpix = 0; int l; if (data.BlankStart != null) { l = data.BlankStart[s].Length; for (int i = 0; i < l; i++, ind++, pix++) { sn[ind] = s; pixel[ind] = pix; vpixel[ind] = -1; sens[ind] = 1; signal[ind] = data.BlankStart[s][i]; } } l = vals[s].Length; for (int i = 0; i < l; i++, ind++, pix++, vpix++) { sn[ind] = s; pixel[ind] = pix; vpixel[ind] = vpix; signal[ind] = vals[s][i]; sens[ind] = 1;//fk.SensK[s][i]; } if (data.BlankEnd != null) { l = data.BlankEnd[s].Length; for (int i = 0; i < l; i++, ind++, pix++) { sn[ind] = s; pixel[ind] = pix; vpixel[ind] = -1; sens[ind] = 1; signal[ind] = data.BlankEnd[s][i]; } } } }