Publicado el 7 de Julio del 2017
1.786 visualizaciones desde el 7 de Julio del 2017
87,5 KB
4 paginas
Creado hace 22a (17/05/2002)
Intercambio de matrices entre LATEX y Matlab
Juan-Miguel Gracia
17 de mayo de 2002
Resumen
Con la ayuda de la función latexmat de Matlab se puede conver-
tir una matriz que se tenga en una sesión de Matlab a código LATEX.
Para hacer el cambio inverso, basta utilizar el mecanismo de “Encontrar
y Reemplazar” para transformar, en dos pasadas, los símbolos & y \\ en
blancos.
1. Matlab a LATEX
Para capturar una matriz A de una sesión de Matlab a LATEX, se utiliza la
función latexmat cuya sintaxis es la siguiente.
>> str=latexmat(A,’formato’)
donde ’formato’ puede tomar, por ejemplo, algunos de los valores
%1.2g,%3.4g,%1.2f,%d,%s;
%m.n quiere decir algo así como que los números de A sean escritos con m dígitos
en la parte entera y n dígitos en la parte decimal. Si los números de A son enteros
puede usarse el formato %d. Aunque no es preciso, se pueden ver más detalles
pidiendo ayuda en línea en Matlab sobre sprintf
>> help sprintf
1.1. Ejemplos
Ejemplo 1o
Sea la matriz A en la sesión de Matlab
A =
0.9500
0.2300
0.6000
0.4800
0.8900
0.7600
0.4500
0.1900
0.8200
La orden
>> str=latexmat(A,’%5.2g’)
responde
1
str =
\left[ \begin{array}{ccc}
0.95 &
0.23 &
0.6 &
0.48 &
0.89 &
0.76 &
0.45 \\
0.19 \\
0.82
\end{array} \right]
que podemos marcar como un bloque y capturarlo al portapapeles (^ins) para
descargarlo (shift+ins) en nuestro fichero .tex.
La orden sobre la misma matriz A
>> str=latexmat(A,’%0.2g’)
con otro formato, produce
str =
\left[ \begin{array}{ccc}
0.95 & 0.48 & 0.45 \\
0.23 & 0.89 & 0.19 \\
0.6 & 0.76 & 0.82
\end{array} \right]
Con el formato %0.2f’ resulta
>> str=latexmat(A,’%0.2f’)
str =
\left[ \begin{array}{ccc}
0.95 & 0.48 & 0.45 \\
0.23 & 0.89 & 0.19 \\
0.60 & 0.76 & 0.82
\end{array} \right]
Ejemplo 2o
>> B=[
1 2 3 4
5 6 7 8]
B =
1
5
2
6
3
7
4
8
>> str=latexmat(B,’%d’)
2
str =
\left[ \begin{array}{cccc}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8
\end{array} \right]
>> str=latexmat(B,’%g’)
str =
\left[ \begin{array}{cccc}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8
\end{array} \right]
>> str=latexmat(B,’%0.2g’)
str =
\left[ \begin{array}{cccc}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8
\end{array} \right]
>> str=latexmat(B,’%1.2g’)
str =
\left[ \begin{array}{cccc}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8
\end{array} \right]
>> str=latexmat(B,’%1.2f’)
str =
\left[ \begin{array}{cccc}
1.00 & 2.00 & 3.00 & 4.00 \\
5.00 & 6.00 & 7.00 & 8.00
\end{array} \right]
>>
3
2. LATEX a Matlab
Para llevar a una sesión de Matlab una matriz A que hemos tecleado en
nuestro fichero .tex, podemos proceder así: Capturamos la matriz A desde el
fichero .tex al portapapeles. Vamos a un editor sencillo, pero que tenga la
función “reemplazar”, como Wordpad, o el editor de ficheros .m de Matlab.
Descargamos el portapapeles en él,
A =
\left[ \begin{array}{cccc}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 2 & 2 & -6
\end{array} \right]
quitamos las palabras left, begin, array, cccc, end, right, y los símbolos \, {
y }; después con “reemplazar todo” cambiamos \\ por blanco, & por blanco.
Debemos dejar los corchetes [ y ] de apertura y cierre de una matriz en Matlab.
Es importante que el corchete de apertura [ quede en la misma línea donde
está A = , de esta manera A = [
Después salvamos este documento
A =[
1
5
9
2
6
2
3
7
2
4
8
-6
]
como fichero con formato de “Documento de texto – formato MS-DOS” y le
ponemos de extensión .m, por ejemplo matriz.m. Este fichero debe ser guardado
en una de las carpetas donde Matlab pueda encontrarlo; por ejemplo, en mi
caso en
c:\Matlab\prog\util\latex\
Finalmente, vamos a la sesión de Matlab y ejecutamos el ‘script’ matriz.m,
con lo que obtenemos
>> matriz
A =
1
5
9
2
6
2
3
7
2
4
8
-6
>>
Hemos terminado. El archivo latexmat.m ha sido descargado de la direc-
ción URL www.mum.tu-harburg.de/kellermann/matlab Puede bajarlo pinchan-
do aquí.
4
Comentarios de: Intercambio de matrices entre LATEX y Matlab (0)
No hay comentarios