//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); }
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); }
//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; }