我想创建一个函数,在保持其“形状”的同时改变整数数组的大小。Java中的数组修改(改变数组“分辨率”)
目的是加快FFT的计算。
它返回一个大小为y
的新数组,其中每个元素是它将“覆盖”在旧数组中的元素的平均值。例如,如果我有一个带有3个元素的数组w
,并且想要创建带有2个元素的另一个数组z
,则第一个元素是:z[0] = (1 * w[0] + 0.5 * w[1]) * 2/3
,第二个元素是:z[1] = (0.5 * w[1] + 1 * w[2]) * 2/3
。这有点像改变阵列的“分辨率”。 (当然,数字很小,四舍五入就有可能丢失信息,但我需要它用于几个数字无关紧要的相当大的数字。)
感觉这是一个非常简单的问题,但我花了太多时间在静脉。我确实有一些代码,尽管我几乎工作,但我认为我走错了路(太多线)。基本上,它循环遍历原始数组,并计算如何分解每个元素,并跟踪在哪里放置一个局部变量。
此外,我的搜索都出现了像动态改变数组大小等等,这不是我想要的。
所以,这里有一个可能的骨架:
public int[] the_function (int[] w, int y) {
int[] z = new int[y];
// Some code looping through the array
return z;
}
你想通过插值使数组变大,对吗?如果'y
2013-05-13 14:57:24
我们需要更多关于您正在实施的“想法”的数据。在旧数组中,“覆盖”是什么意思?根据什么规则,你决定'z [0] =(1 * w [0] + 0.5 * w [1])...''但'z [1] =(0.5 * w [1] + 1 * w [ 2])...'?为什么'w [1]'在它之前总是有'0.5 *'? – Pshemo 2013-05-13 15:01:53
请发布您尝试过的。 – 2013-05-13 15:06:58