[運算] fft坐標軸 or 取點 問題

看板MATLAB作者 (Jong)時間11年前 (2014/09/17 12:16), 11年前編輯推噓4(405)
留言9則, 2人參與, 最新討論串1/1
大家好我有一個關於Fourier transform函數變數不同時作fft的問題想請教大家 : 一般來說Fourier transform 為 A(fx,fy) = integral{ U(x,y) exp(-j2π[xfx+yfy]) dxdy } 這個轉換可以直接給定input U(x,y)並對其作fft而完成 在這邊我假設對input U作fft後的值為A 也就是說A=fftn(U) 但我現在遇到一個問題 若我作的轉換為 A(u,v) = integral{ U(x,y) exp(-j2π[xu+yv]) dxdy } 而其中 u=const‧fx v=cos(phi)‧fy - const 而我一樣只能用fft函數去求出A(u,v)裡頭每一個值 也就是說仍然和A(fx,fy)時一樣為A'=A=fftn(U) 在數學上他們兩者的差別在於座標軸上點與點之間的距離不同了 可是在matlab透過fft去作運算時並沒辦法看到此項不同 想請問各位前輩和高手如何實現這個部分? Thanks in advance! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.46.212 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1410927363.A.E8D.html

09/17 12:22, , 1F
你的A是矩陣還是函數
09/17 12:22, 1F

09/17 12:34, , 2F
矩陣
09/17 12:34, 2F

09/17 12:36, , 3F
數學上為函數 但用matlab做fft時是輸入矩陣U得到矩陣A
09/17 12:36, 3F

09/17 15:52, , 4F
矩陣腳標與座標點的關係要自己選擇,畢竟你只能代有限個點
09/17 15:52, 4F

09/17 15:53, , 5F
所以A'的定義是什麼?
09/17 15:53, 5F
抱歉可能我表達沒有很清楚 A(fx,fy) 和 A(u,v) 為在數學上各自對 U(x,y) 作 Foureir transform 的結果 但在matlab中使用函數fft時的結果會是一樣的 因為都是對U做fft 而 fft(U) 算出來的值都是一樣 我直接說我現在在算的東西 我目前是利用fft(U)算出下式A(u,v)矩陣的各個值 A(u,v) = integral{ U(x,y) exp(-j2π[xu+yv]) dxdy } 但其實我要的是A(fx,fy)的分布 他們之間的差別在於有個坐標的轉換 從上面我舉例的關係式可以發現(為求說明方便 只看X方向) fx=u/const1; 比如u=10,const取0.5,則fx=20 如果我的想法沒錯 這個關係的意義在於 若A(u,v)算出來是一個5x5的矩陣 (這大小和U(x,y)有關) 則其中 u 軸上每一個點與每一個點的距離為十個單位長 換句話說當我作fft(U)得到一個矩陣5x5的矩陣A時 他每一點與每一點之間的長度為10 又因為這在電腦中看不出來 所以我直接認定點距就是10 (原因等下就會看到) 但是如果要轉換到目標作標(fx,fy)上 那就要考慮剛剛那幾行關係式 也就是說現在在 fx 軸上點與點之間長度為20, 這邊再用以下示意圖來解釋 u: *@#$%‧‧‧‧ 原本五個彼此相距為10的點只要五個點就可以表示完成  fx: *‧@‧#‧$‧% 轉換座標後五個相距為20的點就需要九個點才能完整表示 也就是說現在要把這五個值"等效"的均勻轉換分布到那九個點上 那就會發現fx座標上還有四個空白的‧點沒有值 所以必須用內差的方式補上 而這就是我遇到的問題 不知道該用什麼程式碼來完成 我的簡易想法是 把轉換前(u)算出來的值均勻分布到座標轉換後(fx)的某些點上 u為一1x5 matrix 而fx為一1x9 matrix [5 6 1 7 3] [5 _ 6 _ 1 _ 7 _ 3] 像是這樣 再把 _ 的部分利用內插法補滿 則 fx = [ 5 5.5 6 3.5 1 4 7 5 3] 差不多像這樣 但因為要做的是大量的不統一size的矩陣轉換且數字也非規則排列 除了想問問看上述此方法該怎麼以通式完成外 也想問問看有沒有前輩遇到類似問題而有更聰明更簡便的解法? Thanks again! ※ 編輯: hwwwh (140.113.180.175), 09/17/2014 16:59:04

09/17 18:15, , 6F
為什麼不直算在fx fy座標系上算?
09/17 18:15, 6F

09/17 19:56, , 7F
因為使用fft函數直接算就會是在u,v座標上 所以才需轉換
09/17 19:56, 7F

09/17 19:56, , 8F
還是我有哪裡搞錯了嗎
09/17 19:56, 8F
現在是只有一條式子 A(u,v) = integral{ U(x,y) exp(-j2π[xu+yv]) dxdy } 其中 u=const‧fx v=cos(phi)‧fy - const 而我想要找的為A(fx,fy) 請問這樣有辦法直接求嗎 我判斷是無法但有可能我錯了 如果可以的話請指教! ※ 編輯: hwwwh (140.113.180.175), 09/17/2014 20:01:35

09/17 22:54, , 9F
那就不要用fft自己算試試?
09/17 22:54, 9F
文章代碼(AID): #1K6Gi3wD (MATLAB)
文章代碼(AID): #1K6Gi3wD (MATLAB)