Обратное дискретное преобразование Фурье с вещественными функциями в вещественные

#signal-processing #fft #fftw #numerical-analysis

#обработка сигналов #БПФ #fftw #численный анализ

Вопрос:

У меня есть вывод DFT (real_to_complex) (5×8), который я хочу преобразовать обратно, используя функции 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 8×8 следующий:

  [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]
  

Ответ №1:

complex_to_real DFT предполагает комплексно сопряженную симметрию для матрицы 8 * 5.

Когда мы расширяем эту матрицу на 8-точечные ДПФ столбцов и строк, столбцы не соответствуют нечетным критериям симметрии [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.