文章目录
- [Ubuntu 24.04 下 MATLAB R2021b 双击打开文件与 NVIDIA 显卡修复](#Ubuntu 24.04 下 MATLAB R2021b 双击打开文件与 NVIDIA 显卡修复)
Ubuntu 24.04 下 MATLAB R2021b 双击打开文件与 NVIDIA 显卡修复
右键 .m 文件时,打开方式里找不到 MATLAB;双击好不容易能开了,却只启动 MATLAB 主界面,并没有打开我点的那文件;打开 .fig 图窗时,MATLAB 还自动弹出 Resolving Low-Level Graphics Issues 这篇帮助文档。这篇文章记录这两个问题的排查和解决过程。
环境
| 项目 | 版本/型号 |
|---|---|
| 操作系统 | Ubuntu 24.04 (Noble Numbat) |
| 内核 | 6.17.0-35-generic |
| MATLAB | R2021b,安装在 /home/ouyangjiahong/MATLAB/R2021b/ |
| 显卡 | NVIDIA GeForce RTX 5060 Ti |
| 显卡驱动(修复后) | 595.71.05 |
| CUDA 版本 | 13.2 |
文件关联与双击打开
为什么右键找不到 MATLAB
MATLAB 安装后会在 ~/.local/share/applications/ 生成 matlab.desktop,但这个文件默认没有声明自己能处理哪些文件类型,所以系统不知道 .m 文件可以用 MATLAB 打开。
先给它加上 MimeType。这里要处理四种文件:.m 脚本是已有的 text/x-matlab;.mat、.fig、.mlx 在 Linux 下没有标准 MIME 类型,需要下一步自定义。
ini
[Desktop Entry]
Name=MATLAB R2021b
Comment=MATLAB R2021b
Exec=/home/ouyangjiahong/MATLAB/R2021b/bin/matlab -desktop %F
Icon=/home/ouyangjiahong/.local/share/icons/hicolor/256x256/apps/matlab.png
Terminal=false
Type=Application
Categories=Development;Math;Science;Education;
StartupNotify=true
MimeType=text/x-matlab;text/x-octave;application/x-matlab-data;application/x-matlab-figure;application/x-matlab-live-script;
自定义 MIME 类型写在 ~/.local/share/mime/packages/matlab-custom.xml:
xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-matlab-data">
<comment>MATLAB Data File</comment>
<glob pattern="*.mat"/>
<magic priority="50">
<match type="string" offset="0" value="MATLAB 5.0 MAT-file"/>
</magic>
</mime-type>
<mime-type type="application/x-matlab-figure">
<comment>MATLAB Figure</comment>
<glob pattern="*.fig"/>
<magic priority="50">
<match type="string" offset="0" value="MATLAB 5.0 MAT-file"/>
</magic>
</mime-type>
<mime-type type="application/x-matlab-live-script">
<comment>MATLAB Live Script</comment>
<glob pattern="*.mlx"/>
</mime-type>
</mime-info>
更新 MIME 和桌面数据库,并把四种类型都默认关联到 matlab.desktop:
bash
update-mime-database ~/.local/share/mime
update-desktop-database ~/.local/share/applications/
xdg-mime default matlab.desktop text/x-matlab
xdg-mime default matlab.desktop application/x-matlab-data
xdg-mime default matlab.desktop application/x-matlab-figure
xdg-mime default matlab.desktop application/x-matlab-live-script
为什么双击只启动 MATLAB,不打开文件
关联成功后,双击 .m 文件发现 MATLAB 虽然启动了,但并没有加载那个文件。因为 Exec 里的 %F 只是把文件路径传给 MATLAB 进程,MATLAB 收到路径后不会自动调用 open() 去打开它。
需要写一个 wrapper,根据后缀调用不同的 MATLAB 命令。.m 和 .mlx 用 open(),.mat 用 load(),.fig 用 openfig()。
bash
#!/bin/bash
# ~/.local/bin/matlab-open-file.sh
MATLAB_BIN="/home/ouyangjiahong/MATLAB/R2021b/bin/matlab"
if [ -z "$1" ]; then
exec "$MATLAB_BIN" -desktop
fi
file="$1"
ext="${file##*.}"
ext_lower=$(echo "$ext" | tr '[:upper:]' '[:lower:]')
file_escaped=${file//\'/\'\'}
case "$ext_lower" in
m|mlx)
cmd="open('$file_escaped')"
;;
mat)
cmd="load('$file_escaped')"
;;
fig)
cmd="openfig('$file_escaped')"
;;
*)
cmd=""
;;
esac
if [ -n "$cmd" ]; then
exec "$MATLAB_BIN" -desktop -r "$cmd"
else
exec "$MATLAB_BIN" -desktop
fi
赋权并修改 matlab.desktop 的 Exec 行:
bash
chmod +x ~/.local/bin/matlab-open-file.sh
ini
Exec=/home/ouyangjiahong/.local/bin/matlab-open-file.sh %F
改完后双击 .m 文件,MATLAB 会启动并在编辑器里打开它;双击 .fig 会显示出图窗;双击 .mat 会把变量加载进工作区。
Low-Level Graphics Issues 警告
现象与诊断
打开 .fig 文件时,MATLAB 自动弹出 Resolving Low-Level Graphics Issues 文档。这是 MATLAB 在提示当前没有正常使用显卡硬件加速。
运行 matlab -batch "opengl info",关键输出是:
text
Version: '2.1 Mesa 17.1.3'
Vendor: 'Brian Paul'
Renderer: 'Mesa X11'
Software: 'true'
HardwareSupportLevel: 'none (已知的图形驱动程序问题)'
MATLAB 在用 Mesa 软件渲染。进一步检查后发现,系统内核已经加载了 NVIDIA 595 模块,但用户态 OpenGL 库还是 Mesa 版本,libnvidia-gl-595 和 nvidia-utils-595 没有安装。内核驱动有了,OpenGL 库没跟上,MATLAB 找不到 NVIDIA 的渲染路径,只能 fallback 到软件模式。
修复
安装完整驱动:
bash
sudo apt update
sudo apt install nvidia-driver-595
然后重启电脑。
验证
重启后 nvidia-smi 能正常识别显卡:
text
NVIDIA-SMI 595.71.05 Driver Version: 595.71.05 CUDA Version: 13.2
GPU: NVIDIA GeForce RTX 5060 Ti
再看 MATLAB 的 OpenGL 信息:
text
Version: '4.6.0 NVIDIA 595.71.05'
Vendor: 'NVIDIA Corporation'
Renderer: 'NVIDIA GeForce RTX 5060 Ti/PCIe/SSE2'
Software: 'false'
HardwareSupportLevel: 'full'
Software 变成 false,HardwareSupportLevel 变成 full,说明硬件加速已经生效。之后再打开 .fig 文件,那篇 Low-Level Graphics Issues 文档不再弹出。
小结
这篇文章解决了两个相互独立但都会打断日常使用的问题:一个是 Linux 桌面环境和 MATLAB 之间的文件关联没打通,需要补 .desktop 的 MimeType、自定义 MIME、再加一个 wrapper 脚本让双击真正加载文件;另一个是 NVIDIA 驱动用户态库缺失导致 MATLAB 只能软件渲染,补装 nvidia-driver-595 并重启后恢复正常。