【问题标题】:different calculation output from Matlab and Python for Inverse Fourier TransformMatlab 和 Python 的不同计算输出用于傅里叶逆变换
【发布时间】:2021-10-11 10:40:40
【问题描述】:

我有 Matlab 代码,我想把它翻译成 Python。 这里我有一个数组

python 数组

import numpy as np  
a =  [ 81.42663125 -5.6074337j,  -26.39236508 -2.20896985j, 0.+0.j,  0.+0.j, 0.+0.j, 81.42663125-5.6074337j, -26.39236508-2.20896985j, 0.+0.j, 0.+0.j, 0.+0.j, -41.21717133+13.27058111j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,0.+0.j]
b = np.asarray(a)
inverse = np.fft.ifft(b)

matlab数组(与python相同)

a =   [ 81.42663125 -5.6074337i;  -26.39236508; -2.20896985i; 0.+0.i;  0.+0.i; 0.+0.i; 81.42663125-5.6074337i; -26.39236508-2.20896985i; 0.+0.i; 0.+0.i; 0.+0.i; -41.21717133+13.27058111i; 0.+0.i; 0.+0.i; 0.+0.i; 0.+0.i; 0.+0.i];
inverse = ifft (x);

我尝试用numpy.fft.ifft 反转它,结果如下:

     [4.30321006-0.14763913j   5.66633932+3.89294213j  -0.79347125-5.89179416j
      6.84928702-3.05455565j   9.8032857 +2.39782633j  -2.65998456-3.6116546j
      10.67141555-4.33907798j  11.24112597+2.56947076j -2.57607321+0.82941132j
      11.85609673-4.26124876j  9.03685629+3.33776417j  -1.27864139+4.64168411j
      8.82623526-4.48145694j   5.49420633+2.5781028j   1.44185722+5.49124955j
      3.54488621-5.55845764j]

matlab 的结果是这样的

    [4.30321006250000   + 0.147639125000000i
     3.54488621443892   + 5.55845764203018i
     1.44185722459799   - 5.49124955185143i
     5.49420632611877   - 2.57810280349092i
     8.82623525708333   + 4.48145694500000i
     -1.27864138655093  - 4.64168410598597i
     9.03685628560142   - 3.33776416665201i
     11.8560967270980   + 4.26124875584204i
     -2.57607320833333  - 0.829411319166666i
     11.2411259692567   - 2.56947075987604i
     10.6714155516520   + 4.33907798310142i
     -2.65998456069909  + 3.61165460362471i
     9.80328570125000   - 2.39782632583333i
     6.84928701535530   + 3.05455564883182i
     -0.793471249351424 + 5.89179416040201i
     5.66633931998235   - 3.89294213097583i]

我尝试了另一个矩阵,结果不同。我首先尝试转置 python 数组,但没有任何好处。如何获得与matlab相同的结果?

我改变了什么:

  1. 如果您指出 python 的输出与 Matlab 的值相同但无序。
  2. 标题“Matlab 和 Python 对傅里叶逆变换的不同计算输出”

【问题讨论】:

  • 当我复制粘贴您的语句以在 MATLAB 中创建数组 a 时,我得到“连接的矩阵的维度不一致。”接下来,将ifft 应用到另一个数组x。请务必复制粘贴您实际运行的代码,否则很难为您提供帮助。
  • 当我修复您的 MATLAB 代码时,我得到的输出与您从 Python 获得的输出相同。看来您在 MATLAB 代码中做错了什么。请准确地告诉我们你做了什么。
  • 最后一件事:我可以使用 conj(fft(a)/numel(a)) 复制您的 MATLAB 输出。

标签: python matlab fft


【解决方案1】:

我刚刚检查了您的 MATLAB 数组的 ifft 的输出。我确定您的第一个和第二个元素应该是[ 81.42663125-5.6074337i; -26.39236508-2.20896985i;。这些方程的实部和虚部之间的间距以及第二个元素中的分号导致了这些问题。 编辑:

我的python结果:

这是我的 MATLAB 代码:

除非您在谈论 MATLAB 如何输出数组与 python,否则我相信您在 MATLAB 中只是有一些小错误。 Python 将输出为一维数组

【讨论】:

  • 显然这不是原因。我尝试使用不同的矩阵,结果不同
猜你喜欢
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 2017-04-19
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多