Example #1
0
        //max
        public static SparseVector getMaxVec(SparseVector v1, SparseVector v2)
        {
            SparseVector maxVec = new SparseVector();

            SortedDictionary <int, double> .KeyCollection keys1 = v1.getKeys();
            SortedDictionary <int, double> .KeyCollection keys2 = v2.getKeys();

            foreach (int ID in keys1)
            {
                if (v2.ContainsKey(ID))
                {
                    maxVec[ID] = Math.Max(v1[ID], v2[ID]);
                }
                else
                {
                    maxVec[ID] = v1[ID];
                }
            }

            foreach (int ID in keys2)
            {
                if (!v1.ContainsKey(ID))
                {
                    maxVec[ID] = v2[ID];
                }
            }

            return(maxVec);
        }
Example #2
0
        public static SparseVector operator *(SparseVector sv1, SparseMatrix sm2)
        {
            SparseVector curVec = new SparseVector();

            SortedDictionary <int, double> .KeyCollection rowkeys = sv1.getKeys();
            foreach (int midID in rowkeys)
            {
                SparseVector rowht2 = sm2.getRow(midID);
                double       firstV = sv1[midID];
                if (rowht2 == null)
                {
                    continue;
                }
                SortedDictionary <int, double> .KeyCollection row2keys = rowht2.getKeys();
                foreach (int colID in row2keys)
                {
                    curVec[colID] = curVec[colID] + firstV * rowht2[colID];
                }
            }

            return(curVec);
        }
Example #3
0
        //max
        public static SparseVector getMaxVec(SparseVector v1, SparseVector v2)
        {
            SparseVector maxVec = new SparseVector();
            SortedDictionary<int, double>.KeyCollection keys1 = v1.getKeys();
            SortedDictionary<int, double>.KeyCollection keys2 = v2.getKeys();

            foreach (int ID in keys1)
            {
                if (v2.ContainsKey(ID))
                {
                    maxVec[ID] = Math.Max(v1[ID], v2[ID]);
                }
                else
                    maxVec[ID] = v1[ID];
            }

            foreach (int ID in keys2)
            {
                if (!v1.ContainsKey(ID))
                    maxVec[ID] = v2[ID];
            }

            return maxVec;
        }