项目实现中遇到了一个插值问题。给我们提供的数据是一个 120*160 的矩阵,其中还有很多空值,去除空值大概也会剩下 70*70 的矩阵,所以需要采用插值函数扩大矩阵。先扩大每一行,再扩大每一列。本次采用的是线性插值,算法简单运行也快。
核心代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| using Newtonsoft.Json.Linq; private JArray ChaZhi(JArray d,double a) { JArray ret=d; double startVal = double.NaN; double endVal = double.NaN; int startPos = -1; int endPos = -1; for (int i = 0; i < ret.Count(); i++) { if ((double)ret[i]!=a) { if (startPos==-1) { startPos = i;startVal = (double)ret[i]; } else { endPos = i;endVal = (double)ret[i]; double inc=(endVal-startVal)/(endPos-startPos); for (int j = startPos+1; j < endPos; j++) { ret[j] = startVal + (j - startPos) * inc; } startPos = i; startVal = (double)ret[i]; } } } return ret; }
|