我有一个矩阵double[][]
,其任意尺寸但大于300(可能在一个或两个维度上)。我想将其缩放到double[300][300]
。
我的主要方法是插入矩阵并将其提升到double[600][600]
,然后取四个元素并找到它们的平均值,即元素0,0
,0,1
,{{1} }和1,0
将是最终300x300矩阵的1,1
。
我在JAVA中找到了插值库,但我无法弄清楚如何使用它。任何人都可以提供一些示例或信息吗?
日Thnx。
答案 0 :(得分:1)
如何编写一个将源单元映射到目标的简单方法,然后平均出来?
public static boolean matrixReduce(double[][] dst, double[][] src) {
double dstMaxX = dst.length - 1, dstMaxY = dst[0].length - 1;
double srcMaxX = src.length - 1, srcMaxY = src[0].length - 1;
int count[][] = new int[dst.length][dst[0].length];
for (int x = 0; x < src.length; x++) {
for (int y = 0; y < src[0].length; y++) {
int xx = (int) Math.round((double) x * dstMaxX / srcMaxX);
int yy = (int) Math.round((double) y * dstMaxY / srcMaxY);
dst[xx][yy] += src[x][y];
count[xx][yy]++;
}
}
for (int x = 0; x < dst.length; x++) {
for (int y = 0; y < dst[0].length; y++) {
dst[x][y] /= count[x][y];
}
}
return true;
}