コード例 #1
0
        /// <summary>
        /// 计算光谱文件的信噪比SNR
        /// </summary>
        /// <param name="filename">光谱文件</param>
        /// <param name="intStart">信号区间起始波数</param>
        /// <param name="intEnd">信号区间结束波数</param>
        /// <param name="noiseStart">噪声区间起始波数</param>
        /// <param name="noiseEnd">噪声区间结束波数</param>
        /// <returns>信噪比SNR值, 如果返回0,表示出错了</returns>
        private float calulateSNR(string filename, float intStart, float intEnd, float noiseStart, float noiseEnd, out float noiseInteValue, out float singalInteValue)
        {
            noiseInteValue = singalInteValue = 0;
            SpecFileFormat spcdata = new SpecFileFormat();

            if (spcdata.ReadFile(filename) == false)
            {
                ErrorString = spcdata.ErrorString;
                return(0);
            }

            singalInteValue = (float)SpectrumAlgorithm.Integrate(spcdata.XDatas, spcdata.YDatas, intStart, intEnd);
            if (singalInteValue == 0)
            {
                ErrorString = "光谱积分计算错误";
                return(0);
            }

            noiseInteValue = (float)SpectrumAlgorithm.CalculateRMS(spcdata.XDatas, spcdata.YDatas, noiseStart, noiseEnd);
            if (noiseInteValue == 0)
            {
                ErrorString = "光谱RMS计算错误";
                return(0);
            }

            return((float)(singalInteValue / noiseInteValue));
        }
コード例 #2
0
        /// <summary>
        /// 计算Accuracy_PeakPoints指定位置的当前光谱的峰位
        /// </summary>
        /// <param name="filename">光谱文件名</param>
        /// <returns>峰位值</returns>
        private float[] Accuracy_Calculate(string filename)
        {
            //读取SPC光谱数据
            SpecFileFormat spcData = new SpecFileFormat();

            if (spcData.ReadFile(filename) == false)
            {
                ErrorString = spcData.ErrorString;
                return(null);
            }

            float[] peakPicked = new float[SettingData.settingData.accuracy_test.peakPoint.Count];
            double  newyvalue  = 0;

            for (int i = 0; i < peakPicked.Length; i++)
            {
                //获取指定点的峰位
                peakPicked[i] = (float)SpectrumAlgorithm.PickPeak(spcData.XDatas, spcData.YDatas, SettingData.settingData.accuracy_test.peakPoint[i], 1, out newyvalue);
            }

            return(peakPicked);
        }