linux 下使用 matlab 的几个小提示

MATLAB LOGO
MATLAB LOGO

嗯,对的,MATLAB 有 linux 版本的,而且 mathematica、maple 等软件都有,而且在 linux 下这些软件利用资源的效率更高。

在 linux 下安装这些软件没有太大的问题,写这篇文章的目的是记录在安装使用 matlab 时遇到的一些问题和解决的版本。

安装

大部分都是直接使用桌面版本来安装 matlab 的。所以先说说这种方法。

安装无外乎以下几步:

  1. 下载到 iso 镜像:这个不用多说,自己找资源。
  2. 挂载或者解压:挂载使用 mount 命令即可。
  3. 使用命令行安装:运行目录里面的 install 脚本后就会出来图形界面,接下来的安装过程与 windows 下的安装过程没有什么区别了。
  4. 激活:参考资源内的说明文档。

如果需要在没有桌面的 linux 中安装 matlab,则需要编辑压缩包里面的 installer_input.txtactivate.ini 这两个文件,具体的安装过程请参考这篇文章

终端使用 matlab

一般启动 MATLAB 使用如下命令:

matlab -nodesktop -nodisplay

跟启动相关的命令主要有如下几个:

  1. -nodesktop: 启动 jvm (Jave Virtual Machine),不启动 desktop, 但 help 界面,preferences 界面等仍可通过 cmdline 调出,即 jvm 启动但不启动 desktop,可以启动其他显示; 但是 matlab 不会在 cmd history 记录本次执行的命令。

  2. -nodisplay: 启动 jvm,不启动 desktop,不启动任何显示相关,忽略任何 DISPLAY 环境变量; 即 jvm 启动但不能显示。

  3. -nojvm: 不启动 jvm,则与之相关的一切活动将无法进行,包括图形界面显示,help 界面,preferences界面等,即 jvm 不启动故不能显示。

  4. -nosplash: 只是不显示启动时的log画面,jvm,desktop等正常启动

如果想在让在终端中实现画图,一般需要做以下两步:

  1. 使用 matlab -nodesktop 来启动 matlab;
  2. 在脚本中添加 figure('Visible','off'); 这样的句子来抑制画图窗口的弹出。
  3. 可以使用 print 来保存图片。例如如下的命令:
print(['pic/q01/q010',num2str(i)],'-dpng');
print(['pic/q01/q010',num2str(i)],'-depsc');

记得要提前使用 mkdir 创建好在上级目录,图片名称的次级目录如果不存在,matlab 会自动创建。

matlab 使用 gpu

matlab 里面对 gpu 的使用做了封装,如果需要使用 NVIDIA 的 gpu , 一般需要安装 Bumblebee, 然后使用 optirun 来运行。具体可以参考如下几个链接:
1.https://wiki.archlinux.org/index.php/NVIDIA_Optimus
2.https://wiki.archlinux.org/index.php/Bumblebee

matlab 里面可以通过 opengl info 来查看使用了什么 gpu。

几个常见问题

下面的几个问题常常与 matlab 自带的几个动态链接库有关。一般把这些库备份后,将系统中安装的对应包链接到 matlab 里面就可以了。具体的问题见下面的详细解释

帮助系统没有 CSS 渲染效果

字体问题常常与 libfreetype.so 这个动态链接库有关。所以解决办法无非以下几步:

sudo mv /usr/local/MATLAB/R2017b/bin/glnxa64/libfreetype.so.6 /usr/local/MATLAB/R2017b/bin/glnxa64/libfreetype.so.6.BAK # 备份
sudo ln -sf /usr/lib64/libfreetype.so.6 /usr/local/MATLAB/R2017b/bin/glnxa64/libfreetype.so.6 # 链接

libGL error for MATLAB

解决办法:

ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/MATLAB/XXXXX(R2014b)/sys/os/glnxa64/libstdc++.so.6 
# 或者执行
cd MATLAB_ROOT/sys/os/glnxa64/
sudo mv libstdc++.so.6 libstdc++.so.6.old

无法使用并行工具箱

解决办法同上,链接系统的 libstdc++.so.6 这个动态库。

matlab 无法使用系统中文字体

参考: https://bbs.archlinux.org/viewtopic.php?id=231299

cd  /usr/local/MATLAB/R2017b # Matlab directory
cd bin/glnxa64
mkdir exclude
mv libfreetype* exclude
cd ../../sys/os/glnxa64
mkdir exclude
mv libstdc++.so.6* exclude

或者跟上面的解决方法类似,备份文件后做链接。