推 sunev: 你的A是矩陣還是函數 09/17 12:22
→ hwwwh: 矩陣 09/17 12:34
→ hwwwh: 數學上為函數 但用matlab做fft時是輸入矩陣U得到矩陣A 09/17 12:36
推 sunev: 矩陣腳標與座標點的關係要自己選擇,畢竟你只能代有限個點 09/17 15:52
→ sunev: 所以A'的定義是什麼? 09/17 15:53
抱歉可能我表達沒有很清楚
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
推 sunev: 為什麼不直算在fx fy座標系上算? 09/17 18:15
→ hwwwh: 因為使用fft函數直接算就會是在u,v座標上 所以才需轉換 09/17 19:56
→ hwwwh: 還是我有哪裡搞錯了嗎 09/17 19:56
現在是只有一條式子
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
推 sunev: 那就不要用fft自己算試試? 09/17 22:54