Tengo una tabla muy grande en Mathematica ((dimcub-1)^3 elementos) proveniente de una FFT inversa. Necesito usar la interpolación periódica en esta tabla. Como la interpolación periódica requiere que los primeros elementos y los últimos elementos sean iguales, creo una nueva tabla de dim^3 elementos manualmente y la utilizo en mi interpolación. Funciona pero es feo/lento y debido a mi mesa intermedia superflua, llegué a la barrera de la memoria antes. ¿Puede alguien decirme cómo convertir mi vieja tabla en una tabla periódica de alguna manera al agregar elementos o usar mi tabla no periódica para hacer una función de interpolación periódica? Aquí está mi pieza de código actual:Mathematica tabla grande interpolación periódica
mr 1
es la nueva tabla:
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
tiene mucha menos memoria y funciona a la perfección una vez que eliminar las tablas de más edad. Cualquier ayuda será apreciada.
Creo que todos nos perdimos el hecho de que querías que la nueva mesa fuera más grande que la anterior. Ver mi respuesta: Lo que sostuvo para la respuesta de Leonid también es válido para los suyos: las últimas cuatro líneas son superfluas. –
Quería que la nueva tabla fuera más grande que la anterior en 1 en cada dimensión, ya que es la única forma en que podría tener una tabla con puntos finales coincidentes para ingresar a la interfaz de lista periódica. Si hay una manera de hacer una interpolación periódica sin este paso intermedio, preferiría usarlo. – Hsn
¿podría modificar su solución para hacer periódicamente solo la segunda y tercera dimensiones y no la primera? [en mi caso las últimas 2 dimensiones son coordenadas espaciales y la primera es el tiempo] – Valerio