Пример #1
0
        /// <summary> 平均と標準偏差を求める </summary>
        public List <CalcValue> CalcMeanDev(InspectItem inspects, List <MeasuredValue> collectDatas)
        {
            //容器を作成
            var answers = new List <CalcValue>();

            //注目測定点名・項目が同じものを取り出し、それぞれ平均・標準偏差を求める
            foreach (var sInspection in inspects.Inspects)
            {
                foreach (var sItem in inspects.Items)
                {
                    //容器の作成
                    var answer = new CalcValue();

                    //リストから同系のものを取り出す
                    var dList = collectDatas
                                .Where(d => d.Inspect == sInspection)
                                .Where(d => d.Item == sItem)
                                .Select(d => d.Value)
                                .ToList();

                    //リストに格納
                    //測定点名・項目
                    answer.Inspect = sInspection;
                    answer.Item    = sItem;

                    var mathLibrary = new MathLibrary();

                    //平均
                    answer.MeanValue = mathLibrary.CalcMean(dList);

                    //標準偏差
                    answer.DevValue = mathLibrary.CalvDev(dList);

                    answers.Add(answer);
                }
            }

            return(answers);
        }
Пример #2
0
        private static void Main(string[] args)
        {
            //注目測定点名と注目計測名と項目が書かれたファイルのアドレス
            var csvFilePath = @"C:\Users\hayashi\Documents\Visual Studio 2015\Projects\CodeTestSpace\insepectionData\settingData.CSV";

            //特殊計算と対象が書かれたファイルのアドレス
            var csvCalcPath = @"C:\Users\hayashi\Documents\Visual Studio 2015\Projects\CodeTestSpace\insepectionData\calcSettingData.CSV";

            //処理対象のフォルダのアドレス
            var basePath = @"C:\Users\hayashi\Documents\Visual Studio 2015\Projects\CodeTestSpace\testdata\";

            //結果ファイル保存先のアドレス
            var saveDataPath = @"C:\Users\hayashi\Documents\Visual Studio 2015\Projects\CodeTestSpace\output\result.csv";

            //結果保持用
            var resultCalcMeanDev   = new List <List <CalcValue> >();
            var resultSpCalcMeanDev = new List <List <SpCalcMeanDev> >();

            //注目測定点名と注目計測名と項目をファイルから読み込む
            //例
            //ST1_SF01 (注目測定点名)
            //CubeHole1,CubeHole2 (注目計測名)
            //X Y ...等(項目)
            //注目計測名、項目は可変数
            var institem     = new InspectItem();
            var inspectItems = institem.LoadConfiguration(csvFilePath);

            //特殊計算内容をファイルから読み込む
            //例:
            //distance,CubeHole1,CubeHole2
            //特殊計算内容は可変とする
            var instSetting = new CalcSetting();
            var calcSetting = instSetting.LoadConfiguration(csvCalcPath);

            foreach (var inspectItem in inspectItems)
            {
                //指定フォルダ以下のファイルを取得する
                //注目測定点名と合致するファイルを更にコレクトする
                //コレクトしたファイルから、注目計測名と注目測定名のデータを収集する
                var instData       = new MeasuredValue();
                var measuredValues = instData.CollectInspectedValues(inspectItem, basePath);

                //各注目測定点名ごとの平均と標準偏差を求める
                var instDataMeanDev = new CalcValue();
                var calcMeanDev     = instDataMeanDev.CalcMeanDev(inspectItem, measuredValues);
                resultCalcMeanDev.Add(calcMeanDev);

                //特殊計算を求める
                var instSpCalc = new SpCalcValue();
                var spCalc     = instSpCalc.SellectSpCalc(calcSetting, measuredValues);

                //特殊計算の平均と標準偏差を求める
                var instDataSpCalcMeanDev = new SpCalcMeanDev();
                var spCalcMeanDev         = instDataSpCalcMeanDev.CalcMeanDev(calcSetting, spCalc);
                resultSpCalcMeanDev.Add(spCalcMeanDev);

                //結果をファイルに保存する
                var saveDatas = new FileUtil();
                saveDatas.SaveDatas(saveDataPath, calcMeanDev, spCalcMeanDev);
            }
        }
Пример #3
0
        /// <summary> リストの各配列をそれぞれ inspectItem に格納し、それをList<inspectItem>に格納  </summary>
        public List <InspectItem> CreateListInspection(List <string> configLines)
        {
            //容器作成
            var answers = new List <InspectItem>();

            //configLinesを NumOfLines 行ずつにまとめる
            var configSets = configLines
                             .Select((item, index) => new { item, index })
                             .GroupBy(elem => (int)(elem.index / NumOfLines), elem => elem.item)
                             .ToList();

            //dataListsの各項をそれぞれinspectItemに格納
            //inspectionItemsの値をそれぞれのリストに格納
            foreach (var configSet in configSets)
            {
                var answer       = new InspectItem();
                var insNameList  = new List <string>();
                var inspectsList = new List <string>();
                var itemsList    = new List <string>();

                for (int i = 0; i < NumOfLines; i++)
                {
                    //カンマを区切りにリスト作成
                    var result = configSet.ElementAt(i).Split(',').ToList();

                    //iの値で格納先変更
                    switch (i)
                    {
                    //InsNameListに保存
                    case 0:
                        insNameList.AddRange(result);
                        break;

                    //InspectsListに保存
                    case 1:
                        inspectsList.AddRange(result);
                        break;

                    //ItemsListに保存
                    case 2:
                        itemsList.AddRange(result);
                        break;

                    //スキップ
                    case 3:

                        break;

                    default:
                        break;
                    }
                }

                //List<inspectItem>に値を格納
                answer.InsNames = insNameList;
                answer.Inspects = inspectsList;
                answer.Items    = itemsList;
                answers.Add(answer);
            }
            return(answers);
        }