У меня была очень большая таблица в Mathematica ((dimcub-1) ^ 3 элементов), полученная в результате обратного БПФ. Мне нужно использовать периодическую интерполяцию в этой таблице. Поскольку периодическая интерполяция требует, чтобы первые и последние элементы были равны, я вручную создаю новую таблицу элементов dim ^ 3 и использую ее в своей интерполяции. Это работает, но уродливо / медленно, и из-за моей лишней промежуточной таблицы я раньше сталкивался с барьером памяти. Может ли кто-нибудь сказать мне, как каким-то образом превратить мою старую таблицу в периодическую, добавляя элементы, или использовать мою непериодическую таблицу для создания функции периодической интерполяции? Вот мой текущий фрагмент кода:
mr 1
- это новая таблица:
mr1 = Table[ 0. , {i, 1, dimcub}, {j, 1, dimcub}, {k, 1, dimcub}];
Do[Do[ Do[
mr1[[m, n, k]] = oldtable[[m, n, k]] ; , {m, 1,
dimcub - 1}]; , {n, 1, dimcub - 1}]; , {k, 1, dimcub - 1}];
Do[Do[ mr1[[m, n, dimcub]] = mr1[[m, n, 1]];
mr1[[m, dimcub, n]] = mr1[[m, 1, n]];
mr1[[dimcub, m, n]] = mr1[[1, m, n]]; , {m, 1, dimcub - 1}];
mr1[[n, dimcub, dimcub]] = mr1[[n, 1, 1]];
mr1[[dimcub, n, dimcub]] = mr1[[1, n, 1]];
mr1[[dimcub, dimcub, n]] = mr1[[1, 1, n]]; , {n, 1, dimcub - 1}];
mr1[[dimcub, dimcub, dimcub]] = mr1[[1, 1, 1]];
Remove[oldtable];
myinterpolatingfunction =
ListInterpolation[mr1, {{1, dimcub}, {1, dimcub}, {1, dimcub}},
InterpolationOrder -> 1,
PeriodicInterpolation -> True];
Remove[mr1];
myinterpolatingfunction
занимает гораздо меньше памяти и отлично работает после удаления старых таблиц. Мы будем благодарны за любую помощь.