關於用JAVA寫FFT的問題 |
尚未結案
|
wolfs
一般會員 發表:2 回覆:5 積分:1 註冊:2004-10-06 發送簡訊給我 |
|
warke
一般會員 發表:19 回覆:32 積分:10 註冊:2004-09-04 發送簡訊給我 |
|
warke
一般會員 發表:19 回覆:32 積分:10 註冊:2004-09-04 發送簡訊給我 |
附上補充程式碼@"@~~
public class t { public static void main (String[] arg) { double[] a = new double[]{10,10}; double[] b = new double[]{10,10}; String str = ""; str = "a = " a[0] " " a[1] "i\n"; str = "b = " b[0] " " b[1] "i\n"; for (int i = 0; i < 2; i ) a[i] = a[i] b[i]; str = "a b = " a[0] " " a[1] "i\n"; System.out.println(str); } } |
warke
一般會員 發表:19 回覆:32 積分:10 註冊:2004-09-04 發送簡訊給我 |
在上面的程式碼看懂之後,你可以嘗試用附程式的方法寫出四則運算。
public class t { public static void main (String[] arg) { double[] x = new double[]{10,10}; double[] y = new double[]{10,10}; double[] z = new double[]{0,0}; String str = ""; z = SuperMan(x,y,arg[0]); str = "x = " x[0] " " x[1] "i\n"; str = "y = " y[0] " " y[1] "i\n"; if (arg[0].equals("1")) str = "x y = "; if (arg[0].equals("2")) str = "x - y = "; if (arg[0].equals("3")) str = "x * y = "; if (arg[0].equals("4")) str = "x / y = "; str = z[0] " " z[1] "i\n"; System.out.println(str); } static double[] SuperMan(double[] a, double[] b, String tp) { double[] ans = new double[]{100,1000}; if (tp.equals("1")) { for (int i = 0; i < 2; i ) ans[i] = a[i] b[i]; } if (tp.equals("2")) { for (int i = 0; i < 2; i ) ans[i] = a[i] - b[i]; } if (tp.equals("3")) { double tmp0 = a[0] * b[0] - a[1] * b[1]; ans[1] = a[1] * b[1] a[0] * b[1]; ans[0] = tmp0; } if (tp.equals("4")) { double tmp0 = b[0] * b[0] b[1] * b[1]; double tmp1 = a[0] * b[0] a[1] * b[1]; double tmp2 = a[1] * b[0] - a[0] * b[1]; ans[0] = tmp1/tmp0; ans[1] = tmp2/tmp0; } return ans; } } |
warke
一般會員 發表:19 回覆:32 積分:10 註冊:2004-09-04 發送簡訊給我 |
我複數的運算方式是參考下面這個網址:
http://enjoy_xyy.go.nease.net/Math/Algebra/Complex.htm
|
wolfs
一般會員 發表:2 回覆:5 積分:1 註冊:2004-10-06 發送簡訊給我 |
謝謝warke的回應 我想再請問的是,我在DFT上的計算一開始也是將其分成實虛兩部分來算
不過最後算完後是否就把結果相加就好了呢?
我是想把一般的圖片透過FFT轉到頻率域上,因此目前先從DFT來著手看看
for (int u = 0; u < M; u ) for (int x = 0; x < M; x ) { Real[u] = Real[u] Gray[x]*(Math.cos(2*Math.PI*u*x/M)/M); Imaginary[u] = Imaginary[u] - Gray[x]*(Math.sin(2*Math.PI*u*x/M)/M); } for (int u = 0; u < M; u ) FFTpic[u] = (int)(255*(Real[u] Imaginary[u])) ; |
warke
一般會員 發表:19 回覆:32 積分:10 註冊:2004-09-04 發送簡訊給我 |
|
wolfs
一般會員 發表:2 回覆:5 積分:1 註冊:2004-10-06 發送簡訊給我 |
|
warke
一般會員 發表:19 回覆:32 積分:10 註冊:2004-09-04 發送簡訊給我 |
請問一下你是寫到哪邊寫不下去呢?
根據上面所說的一來小弟看不是很懂,二來他後面不是已經有附上C語言的程式碼了嗎?
或許你可以把"完整的"程式碼PO上來給大家看看。說不定大家會比較知道你哪邊寫不出來。
畢竟在您文章內容裡面您已經知道可以利用陣列來解決複數的問題。
引言: 謝謝warke的回應 我想再請問的是,我在DFT上的計算一開始也是將其分成實虛兩部分來算 不過最後算完後是否就把結果相加就好了呢? 我是想把一般的圖片透過FFT轉到頻率域上,因此目前先從DFT來著手看看 for (int u = 0; u < M; u ) for (int x = 0; x < M; x ) { Real[u] = Real[u] Gray[x]*(Math.cos(2*Math.PI*u*x/M)/M); Imaginary[u] = Imaginary[u] - Gray[x]*(Math.sin(2*Math.PI*u*x/M)/M); } for (int u = 0; u < M; u ) FFTpic[u] = (int)(255*(Real[u] Imaginary[u])) ;請問您最後面所指的相加是什麼呢? 又...您想輸出的結果是啥啊? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |