[Python] Matlab的fft与Numpy的fft.fft在计算二维矩阵时结果如何保持一致

首先明确一点,Numpy的fft.fft默认返回每行的结果,Matlab的fft默认返回每列的结果。

Matlab与Numpy保持一致

Python代码:

import numpy np

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.fft.fft(a)

能得到相同结果的Matlab代码:

clear
clc

a = [1 2 3;4 5 6];
b = fft(a')'  % fft(a, size(a, 2), 2)或fft(a, [], 2)也行

Numpy与Matlab保持一致

Matlab代码:

clear
clc

a = [1 2 3;4 5 6];
b = fft(a)

得到相同结果的Python代码:

import numpy np

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.fft.fft(a, axis=0)  # axis=0时对矩阵中列向量进行FFT,axis=1时对矩阵中行向量进行FFT

附注

  • 务必使原矩阵(即文中a)完全一样
  • Matlab的fft函数常用形式:fft(x)和fft(x, n, dim),后者表示在dim的维度上进行n点FFT。dim=1时对矩阵中列向量进行FFT,dim=2时对矩阵中行向量进行FFT。
  • 如若计算三维矩阵,需要注意Matlab与Numpy的索引有所区别。Matlab中三维矩阵为a(x, y, z),或者说a(行, 列, 层);Numpy中三维矩阵为a(z, x, y),或者说a(层,行,列)

你可能感兴趣的:(python,matlab,numpy,python)