Mam bardzo duży stół w Mathematica ((dimcub-1)^3 elementy) pochodzący z odwrotnej FFT. Muszę użyć okresowej interpolacji w tej tabeli. Ponieważ interpolacja okresowa wymaga, aby pierwsze elementy i ostatnie elementy były równe, ręcznie tworzę nową tabelę elementów dim^3 i używam tego w mojej interpolacji. Działa, ale jest brzydki/powolny, a ze względu na mój zbyteczny stół pośredni, szybciej trafiam w barierę pamięci. Czy ktokolwiek może mi powiedzieć, jak zamienić mój stary stół w jakiś okresowy, dodając elementy lub użyć mojego nieregularnego stołu, aby wykonać funkcję okresowej interpolacji? Oto mój obecny kawałek kodu:Interparyzacja interpolacji dużego stołu Mathematica
mr 1
jest nowa tabela:
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
zajmuje znacznie mniej pamięci i działa doskonale raz usunąć starsze tabele. Każda pomoc zostanie bardzo doceniona.
Myślę, że wszyscy tęskniliśmy za faktem, że chcieliśmy, aby nowy stół był większy od starego. Zobacz moją odpowiedź: To, co utrzymywało odpowiedź Leonida, odnosi się również do twojej: ostatnie cztery linie są zbędne. –
Chciałem, aby nowy stół był większy niż poprzedni o 1 w każdym wymiarze, ponieważ jest to jedyny sposób, w jaki mogę mieć tabelę z pasującymi punktami końcowymi, aby wprowadzić ją do periodycznej interpolacji listy. Jeśli istnieje sposób na dokonanie okresowej interpolacji bez tego pośredniego kroku, wolałbym go użyć. – Hsn
Czy mógłbyś zmodyfikować swoje rozwiązanie tak, aby okresowe było tylko 2. i 3. wymiary, a nie 1.? [w moim przypadku ostatnie 2 wymiary są współrzędnymi przestrzennymi, a pierwszym jest czas] – Valerio