Как я могу получить одинаковые результаты для fft2() в MATLAB и Python?

Я перевожу код MATLAB в код Python, но получаю разные результаты от numpy fft2() и MATLAB fft2(). Разница не маленькая. Как я могу получить такой же результат?

Где S - массив (10,10,3)

В Питоне:

Normin1 = fft2(S)
print("Normin is\n",Normin1[:,:,0])

Output(Just first row):
 Normin is
[[ 1.29098039e+01+0.00000000e+00j
-8.14368936e-01-4.02146547e-01j
4.57184468e-01+4.59545965e-01j  
2.37898348e-01-1.58643666e-01j
-6.89491738e-02+1.65467814e-01j  
3.29411765e-01-1.38777878e-17j
-6.89491738e-02-1.65467814e-01j  
2.37898348e-01+1.58643666e-01j
 4.57184468e-01-4.59545965e-01j 
-8.14368936e-01+4.02146547e-01j]

Но в МАТЛАБ:

 Normin1 = fft2(S);

 Output of first row
44.27451 +  0.00000i   
-1.04275 -  3.36765i
 0.72446 -  1.92128i   
 0.02706 +  0.09694i    
0.70692 +  0.28154i   
-0.90980 +  0.00000i    
0.70692 -  0.28154i    
0.02706 -  0.09694i
0.72446 +  1.92128i   
-1.04275 +  3.36765i

Проверьте документацию обеих функций. Отличаются они, скорее всего, только коэффициентом масштабирования.

MaxPowers 24.12.2020 23:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
164
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил свою проблему. Python выполняет операции с массивами построчно. Напротив, Matlab/Octave выполняет операции с массивами по столбцам. Вот почему это должно быть следующим, чтобы получить тот же результат,

Код МАТЛАБ:

Normin1 = fft2(S);

Эквивалент Python:

Normin1 = np.fft2(S.T).T

Другие вопросы по теме