我想創建一個函數,在保持其「形狀」的同時改變整數數組的大小。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