Exemple #1
0
        public CorrectionProfile(CorrectionProfile profile1, CorrectionProfile profile2)
        {
            ArrayList newList = new ArrayList();

            /* first sort the list by frequency */
            List <CorrectionProfilePoint> list1 = new List <CorrectionProfilePoint>(profile1.ProfilePoints);
            List <CorrectionProfilePoint> list2 = new List <CorrectionProfilePoint>(profile2.ProfilePoints);

            list1.Sort(delegate(CorrectionProfilePoint p1, CorrectionProfilePoint p2)
            {
                return((int)(p1.Frequency - p2.Frequency));
            });
            list2.Sort(delegate(CorrectionProfilePoint p1, CorrectionProfilePoint p2)
            {
                return((int)(p1.Frequency - p2.Frequency));
            });

            int pos1 = 0;
            int pos2 = 0;

            while ((pos1 < list1.Count) || (pos2 < list2.Count))
            {
                if (pos1 >= list1.Count)
                {
                    newList.Add(new CorrectionProfilePoint(list2[pos2].Frequency, list2[pos2].CorrectionOffset));
                    pos2++;
                }
                else if (pos2 >= list2.Count)
                {
                    newList.Add(new CorrectionProfilePoint(list1[pos1].Frequency, list1[pos1].CorrectionOffset));
                    pos1++;
                }
                else if (list1[pos1].Frequency == list2[pos2].Frequency)
                {
                    newList.Add(new CorrectionProfilePoint(list1[pos1].Frequency, (list1[pos1].CorrectionOffset + list2[pos2].CorrectionOffset) / 2));
                    pos1++;
                    pos2++;
                }
                else if (list1[pos1].Frequency < list2[pos2].Frequency)
                {
                    newList.Add(new CorrectionProfilePoint(list1[pos1].Frequency, list1[pos1].CorrectionOffset));
                    pos1++;
                }
                else if (list1[pos1].Frequency > list2[pos2].Frequency)
                {
                    newList.Add(new CorrectionProfilePoint(list2[pos2].Frequency, list2[pos2].CorrectionOffset));
                    pos2++;
                }
            }

            LinkedList <CorrectionProfilePoint> profilePoints = new LinkedList <CorrectionProfilePoint>((CorrectionProfilePoint[])newList.ToArray(typeof(CorrectionProfilePoint)));

            ProfilePoints = new LinkedList <CorrectionProfilePoint>(profilePoints);
        }
Exemple #2
0
 public AttenuationCorrection(string fileName)
 {
     Profile = new CorrectionProfile(fileName);
 }
Exemple #3
0
 public AttenuationCorrection(CorrectionProfile profile)
 {
     Profile = profile;
 }
Exemple #4
0
 public AttenuationCorrection()
 {
     Profile = new CorrectionProfile();
 }