Exemple #1
0
        /// <summary>
        /// Create a new simple matrix for testing.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="m11"></param>
        /// <param name="m12"></param>
        /// <param name="m21"></param>
        /// <param name="m22"></param>
        /// <returns></returns>
        private IDataSource <SparseTwinIndex <float> > CreateData(string name, float m11, float m12, float m21, float m22)
        {
            SparseIndexing indexes = new SparseIndexing()
            {
                Indexes = new[]
                {
                    new SparseSet()
                    {
                        Start    = 1,
                        Stop     = 2,
                        SubIndex = new SparseIndexing()
                        {
                            Indexes = new[] { new SparseSet()
                                              {
                                                  Start = 1, Stop = 2
                                              } }
                        }
                    }
                }
            };

            float[][] data = new[] { new[] { m11, m12 }, new[] { m21, m22 } };
            return(new MatrixSource(new SparseTwinIndex <float>(indexes, data))
            {
                Name = name
            });
        }
        private SparseIndexing RootCreateIndices()
        {
            SparseIndexing rootLevel = new SparseIndexing();

            rootLevel.Indexes = TriIndexSet.Select(range => new SparseSet()
            {
                Start = range.Start, Stop = range.Stop
            }).ToArray();
            return(rootLevel);
        }
        private int GetIndexForFlat(SparseIndexing rootLevel, int flatIndex)
        {
            var indexes = rootLevel.Indexes;
            int pos     = 0;

            for (int i = 0; i < indexes.Length; i++)
            {
                var delta = indexes[i].Stop - indexes[i].Start + 1;
                if (flatIndex <= pos + delta)
                {
                    return(i);
                }
                pos += delta;
            }
            return(-1);
        }
        public void LoadData()
        {
            float[][][]    data     = new float[TwinSources.Length][][];
            SparseIndexing indicies = RootCreateIndices();

            for (int i = 0; i < TwinSources.Length; i++)
            {
                TwinSources[i].LoadData();
                var innerData = TwinSources[i].GiveData();
                CreateIndices(indicies, i, innerData);
                data[i] = innerData.GetFlatData();
                TwinSources[i].UnloadData();
            }
            Data   = new SparseTriIndex <float>(indicies, data);
            Loaded = true;
        }
Exemple #5
0
        /// <summary>
        /// Createa a new simple vector for testing.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="m1"></param>
        /// <param name="m2"></param>
        /// <returns></returns>
        private IDataSource <SparseArray <float> > CreateData(string name, float m1, float m2)
        {
            SparseIndexing indexes = new SparseIndexing()
            {
                Indexes = new[]
                {
                    new SparseSet()
                    {
                        Start = 1,
                        Stop  = 2,
                    }
                }
            };

            float[] data = new[] { m1, m2 };
            return(new VectorSource(new SparseArray <float>(indexes, data))
            {
                Name = name
            });
        }
        public void LoadData()
        {
            float[][][]    data     = new float[TwinSources.Length][][];
            SparseIndexing indicies = RootCreateIndices();

            for (int i = 0; i < TwinSources.Length; i++)
            {
                TwinSources[i].LoadData();
                var innerData = TwinSources[i].GiveData();
                CreateIndices(indicies, i, innerData);
                var inner = innerData.GetFlatData();
                if (CreateCopy)
                {
                    inner = inner.Select(i2 => i2.Clone() as float[]).ToArray();
                }
                data[i] = inner;
                TwinSources[i].UnloadData();
            }
            Data   = new SparseTriIndex <float>(indicies, data);
            Loaded = true;
        }
 private void CreateIndices(SparseIndexing rootLevel, int i, SparseTwinIndex <float> innerData)
 {
     rootLevel.Indexes[GetIndexForFlat(rootLevel, i)].SubIndex = innerData.Indexes;
 }