ELLY66
24七/102

通过Python轻松把矩阵转换成latex代码

        最近在学着使用LATEX。最让我头疼的是写矩阵了。

        要打这样一个矩阵:

 \left(\begin{array}{cccccccccccc} 4 & 1 & 1 & 6 & 2 & 2 & \frac{1}{3} & 1 & 5 & 1 & 0 & 0\\ 1 & 4 & 1 & 2 & 1 & 2 & 1 & 1 & 2 & 1 & 0 & 0\\ 1 & 1 & 4 & 2 & 2 & 3 & 1 & 2 & 1 & 2 & 0 & 0\\ \frac{1}{6} & \frac{1}{2} & \frac{1}{2} & 4 & 1 & 1 & \frac{1}{3} & 1 & 1 & 1 & 0 & 0\\ \frac{1}{2} & 1 & \frac{1}{2} & 1 & 6 & 1 & 0 & 0 & 0 & 0 & 1 & 1\\ \frac{1}{2} & \frac{1}{2} & \frac{1}{3} & 1 & 1 & 7 & 0 & 0 & 0 & 0 & 0 & 1\\ 3 & 1 & 1 & 3 & 0 & 0 & 4 & 4 & 6 & 4 & 2 & 2\\ 1 & 1 & \frac{1}{2} & 1 & 0 & 0 & \frac{1}{4} & 4 & \frac{1}{2} & 1 & 2 & 1\\ \frac{1}{5} & \frac{1}{2} & 1 & 1 & 0 & 0 & \frac{1}{6} & 2 & 4 & 4 & 2 & 2\\ 1 & 1 & \frac{1}{2} & 1 & 0 & 0 & \frac{1}{4} & 1 & \frac{1}{4} & 4 & 2 & 2\\ 0 & 0 & 0 & 0 & 1 & 0 & \frac{1}{2} & \frac{1}{2} & \frac{1}{2} & \frac{1}{2} & 7 & 1\\ 0 & 0 & 0 & 0 & 1 & 1 & \frac{1}{2} & 1 & \frac{1}{2} & \frac{1}{2} & 1 & 6 \end{array}\right)

        LATEX的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\left(\begin{array}{cccccccccccc}
4 & 1 & 1 & 6 & 2 & 2 & \frac{1}{3} & 1 & 5 & 1 & 0 & 0\\
1 & 4 & 1 & 2 & 1 & 2 & 1 & 1 & 2 & 1 & 0 & 0\\
1 & 1 & 4 & 2 & 2 & 3 & 1 & 2 & 1 & 2 & 0 & 0\\
\frac{1}{6} & \frac{1}{2} & \frac{1}{2} & 4 & 1 & 1 & \frac{1}{3} & 1 & 1 & 1 & 0 & 0\\
\frac{1}{2} & 1 & \frac{1}{2} & 1 & 6 & 1 & 0 & 0 & 0 & 0 & 1 & 1\\
\frac{1}{2} & \frac{1}{2} & \frac{1}{3} & 1 & 1 & 7 & 0 & 0 & 0 & 0 & 0 & 1\\
3 & 1 & 1 & 3 & 0 & 0 & 4 & 4 & 6 & 4 & 2 & 2\\
1 & 1 & \frac{1}{2} & 1 & 0 & 0 & \frac{1}{4} & 4 & \frac{1}{2} & 1 & 2 & 1\\
\frac{1}{5} & \frac{1}{2} & 1 & 1 & 0 & 0 & \frac{1}{6} & 2 & 4 & 4 & 2 & 2\\
1 & 1 & \frac{1}{2} & 1 & 0 & 0 & \frac{1}{4} & 1 & \frac{1}{4} & 4 & 2 & 2\\
0 & 0 & 0 & 0 & 1 & 0 & \frac{1}{2} & \frac{1}{2} & \frac{1}{2} & \frac{1}{2} & 7 & 1\\
0 & 0 & 0 & 0 & 1 & 1 & \frac{1}{2} & 1 & \frac{1}{2} & \frac{1}{2} & 1 & 6
\end{array}\right)

        当时,MATLAB已经给我了一个矩阵,但是一想到要在矩阵的相邻两个元素间加“&”符号,每行结束加“\\"符号,要把所有的分数也要改成"\frac{*}{*}"的格式。要我把它手工做完是一件不可想象的事情。

       于是,查了PYTHON的一些资料后,自己动手写了一个PYTHON的程序。

       准备工作:先把matlab生成的矩阵,粘贴到记事本中,保存为A.txt。假设其路径为C:/Study/A.txt

 

        PYTHON代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
f=open('C:/Study/A.txt','r')
content=f.read()
f.close()
for i in [3,2]:
    content=content.replace(' '*i,' ')
content=content.replace(' \n ','\\\\\n')
content=content.replace(' ',' & ')
fraction_re=re.compile(r"(?P<numerator>\d+)/(?P<denominator>\d+)")
content=fraction_re.sub(r"\\frac{\g<numerator>}{\g<denominator>}",content)
content=content[3:-3]
print(content) 
f=open('C:/Study/b.txt','w')
f.write(content)
f.close

        运行完程序后,打开b.txt。复制粘贴即可。

   

        鉴于我是初学PYTHON,所以很多函数不是很熟。写完这个程序,基本上可以了解PYTHON关于文件的读写操作,字符串的查找和替换,以及正则表达式的应用。

        不过这个程序的特殊性很强,如何能把任意一个MATLAB中的矩阵转换为LATEX代码,还需要研究一下。(请看矩阵、表格转换成latex表格通用版Python程序

原创文章,转载请注明: 转载自ELLY66

本文链接地址: 通过Python轻松把矩阵转换成latex代码

文章的脚注信息由WordPress的wp-posturl插件自动生成

Evernote lets you save all the interesting things you see online into a single place. Access all those saved pages from your computer, phone or the web. Sign up now or learn more. It's free!

 
评论 (2) 引用 (1)
  1. 这个用MathType的转成TeX的转换器就可以完成了。

  2. 呵呵,不错哦,改天我试试看


Leave a comment

(required)

Switch to our mobile site