У меня проблемы с выполнением 2D быстрых преобразований Фурье на трехмерном массиве.Они имеют математическую природу и «понимание питона / numpy».
РЕДАКТИРОВАТЬ: Для пояснения, основные вопросы: Как numpy.fft работает с замаскированными массивами?Могу ли я усреднить по оси, а затем выполнить fft и получить тот же результат, что и при выполнении fft, а затем усреднить по осям, которые не были задействованы в fft?
Массив состоит из значения потока двуокиси углерода (в «единицах») между атмосферой и океаном для каждого градуса широты и долготы (в определенной области).Форма массива (730, 50, 182) соответствует (время, широта, долгота).Значения земель маскируются с использованием:
import numpy as np
from numpy import ma
carbon_flux = ma.masked_values(carbon_flux, 1e+20)
Я хотел бы показать логарифм дисперсии двумерного преобразования Фурье для carbon_flux, усредненного по долготе.Я усредняю массив по последней оси (долготе), а затем выполняю преобразование Фурье следующим образом:
ft_type_1 = np.log(np.abs(np.fft.fft2(ma.mean(cflux, 2)))
Это дает мне приемлемый результат.Тем не менее, мне сказали сначала выполнить усреднение:
ft_type_2 = np.log(np.mean(np.abs(np.fft.fft2(carbon_flux, axes=(0, 1))),axis=2)
Это приводит к тому, что маскированные значения используются для вычисления БПФ (я могу сказать, что первое значение БПФ порядка 10e19),
Из того, что я понимаю, результат выполнения усреднения до fft будет отличаться от выполнения усреднения после fft.Я прав в предположении или нет разницы в том, в каком порядке я выполняю эти функции?
Использует ли fft маскированные значения?Можно ли этого избежать?
Наконец, я вычислил лог двумерного преобразования Фурье для carbon_flux, усредненного по широте.Я не понимаю, как рассчитать логарифм ВАРИАНТА 2D-преобразования Фурье, усредненного по широте.Нужно ли просто возводить в квадрат значение моего результирующего изображения БПФ, чтобы получить дисперсию?
Похоже, это очень сложная серия вопросов, но любая помощь в любом отделе будет признательна.Спасибо.