Во-первых, я не знал, что поставить в качестве заголовка, так как вопрос не так просто сформулировать кратко.
Мне нужно свернуть матричную функцию (k) с векторной функцией (X), каждая из которых определена на R ^ 3. Мне нужно сделать это в MATLAB, поэтому, естественно, я сделаю дискретизированную версию. Я планирую представлять k и X 5- и 4-мерными массивами соответственно. Хотя это кажется немного тяжелым. Знаете ли вы, есть ли лучшие способы сделать это?
Вместо того, чтобы выполнять свертку напрямую, я перейду к пространству Фурье, fft
используя k и X, дополнив нулями, умножив их, а затем используя ifft
. Это должно дать тот же результат и работать намного, намного быстрее.
Мой вопрос здесь в том, есть ли способ легко умножить эти массивы/матрицы? т.е. есть ли способ сделать k(i,j,k,:,:)*X(i,j,k,:)
для всех i, j, k без использования трех вложенных циклов?