Diferencia entre revisiones de «Matriz2fortran.sed»
De FJWiki
Línea 8: | Línea 8: | ||
1 i = reshape((/ \& | 1 i = reshape((/ \& | ||
s/[0-9.][0-9.]*/&d0/g | s/[0-9.][0-9.]*/&d0/g | ||
− | s/ | + | s/d0[eEdD]\([-+]\?[0-9]*\)d0/d\1/g |
s/\t/,/g | s/\t/,/g | ||
$! s/^.*$/\t&, \&/g | $! s/^.*$/\t&, \&/g | ||
Línea 22: | Línea 22: | ||
Ejemplo usando [[math2matriz.sed]]: | Ejemplo usando [[math2matriz.sed]]: | ||
− | $ echo "{{1.5, | + | $ echo "{{1.5,2E-5},{3e4,4}}" | sed -f math2matriz.sed | sed -f matriz2fortran.sed |
= reshape((/ & | = reshape((/ & | ||
− | 1.5d0, | + | 1.5d0,2d-5, & |
− | + | 3d4,4d0/), & | |
(/n, n/) ) | (/n, n/) ) | ||
Revisión del 21:04 24 abr 2008
Script sed para transformar una matriz texto separada por tabulaciones a una expresión de creación de matriz en fortran, sólo hay que reemplazar al final las dimensiones. Devuelve los números con "d0" para expresar doble precisión.
matriz2fortran.sed
#Convierte una matriz por tabs en formato para mathematica 1 i = reshape((/ \& s/[0-9.][0-9.]*/&d0/g s/d0[eEdD]\([-+]\?[0-9]*\)d0/d\1/g s/\t/,/g $! s/^.*$/\t&, \&/g $ { s/^.*$/\t&\/), \&/g a\ (/n, n/) ) }
Ejemplo
Ejemplo usando math2matriz.sed:
$ echo "{{1.5,2E-5},{3e4,4}}" | sed -f math2matriz.sed | sed -f matriz2fortran.sed = reshape((/ & 1.5d0,2d-5, & 3d4,4d0/), & (/n, n/) )