sábado, septiembre 24, 2011

Exportar datos de Mathematica a Origin

A pesar de que Mathematica es un software de cálculo que permite generar gráficas de gran calidad, puede resultar útil exportar nuestros resultados a otro programa más intuitivo, como OriginPro. Resumimos aquí los pasos a seguir con un ejemplo sencillo.







1
. Definimos la función a exportar f(v) en Mathematica. Por ejemplo, una gaussiana:

N0 = 1;
vrms = 0.05;
f[v_] = N0/(Sqrt[2/3 Pi] vrms) Exp[-((v - 0)^2/( 2/3 vrms))];

2. Exportamos una tabla m de valores {v,f(v)} a un archivo.

m = Table[{j, f[j]}, {j, -0.4, 0.4, 0.001}];
Export[NotebookDirectory[]<>"gaussian_N_v2.txt", m]

Hemos tomado valores para v de -0.4 a 0.4 cada 0.001 y generado el archivo de nombre "gaussian_N_v2.txt" que se ha creado en el directorio en uso, el mismo donde está ubicado el archivo .nb de Mathematica. Esto se consigue concatenando Notebook[] con el nombre de archivo mediante el operador <>. Ahora, gaussian_N_v2.txt es un archivo de texto que contiene dos columnas de valores donde cada fila comienza y acaba con llaves { }.

3. Editamos el archivo para adaptarlo a un formato inteligible por Origin. Mediante el fantástico editor gratuito NotePad++, usando Buscar->Reemplazar, reemplazaremos { y } por espacios vacíos y *^ por E. Si tenemos muchos archivos para editar, podemos abrirlos simultáneamente y usar la opción Reemplazar todos los archivos abiertos. Además, pueden reemplazarse caracteres especiales como saltos de línea marcando Modo de búsqueda Extendido(\n,\r...).

4. Desde Origin, ya podemos importar nuestro archivo usando File->Import->Single ASCII o dependiendo de nuestra preferencias, mediante el Import Wizard.

Comentario a los pasos 1 y 2: Tal vez no tengamos una función simple a exportar sino muchas tablas de valores que estamos generando dentro de un bucle de n iteraciones. Podemos exportar las tablas desde dentro del bucle a la ruta NotebookDirectory[]<>"tabla_numero_" <>ToString[n]<>".txt". De este modo, al final del cálculo para n iteraciones, tendremos n archivos de texto denominados "tabla_numero_1.txt", "tabla_numero_2.txt", etc... cada uno de ellos con su tabla correspondiente. ToString[n] pasa el valor de la variable n a formato string de modo que pueda escribirse correctamente en la ruta del archivo.

Comentario al paso 3: Podríamos crear un archivo por lotes para automatizar todo el proceso de la sustitución de caracteres, aunque el propio NotePad++ permite crear Macros...

4 comentarios:

Ender el Xenocida dijo...

Autocomentario:
Exportando desde Mathematica con el argumento "Table" evitas las llaves y la coma en el archivo de datos.
Por ejemplo:
Export[NotebookDirectory[]<>"gaussian_N_v2.txt", m, "Table"]

Pily dijo...

Me ha sido de gran ayuda!! Muchas gracias!

Luciano Martínez dijo...

Excelente. Solo hay que comentar que antes de exportar los datos es necesario guardar el achivo nb.

EDWIN HERRERA dijo...

Muchas gracias, en especial a Ender el Xenocida. Me ha servido mucho.

LinkWithin

g