一个MATLAB的Juyter内核。
项目描述
此内核需要Python 3.5+的Jupyter,以及Python的MATLAB引擎 R2016b+(此版本提供了一个更好的完成API),需要先安装。请注意,此外,引擎不支持的Python版本同样不支持此内核。
安装
如往常一样,使用pip安装
$ pip install imatlab # from PyPI
$ pip install git+https://github.com/imatlab/imatlab # from Github
然后,使用以下命令注册kernelspec
$ python -mimatlab install
在没有管理员权限的情况下,应将这些命令的所有命令中添加--user标志。
使用
# Notebook (in the notebook interface, select Matlab from the 'New' menu):
$ jupyter notebook
# or QtConsole:
$ jupyter qtconsole --kernel imatlab
# or terminal:
$ jupyter console --kernel imatlab
内联图形
MATLAB图形可以在原生的MATLAB窗口中显示(默认),或者(当使用笔记本时)作为内联图像。内核可以原生地显示静态图像,或者使用Plotly生成交互式的JavaScript图形。
通过调用imatlab_export_fig函数设置导出器,该函数在内核运行时自动添加到MATLAB路径。以下是一些可能的设置
imatlab_export_fig('') % Native windows.
imatlab_export_fig('fig2plotly') % Plotly figures.
imatlab_export_fig('print-png') % Static png figures.
imatlab_export_fig('print-svg') % Static svg figures.
imatlab_export_fig('print-jpeg') % Static jpeg figures.
必须在第一个图形显示之前发出此调用。请注意,非原生导出器将调用set(0, 'defaultfigurevisible', 'off')以防止窗口短暂显示,而使用原生窗口将默认图形可见性恢复为'on'。
Plotly导出器
要在笔记本中使用Plotly内联图形,必须安装Plotly MATLAB API (>=2.2.7),如下所示
克隆 plotly/MATLAB-Online 或将其作为 zip 文件 下载。
使用 addpath(genpath(<Plotly MATLAB API path>)); 递归地将提取的结果文件夹添加到 MATLAB 搜索路径中。可以将这样的调用放入您的 startup.m 文件中,或者调用 savepath; 来保存路径。
在 MATLAB 中,复制所需的 JavaScript 文件并初始化凭据
getplotlyoffline(
'https://cdn.plot.ly/plotly-latest.min.js'); try, signin; catch, saveplotlycredentials('',''); end;(如果您的 MATLAB 版本使用旧的 OpenSSL,您可能需要使用 HTTP 而不是 HTTPS。)
在每个笔记本的开头,您可以调用 imatlab_export_fig('fig2plotly') 以自动使用 Plotly 内联图形(不需要调用 Plotly API;特别是,忽略 getplotlyoffline 的输出)。
静态导出器
静态导出器(png、svg 和 jpeg)不需要额外的依赖。
导出图形的默认大小以及是否在导出前显示图形,应使用标准图形属性设置(例如 set(0, 'defaultpaperposition', [left, bottom, width, height]); 等)。
自定义导出器
为了进一步定制,您可以重写 imatlab_export_fig 函数(默认版本由 imatlab 提供,并添加到 MATLAB 路径)。此函数在每个笔记本单元格执行后无参数调用,同时当前目录临时切换到临时文件夹;此函数应返回一个包含 .html、.png 或 .jpg/.jpeg 扩展名的文件名单元格数组。将创建相应文件,并将这些文件加载到笔记本中。
环境变量
- IMATLAB_CONNECT
如果此环境变量设置为有效的 MATLAB 标识符,内核将尝试连接到具有该名称的共享引擎。如果设置为另一个非空值,它将连接到任何现有的共享引擎。
- IMATLAB_CD
如果此环境变量已设置,则将工作目录更改为与内核的工作目录匹配。
IMATLAB_CONNECT 需要在 MATLAB 外部设置(因为它在连接到引擎之前进行检查)。其他环境变量可以在 MATLAB 外部设置(在启动内核之前)或在 MATLAB 内部设置(使用 setenv)。
异步输出
如 1, pause(1), 2 这样的结构,在 Linux 和 OSX 上将以一秒间隔输出 1 和 2,但在 Windows 上将一起在一秒后输出。欢迎提交改进 Windows 支持的 PR。
使用 timer 对象的异步输出似乎完全不受 MATLAB 引擎对 Python 的支持。
MATLAB调试器
在每次执行之前清除 MATLAB 调试器(dbclear all),因为引擎 API 不支持交互式输入。
与Calysto MATLAB内核的差异
通过依赖 MATLAB 2016b 中可用的新 API,完成系统更加健壮。
历史记录从 MATLAB 自身的 History.xml 中读取和写入,因此与标准 MATLAB 会话共享。请注意,如果文件不存在(例如,如果设置了“不保存历史文件”选项,或在仅控制台设置中),则历史记录不会重新加载到后续会话中。(欢迎提交加载 history.m 的 PR;它需要正确解析该文件中的多行输入。)
在 Linux 和 OSX 上支持同步输出(见上文)。
没有魔术系统,因为MATLAB已经提供了许多用于此目的的函数(如 cd、edit 等)。
内联图形可以基于 plotly,因此是交互式的。
测试
在安装内核和 jupyter_kernel_test 之后,使用 python -munittest 或 pytest 运行测试。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
imatlab-0.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 81674fce9b30bfd93b321a8405d2f01bd61531437de8ba3c891444cf037deb89 |
|
MD5 | 410727aec6c5dc055dfb5d05cab8ee3b |
|
BLAKE2b-256 | 0b7e8e6ff8088539bf234a548104a5d442444e9a7c883101ba4a35bf853b72c5 |