【问题标题】:Inverse Discrete Fourier Transform with Real to Real functions具有实到实函数的逆离散傅里叶变换
【发布时间】:2020-09-11 06:07:31
【问题描述】:

我有一个 DFT (real_to_complex) 输出 (5x8),我想使用 r2r(实数到实数)函数而不是 iDFT 进行逆变换,因为这些系数都是实数:

[0.000000]  [0.000000]  [0.000000]  [0.000000]  [0.000000]
[0.000000]  [-0.000039] [-5.228421] [1.999998]  [0.000000]
[0.000000]  [10.456858] [-0.000000] [-0.329559] [0.000000]
[0.000000]  [-6.000002] [0.494339]  [-0.000000] [0.000000]
[0.000000]  [0.000000]  [0.000000]  [0.000000]  [0.000000]
[0.000000]  [12.000002] [-2.471695] [2.402020]  [0.000000]
[0.000000]  [-31.370562]    [4.000000]  [-1.647797] [0.000000]
[0.000000]  [81.597977] [-15.685284]    [4.000000]  [0.000000]

问题在于对称性,X轴很好;遵循奇对称 DST-I 0,a,b,c,0,-c,-b,-a 的模式(我们看不到 -c,-b,-a 因为这是“real_to_complex”输出)。但是,Y 轴不遵循 DST 模式或 DCT-I 模式 a、b、c、d、e、d、c、b。但是我不认为它是对称的,因为系数是实数并且输出是实数,我们应该能够仅使用实数值来计算它。

iDFT 8x8 输出如下:

 [1.694307]     [1.331561]      [0.590346]      [-1.331561]  [-2.874999]     [-1.331561]     [0.590346]     [1.331561]
 [1.331561]     [1.625000]      [1.256080]      [-0.281785]  [-2.168437]     [-1.968213]     [-0.419204]     [0.624999]
 [0.590346]     [1.580797]      [2.125001]      [1.212098]   [-0.840346]     [-2.048974]     [-1.875001]     [-0.743921]
 [-1.331561]     [1.031788]     [2.951028]      [4.125000]   [2.168437]     [-1.875002]     [-3.787904]     [-3.281786]
 [-2.874999]     [-2.168437]     [-0.840346]     [2.168437]  [4.555690]     [2.168437]      [-0.840346]     [-2.168437]
 [-1.331561]     [-3.281786]     [-3.787904]     [-1.875002] [2.168437]     [4.125000]      [2.951028]      [1.031788]
 [0.590346]     [-0.743921]     [-1.875001]     [-2.048974]  [-0.840346]     [1.212098]     [2.125001]      [1.580797]
 [1.331561]     [0.624999]      [-0.419204]     [-1.968213]  [-2.168437]     [-0.281785]     [1.256080]     [1.625000]

【问题讨论】:

    标签: signal-processing fft fftw numerical-analysis


    【解决方案1】:

    complex_to_real DFT 假设 8*5 矩阵的复共轭对称。

    当我们将此矩阵扩展为列和行的 8 点 DFT 时,列不满足奇数对称标准 [0,a,b,c,0,-c,-b,-a],因此求余弦基的贡献,产生一个复数值。

    但是,当我们检查频率空间中的列时,复数值之间有些奇怪的对称性。

    在Matlab中我们定义矩阵R1如下:

    0   0   0   0   0   0   0   0
    0   -0.000039   -5.228421   1.999998    0   -1.999998   5.228421    0.000039
    0   10.456858   -0  -0.329559   0   0.329559    0   -10.456858
    0   -6.000002   0.494339    -0  0   0   -0.494339   6.000002
    0   0   0   0   0   0   0   0
    0   12.000002   -2.471695   2.40202 0   -2.40202    2.471695    -12.000002
    0   -31.370562  4   -1.647797   0   1.647797    -4  31.370562
    0   81.597977   -15.685284  4   0   -4  15.685284   -81.597977
    
    

    然后 colFFR2=ifft(R1 ) 产生输出;

    0.000000 + 0.000000i    8.335529 + 0.000000i    -2.361383 + 0.000000i   0.8030828 + 0.000000i   0.000000 + 0.000000i    -0.8030828 + 0.000000i  2.361383 + 0.000000i    -8.335529 + 0.000000i
    0.000000 + 0.000000i    6.681977 - 3.574877i    -1.673753 + 0.6864277i  0.3180193 - 0.2243077i  0.000000 + 0.000000i    -0.3180193 + 0.2243077i 1.673753 - 0.6864277i   -6.681977 + 3.574877i
    0.000000 + 0.000000i    2.614213 - 7.949751i    -0.5000000 + 0.9363536i 0.2471695 + 0.05025225i 0.000000 + 0.000000i    -0.2471695 - 0.05025225i    0.5000000 - 0.9363536i  -2.614213 + 7.949751i
    0.000000 + 0.000000i    -6.681977 - 14.03173i   1.673753 + 1.686428i    -0.3180193 - 0.5538672i 0.000000 + 0.000000i    0.3180193 + 0.5538672i  -1.673753 - 1.686428i   6.681977 + 14.03173i
    0.000000 + 0.000000i    -13.56396 + 0.000000i   3.361383 + 0.000000i    -1.297422 + 0.000000i   0.000000 + 0.000000i    1.297422 + 0.000000i    -3.361383 + 0.000000i   13.56396 + 0.000000i
    0.000000 + 0.000000i    -6.681977 + 14.03173i   1.673753 - 1.686428i    -0.3180193 + 0.5538672i 0.000000 + 0.000000i    0.3180193 - 0.5538672i  -1.673753 + 1.686428i   6.681977 - 14.03173i
    0.000000 + 0.000000i    2.614213 + 7.949751i    -0.5000000 - 0.9363536i 0.2471695 - 0.05025225i 0.000000 + 0.000000i    -0.2471695 + 0.05025225i    0.5000000 + 0.9363536i  -2.614213 - 7.949751i
    0.000000 + 0.000000i    6.681977 + 3.574877i    -1.673753 - 0.6864277i  0.3180193 + 0.2243077i  0.000000 + 0.000000i    -0.3180193 - 0.2243077i 1.673753 + 0.6864277i   -6.681977 - 3.574877i
    
    

    最后 ifft(colFFR2.', 'symmetric') 提供了匹配的 iDFT。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多