【问题标题】:How do I divide a matrix into a series of bins based on polar coordinates如何根据极坐标将矩阵划分为一系列 bin
【发布时间】:2011-04-23 13:19:33
【问题描述】:

我正在尝试在 Octave/Matlab 中编写一个程序,该程序旨在拍摄图像,对该图像执行 2D 快速傅立叶变换,然后获取 FFT 数据并将其划分为一系列箱,从中获取平均值可以计算 FFT 强度。这些 bin 需要计算该光谱的每个 5 度段的傅立叶光谱强度:

即想象一个 500x500 的数组,然后将其分成 72 个相等的切片(就像切片披萨一样),每个切片相隔 5 度。然后这些切片形成箱,并计算其中的平均值。

我知道要产生这个,我必须将得到的 FFT 的笛卡尔坐标转换为极坐标,这样我就可以使用 theta 的值来计算 bin。此外,要将阵列像披萨一样切片,极坐标必须起源于图像的中心。我有一个好主意如何做到这一点,但是一旦我完成了这个,我就被困在如何将阵列分成垃圾箱了。

有人可以帮忙吗?假设这个解释有道理?

【问题讨论】:

    标签: arrays coordinates fft bin


    【解决方案1】:

    实际上,这并不完全清楚。

    但我假设您的意思是 傅立叶域中的极坐标,在这种情况下,您可以从 atan2(f_y, f_x) 之类的位置获取每个点的角度,其中 f_yf_x 是 y和 x 傅立叶域中的坐标。使用 FFT,这些通常通过排序与数组索引相关

    f = [0, 1, 2, ..., n/2-1, -n/2, ..., -1]
    

    对于matlab,另见fftshift

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 2015-07-29
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 2013-03-25
      • 1970-01-01
      相关资源
      最近更新 更多