调整Java中的矩阵的大小
问题描述:
我有一个矩阵double[][]
与任意尺寸但大于300(可能在一个或可能在两个维度)。我想将它缩放到double[300][300]
。调整Java中的矩阵的大小
我的主要做法是插值矩阵,使其达到double[600][600]
,然后采取四种元素,找到它们的平均值,即元素0,0
,0,1
,1,0
和1,1
将是最终的300x300的矩阵0,0
。
我在JAVA中找到了插值库,但是我找不出如何使用它。任何人都可以提供一些例子或信息?
日Thnx。
答
如何编写一个简单的方法,将源单元格映射到目标,然后平均?
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;
}
谢谢JB Nizet。你是对的,我很抱歉,但是我对所有的搜索感到有些茫然。我刚刚编辑了这个问题,我发布了这个库。 – Xxxo
你有没有任何代码显示你迄今为止的尝试? –
@TimBiegeleisen No Tim。我想实现的这个过程只是一个更大的过程的一小部分。所以,我没有任何代码能够显示我迄今所做的工作。此外,我不问任何解决方案:)只是一个如何使用Java插值的例子。 – Xxxo