作者hwwwh (Jong)
看板MATLAB
标题[运算] fft坐标轴 or 取点 问题
时间Wed Sep 17 12:16:00 2014
大家好我有一个关於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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1410927363.A.E8D.html
1F:推 sunev: 你的A是矩阵还是函数 09/17 12:22
2F:→ hwwwh: 矩阵 09/17 12:34
3F:→ hwwwh: 数学上为函数 但用matlab做fft时是输入矩阵U得到矩阵A 09/17 12:36
4F:推 sunev: 矩阵脚标与座标点的关系要自己选择,毕竟你只能代有限个点 09/17 15:52
5F:→ 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
6F:推 sunev: 为什麽不直算在fx fy座标系上算? 09/17 18:15
7F:→ hwwwh: 因为使用fft函数直接算就会是在u,v座标上 所以才需转换 09/17 19:56
8F:→ 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
9F:推 sunev: 那就不要用fft自己算试试? 09/17 22:54