Exemple #1
0
        public void Train(SpecBase lib, bool needFilter = true)
        {
            //过滤掉性质有NaN的数据
            lib.FilterNaN();
            int[] idxs = lib.Specs.Select((d, idx) => new { s = d, idx = idx }).Where(d => d.s.Usage != UsageTypeEnum.Ignore).Select(d => d.idx).ToArray();
            this._lib = Serialize.DeepClone <SpecBase>(lib.SubLib(idxs));
            if (needFilter && this._filters != null)
            {
                this._lib.SetX(Preprocesser.Process(this._filters, this._lib), true);
            }

            //PCA分解
            var handler = Tools.ModelHandler;

            if (this._maxRank < 1)
            {
                this._maxRank = 10;
            }
            this._maxRank = Math.Min(this._maxRank, this._lib.X.Dimensions[1]);
            var r = handler.IdentifyTrain(3, this._lib.X, this._maxRank);

            this._p       = (MWNumericArray)r[0];
            this._w       = (MWNumericArray)r[1];
            this._t       = (MWNumericArray)r[2];
            this._trained = true;
        }
Exemple #2
0
        //[TestMethod]
        public void fittiting()
        {
            var specbase = new SpecBase(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\crude.Lib");
            var CX       = specbase.GetX(false, UsageTypeEnum.Calibrate);

            var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\CX.mat");

            writer.WriteMatrix <double>(CX, "CX");
            writer.Close();

            var cy = specbase.GetY(false, UsageTypeEnum.Calibrate);

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\CY.mat");
            writer.WriteMatrix <double>(cy, "CY");
            writer.Close();

            var vx = specbase.GetX(false, UsageTypeEnum.Validate);

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\VX.mat");
            writer.WriteMatrix <double>(vx, "VX");
            writer.Close();

            var vy = specbase.GetY(false, UsageTypeEnum.Validate);

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\VY.mat");
            writer.WriteMatrix <double>(vy, "VY");
            writer.Close();
        }
Exemple #3
0
        private void btnAddtmpl_Click(object sender, EventArgs e)
        {
            OpenFileDialog myOpenFileDialog = new OpenFileDialog()
            {
                Filter           = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.LibTmp, FileExtensionEnum.LibTmp.GetDescription()),
                InitialDirectory = Busi.Common.Configuration.FolderSpecTemp
            };

            if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            try
            {
                var s = new SpecBase(myOpenFileDialog.FileName);
                this._model       = new IntegrateModel();
                this._model.Comps = s.Components.Clone();
                this.initGrid();
            }
            catch
            {
            }
            this.btnAddModel.Enabled = true;
            this.btnSave.Enabled     = true;
        }
Exemple #4
0
        private void btnMerger_Click(object sender, EventArgs e)
        {
            if (this.specGridView1.Specs == null)
            {
                MessageBox.Show("请先添加或打开光谱库", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            OpenFileDialog myOpenFileDialog = new OpenFileDialog()
            {
                Filter = string.Format("{1} (*.{0})|*.{0}",
                                       FileExtensionEnum.Lib,
                                       FileExtensionEnum.Lib.GetDescription()),
                InitialDirectory = Busi.Common.Configuration.FolderSpecLib
            };

            if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            var specs = new SpecBase(myOpenFileDialog.FileName);

            //try
            //{

            this.specGridView1.Specs.Merger(specs);
            this.specGridView1.Render();
            //}
            //catch (Exception ex)
            //{
            //    Log.Error(ex);
            //    MessageBox.Show("合并出错,请检测光谱库是中光谱是否一致!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
        }
Exemple #5
0
 private void initSpec(SpecBase lib)
 {
     this.specGridView1.Specs = lib;
     this.setTitle();
     this.specGraphAll.DrawSpec(lib.ToList());
     this.rtxbDesc.Text = lib.Description;
 }
Exemple #6
0
        public void Drawchart(SpecBase lib, NIR.Component c)
        {
            this.specGraph1.DrawSpec(lib);

            var clonelib = lib.Clone();

            clonelib.FilterNaN(c);



            var xaxis = this.Xaxis;

            double[] yaxis;
            if (c == null)
            {
                yaxis = Tools.Corelatn(clonelib.X, clonelib.GetY(lib.Components.First()));
            }
            else
            {
                yaxis = Tools.Corelatn(clonelib.X, clonelib.GetY(c));
            }


            var coreSpec = new Spectrum()
            {
                Name = "相关系数",
                Data = new SpectrumData(xaxis, yaxis, clonelib.First().Data.XType, DataTypeEnum.Corelatn)
            };

            this.specGraph2.DrawSpec(coreSpec);
        }
Exemple #7
0
 public static MWNumericArray Process(IList <IFilter> filters, SpecBase libinput)
 {
     if (filters == null || libinput == null)
     {
         throw new ArgumentNullException("");
     }
     return(Process(filters, libinput.GetX(true)));
 }
Exemple #8
0
 public override void Clear()
 {
     this.dataGridView1.Columns.Clear();
     this._inited         = false;
     this._lib            = null;
     this._model          = null;
     this.lblLibPath.Text = null;
 }
Exemple #9
0
 private void setOutput(SpecBase lib)
 {
     // this.plS1CVResult1.PLSContent.ActiveStep = 2;
     if (lib != null)
     {
         this.ksSetControl1.LoadData(lib, this._lib);
     }
 }
    public void SetCharacterStats(SpecBase spec)
    {
        CreateCharacterStats(spec);

        _statDictionary            = CreateStatDictionary();
        _elementEfficacyDictionary = CreateElementEfficacyDictionary(spec);

        _poolManager = PoolManager.Instance;
    }
 private Dictionary <ElementType, float> CreateElementEfficacyDictionary(SpecBase spec)
 {
     return(new Dictionary <ElementType, float>()
     {
         { ElementType.Fire, spec.BaseFireEfficacy },
         { ElementType.Wind, spec.BaseAirEfficacy },
         { ElementType.Earth, spec.BaseEarthEfficacy },
         { ElementType.Water, spec.BaseWaterEfficacy }
     });
 }
    private void CreateCharacterStats(SpecBase spec)
    {
        Health = new CharacterResource(CreateStat(spec.BaseHealth, StatType.MaxHealth), spec.BaseHealth);
        Spirit = new CharacterResource(CreateStat(spec.BaseSpirit, StatType.MaxSpirit), 0);

        _strength     = CreateStat(spec.BaseStrength, StatType.Strength);
        _will         = CreateStat(spec.BaseWill, StatType.Will);
        _defence      = CreateStat(spec.BaseDefence, StatType.Defence);
        _magicDefence = CreateStat(spec.BaseMagicDefence, StatType.MagicDefence);
    }
Exemple #13
0
 public void LoadData(SpecBase filterlib, SpecBase baselib)
 {
     this._olib = Serialize.DeepClone <SpecBase>(filterlib);
     this._nlib = Serialize.DeepClone <SpecBase>(baselib);
     //  this.renderGrid(UsageTypeEnum.Node);
     if (cbxSamSelector.SelectedIndex == 0)
     {
         this.renderGrid(UsageTypeEnum.Node);
     }
     this.combRender();
 }
Exemple #14
0
 private void btnSpecReset_Click(object sender, EventArgs e)
 {
     this._s1              = null;
     this._s2              = null;
     this._s3              = null;
     this._lib             = null;
     this.btnSpec1.Enabled = this._model != null && this._model.SubModels.Count > 0;
     this.btnSpec2.Enabled = this._model != null && this._model.SubModels.Count > 1;
     this.btnSpec3.Enabled = this._model != null && this._model.SubModels.Count > 2;
     this.reModelEnable();
 }
Exemple #15
0
        public void Train(SpecBase lib, bool needFilter = true)
        {
            //过滤掉性质有NaN的数据
            lib.FilterNaN();

            int[] idxs = lib.Specs.Select((d, idx) => new { s = d, idx = idx }).Where(d => d.s.Usage != UsageTypeEnum.Ignore).Select(d => d.idx).ToArray();
            this._lib = Serialize.DeepClone <SpecBase>(lib.SubLib(idxs));
            if (needFilter && this._filters != null)
            {
                this._lib.SetX(Preprocesser.Process(this._filters, this._lib), true);
            }
            this._trained = true;
        }
Exemple #16
0
        private static SpecBase mix(Spectrum s, double[] v1, double[] v2, double[] v3, string[] names)
        {
            var lib = new SpecBase();

            lib.Comp_Add(new Component()
            {
                Name = names[0], Eps = 2
            });
            lib.Comp_Add(new Component()
            {
                Name = names[1], Eps = 2
            });
            lib.Comp_Add(new Component()
            {
                Name = names[2], Eps = 2
            });
            var rlst = Tools.ToolHandler.Mix3(4, (MWNumericArray)v1, (MWNumericArray)v2, (MWNumericArray)v3);
            var x    = (MWNumericArray)rlst[0];
            var c1   = (double[])((MWNumericArray)rlst[1]).ToVector(MWArrayComponent.Real);
            var c2   = (double[])((MWNumericArray)rlst[2]).ToVector(MWArrayComponent.Real);
            var c3   = (double[])((MWNumericArray)rlst[3]).ToVector(MWArrayComponent.Real);

            for (int i = 0; i < x.Dimensions[1]; i++)
            {
                var st = s.Clone();
                st.Usage = UsageTypeEnum.Calibrate;
                st.Components.Clear();
                st.Components.Add(new Component()
                {
                    Name        = names[0],
                    ActualValue = c1[i]
                });
                st.Components.Add(new Component()
                {
                    Name        = names[1],
                    ActualValue = c2[i]
                });
                st.Components.Add(new Component()
                {
                    Name        = names[2],
                    ActualValue = c3[i]
                });
                st.Name   = (i + 1).ToString();
                st.Color  = Spectrum.RandomColor();
                st.Data.Y = (double[])Tools.SelectColumn(x, i + 1).ToVector(MWArrayComponent.Real);
                lib.Add(st);
            }
            return(lib);
        }
Exemple #17
0
        public DialogResult ShowData(SpecBase lib, int maxLen = 3)
        {
            this._lib = lib;
            if (this._lib == null)
            {
                return(System.Windows.Forms.DialogResult.Cancel);
            }
            foreach (var s in this._lib.Specs)
            {
                this.dataGridView1.Rows.Add(s.Name, s.UUID);
            }



            return(this.ShowDialog());
        }
Exemple #18
0
 private void btnReset_Click(object sender, EventArgs e)
 {
     s1                    = null;
     s2                    = null;
     s3                    = null;
     this.lib              = null;
     this.model            = null;
     this.btnSpec1.Enabled = true;
     this.btnSpec2.Enabled = true;
     this.btnSpec3.Enabled = true;
     //this.btnCumpute.Enabled = false;
     this.btnLoadModel.Enabled = false;
     lblInfo.Visible           = false;
     this.drawchart();
     this.specGraph1.DrawSpec(new List <Spectrum>());
     this.specGridView1.Specs = null;
 }
Exemple #19
0
 public void DrawSpec(SpecBase lib)
 {
     if (lib == null || lib.Count == 0)
     {
         return;
     }
     this._specs = new List <Spectrum>();
     for (int i = 0; i < this._maxCount; i++)
     {
         if (lib.Count <= i)
         {
             break;
         }
         this._specs.Add(lib[i]);
     }
     plotAll();
 }
Exemple #20
0
        private void btnLoadSpec_Click(object sender, EventArgs e)
        {
            OpenFileDialog myOpenFileDialog = new OpenFileDialog()
            {
                Filter           = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.Lib, FileExtensionEnum.Lib.GetDescription()),
                InitialDirectory = Busi.Common.Configuration.FolderSpecLib
            };

            if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            this._lib = new SpecBase(myOpenFileDialog.FileName);
            ToolTip tip = new ToolTip();

            tip.SetToolTip(this.btnLoadSpec, myOpenFileDialog.FileName);
            this.clear();
        }
Exemple #21
0
        private void btnAddFromLib_Click(object sender, EventArgs e)
        {
            OpenFileDialog myOpenFileDialog = new OpenFileDialog()
            {
                Filter           = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.Lib, FileExtensionEnum.Lib.GetDescription()),
                InitialDirectory = Busi.Common.Configuration.FolderSpecLib
            };

            if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            try
            {
                var lib  = new SpecBase(myOpenFileDialog.FileName);
                var sfrm = new RIPP.NIR.Controls.FrmChooseSpecs();
                if (sfrm.ShowData(lib) == System.Windows.Forms.DialogResult.OK)
                {
                    var lst = sfrm.SelectSpecs;
                    if (lst != null && lst.Count > 1)
                    {
                        _s1 = lst[0];
                        _s2 = lst[1];
                        if (lst.Count > 2 && this._model.SubModels.Count > 2)
                        {
                            _s3 = lst[2];
                        }
                        else
                        {
                            _s3 = null;
                        }
                        btnSpec1.Enabled = false;
                        btnSpec2.Enabled = false;
                        btnSpec3.Enabled = false;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
            this.reModelEnable();
        }
Exemple #22
0
        private void btnLoadLib_Click(object sender, EventArgs e)
        {
            this.Clear();
            OpenFileDialog myOpenFileDialog = new OpenFileDialog()
            {
                Filter           = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.Lib, FileExtensionEnum.Lib.GetDescription()),
                InitialDirectory = Busi.Common.Configuration.FolderSpecLib
            };

            if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            try
            {
                this._lib            = new SpecBase(myOpenFileDialog.FileName);
                this.lblLibPath.Text = this._lib.FullPath;
            }
            catch { }
        }
Exemple #23
0
        private bool ismix(PLSModel model, SpecBase lib)
        {
            bool tag = true;

            if (model == null || lib == null)
            {
                return(false);
            }
            foreach (var m in model.SubModels)
            {
                if (m.Method == PLSMethodEnum.PLS1)
                {
                    tag = false;
                }
                if (lib.Specs.Where(d => d.Name == m.Comp.Name).Count() == 0)
                {
                    tag = false;
                }
            }
            return(tag);
        }
Exemple #24
0
        /// <summary>
        /// 计算
        /// </summary>
        public void Compute(SpecBase data, bool isAll = false, UsageTypeEnum utype = UsageTypeEnum.Calibrate)
        {
            this._specsInput  = data;
            this._specsOutput = data.Clone();
            if (this._filter == null)
            {
                return;
            }

            this._statu = WorkStatu.Working;
            this.fireStatuChange();


            this._specsOutput.X = this._filter.Process(this._specsInput.X);
            if (this._filter.FType == FilterType.VarFilter)
            {
                this._specsOutput.Axis.X = this._filter.VarProcess(this._specsInput.Axis.X);
            }

            this._statu = WorkStatu.Finished;
            this.fireStatuChange();
        }
Exemple #25
0
        private void button5_Click(object sender, EventArgs e)
        {
            var specbase = new SpecBase(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\密度.Lib");

            var model = new SubPLS1Model();

            model.Comp      = specbase.First().Components.First();
            model.MaxFactor = 20;
            // var model = new IdentifyModel() { Wind = 11, MinSQ = 0.98, TQ = 0.998 };

            model.Filters = new List <IFilter>();
            model.Filters.Add(new Sgdiff(21, 2, 2));
            //model.Filters.Add(new SavitzkyGolay(5));

            var xidx = new List <RegionPoint>();

            xidx.Add(new RegionPoint(4002, 4702));
            xidx.Add(new RegionPoint(5302, 6102));
            var varregion = new VarRegionManu();
            var argu      = varregion.Argus;

            argu["XaxisRegion"].Value = xidx;
            argu["Xaxis"].Value       = specbase.First().Data.X;
            varregion.Argus           = argu;
            model.Filters.Add(varregion);

            for (int i = 0; i < 10; i++)
            {
                var      cv  = new CrossValidation <SubPLS1Result>(model);
                DateTime dt1 = DateTime.Now;
                //cv.CV(specbase, false);
                //var span1 = (DateTime.Now - dt1).TotalMilliseconds;

                dt1 = DateTime.Now;
                cv.CV(specbase, true);
                var span2 = (DateTime.Now - dt1).TotalMilliseconds;
            }
        }
Exemple #26
0
 public List <IntegrateResultItem>[] CrossValidation(SpecBase lib, bool needFilter = true, int numOfId = 5)
 {
     return(null);
 }
Exemple #27
0
 public void Train(SpecBase lib, bool needFilter = true)
 {
 }
Exemple #28
0
        // [TestMethod]
        public void PLSTest()
        {
            var specbase = new SpecBase(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\crude.Lib");
            var pls      = new PLSModel();

            pls.LibBase = specbase;


            var m = new SubPLS1Model();

            m.ParentModel = pls;
            m.MaxFactor   = 6;
            m.LibBase     = specbase;
            m.Comp        = specbase.First().Components.First();
            m.Filters     = new List <IFilter>();
            m.Filters.Add(new Sgdiff(21, 2));
            m.Filters.Add(new SavitzkyGolay(5));


            var f3 = new VarRegionManu();

            f3.Xaxis = specbase.First().Data.X;
            var a = f3.Argus;

            a["Xaxis"].Value = f3.Xaxis;
            f3.XaxisRegion   = new System.Collections.Generic.List <RegionPoint>();
            f3.XaxisRegion.Add(new RegionPoint(4003, 4702));
            a["XaxisRegion"].Value = f3.XaxisRegion;
            f3.Argus = a;

            m.Filters.Add(f3);

            m.Train(specbase);


            var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\b.mat");

            writer.WriteMatrix <double>(m.SubModel.Bias.ToColumnMatrix(), "b");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\Loads.mat");
            writer.WriteMatrix <double>(m.SubModel.Loads, "Loads");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\Score_Length.mat");
            writer.WriteMatrix <double>(m.SubModel.Score_Length.ToColumnMatrix(), "Score_Length");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\Scores.mat");
            writer.WriteMatrix <double>(m.SubModel.Scores, "Scores");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\Weights.mat");
            writer.WriteMatrix <double>(m.SubModel.Weights, "Weights");
            writer.Close();

            var lst  = m.LibBase.Where(d => d.Usage == UsageTypeEnum.Validate);
            var rlst = new List <SubPLS1Result>();

            foreach (var s in lst)
            {
                rlst.Add(m.Predict(s));
            }
        }
Exemple #29
0
        // [TestMethod]
        public void fiiting()
        {
            var specbase = new SpecBase(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\crude.Lib");

            var model = new FittingModel()
            {
                Wind = 11, MinSQ = 0.98, TQ = 0.998
            };

            // var model = new IdentifyModel() { Wind = 11, MinSQ = 0.98, TQ = 0.998 };

            model.Filters = new List <IFilter>();
            model.Filters.Add(new Sgdiff(21, 2, 2));
            model.Filters.Add(new SavitzkyGolay(5));

            var xidx = new List <RegionPoint>();

            xidx.Add(new RegionPoint(4002, 4702));
            xidx.Add(new RegionPoint(5302, 6102));
            var varregion = new VarRegionManu();
            var argu      = varregion.Argus;

            argu["XaxisRegion"].Value = xidx;
            argu["Xaxis"].Value       = specbase.First().Data.X;
            varregion.Argus           = argu;
            model.Filters.Add(varregion);

            model.Filters.Add(new NormPathLength());
            model.FiltersForIdentify = Serialize.DeepClone <IList <IFilter> >(model.Filters);


            var vspecbase = specbase.Clone();

            vspecbase.Clear();
            foreach (var s in specbase)
            {
                if (s.Usage == UsageTypeEnum.Calibrate)
                {
                    vspecbase.Add(s.Clone());
                }
            }

            var dd     = RIPP.NIR.Data.Preprocesser.Process(model.Filters, vspecbase);
            var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\filterd.mat");

            writer.WriteMatrix <double>(dd.GetX(), "filterd");
            writer.Close();


            var cv  = new CrossValidation <FittingResult>(model);
            var lst = cv.CV(specbase);

            var allTQ   = new DenseVector(specbase.Where(d => d.Usage == UsageTypeEnum.Calibrate).Count());
            var allSQ   = new DenseVector(specbase.Where(d => d.Usage == UsageTypeEnum.Calibrate).Count());
            var allRate = new DenseMatrix(5, specbase.Where(d => d.Usage == UsageTypeEnum.Calibrate).Count());

            for (int i = 0; i < lst.Count; i++)
            {
                allTQ[i] = lst[i].TQ;
                allSQ[i] = lst[i].SQ.Min();

                var ddd = lst[i].Specs.Select(d => d.Rate);
                for (int k = 0; k < 5; k++)
                {
                    if (k >= ddd.Count())
                    {
                        break;
                    }
                    allRate[k, i] = ddd.ElementAt(k);
                }
            }


            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\tq.mat");
            writer.WriteMatrix <double>(allTQ.ToColumnMatrix(), "TQ");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\sq.mat");
            writer.WriteMatrix <double>(allSQ.ToColumnMatrix(), "SQ");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\result.mat");
            writer.WriteMatrix <double>(allRate, "allRate");
            writer.Close();
        }
Exemple #30
0
        // [TestMethod]
        public void Identify()
        {
            var specbase = new SpecBase(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\crude.Lib");

            var model = new IdentifyModel()
            {
                Wind = 11, MinSQ = 0.98, TQ = 0.998
            };

            model.Filters = new List <IFilter>();
            model.Filters.Add(new Sgdiff(21, 2, 2));
            model.Filters.Add(new SavitzkyGolay(5));

            var xidx = new List <RegionPoint>();

            xidx.Add(new RegionPoint(4002, 4702));
            xidx.Add(new RegionPoint(5302, 6102));
            var varregion = new VarRegionManu();
            var argu      = varregion.Argus;

            argu["XaxisRegion"].Value = xidx;
            argu["Xaxis"].Value       = specbase.First().Data.X;
            varregion.Argus           = argu;
            model.Filters.Add(varregion);

            model.Filters.Add(new NormPathLength());


            var vspecbase = specbase.Clone();

            vspecbase.Clear();
            foreach (var s in specbase)
            {
                if (s.Usage == UsageTypeEnum.Calibrate)
                {
                    vspecbase.Add(s.Clone());
                }
            }

            var dd     = RIPP.NIR.Data.Preprocesser.Process(model.Filters, vspecbase);
            var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\id\filterd.mat");

            writer.WriteMatrix <double>(dd.GetX(), "filterd");
            writer.Close();


            var cv  = new CrossValidation <IdentifyResult>(model);
            var lst = cv.CV(specbase);

            var allTQ     = new DenseMatrix(5, specbase.Where(d => d.Usage == UsageTypeEnum.Calibrate).Count());
            var allSQ     = new DenseMatrix(5, specbase.Where(d => d.Usage == UsageTypeEnum.Calibrate).Count());
            var allResult = allSQ.Clone();

            for (int i = 0; i < lst.Count; i++)
            {
                var tq       = new DenseVector(lst[i].Items.Select(d => d.TQ).ToArray());
                var sq       = new DenseVector(lst[i].Items.Select(d => d.SQ).ToArray());
                var resulttt = new DenseVector(lst[i].Items.Select(d => Convert.ToDouble(d.Result)).ToArray());
                allTQ.SetColumn(i, tq.SubVector(0, 5));
                allSQ.SetColumn(i, sq.SubVector(0, 5));
                allResult.SetColumn(i, resulttt.SubVector(0, 5));
            }


            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\id\tq.mat");
            writer.WriteMatrix <double>(allTQ, "TQ");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\id\sq.mat");
            writer.WriteMatrix <double>(allSQ, "SQ");
            writer.Close();

            writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\id\result.mat");
            writer.WriteMatrix <double>(allResult, "result");
            writer.Close();
        }