"exists_or_mkdir" 在 Google Colab 中对 *.m (Matlab) 文件使用 Oct2Py 后未定义
"exists_or_mkdir" undefined after using Oct2Py on *.m (Matlab) file in Google Colab
我一直在努力弄清楚如何在 Google Colab 中 运行 Matlab 文件。
我已将 Octave (apt install Octave
) 安装到我的 Colab 中。但是尝试使用 !octave -W make_video.m
运行 我的 .m
文件然后返回
parse error near line 91 of file /content/drive/testing/catdeform/code/util/figure_code/make_video.m
nested functions not implemented in this context
>>> function [shape] = load_shape(res_dir, anchor_coords, anchors)
^
error: source: error sourcing file '/content/drive/testing/catdeform/code/util/figure_code/make_video.m'make_video.m'
然后我做了!pip3 install oct2py
并进入 .m
文件所在的目录并执行:
from oct2py import Oct2Py
oc = Oct2Py
oc.make_video
得到输出"make_video" Octave function
然后我又做了!octave -W make_video.m
得到了:
error: 'exists_or_mkdir' undefined near line 51 column 1
error: called from
make_video at line 51 column 1
我可能做错了什么?也许有比尝试在 Google Colab 中对 运行ning matlab 文件使用 Octave/oct2py 更好的方法?
这里有几件事要说,但让我们从显而易见的开始。
应该是
oc = Oct2Py()
没有
oc = Oct2Py
第一个创建一个 Oct2Py 实例(这显然是你想要的),第二个只是为 Oct2Py class 定义创建一个别名。
请注意,oct2py 包提供了一个已经实例化的单例实例供您使用,oct2py.octave
。所以你可以简单地做:
from oct2py import octave
octave.make_video
话虽如此,让我们解决一些其他问题。
Oct2Py 没有 运行“matlab”脚本。它 运行 的“八度”脚本。这不是一个微不足道的问题。虽然两者之间有很大的重叠,但它们并不是 100% 兼容的。如果您想确保您的 'matlab' 脚本与 'octave' 兼容,请先尝试 运行 在本地 Octave 安装上安装它。
举例说明:您得到的错误是八度错误,而不是 Colab 错误。在 matlab 允许的所有上下文中,早期版本的 Octave 没有完全支持嵌套函数。因此你得到了这个错误。显然,这在最新的 Octave 版本 6.1.0 中应该不再是一个问题。但是,您的 'kernel' 可能依赖于较旧的八度音阶。是否可以通过某种方式将 Colab 指向 Octave 6.1.0 kernel/instance?
我一直在努力弄清楚如何在 Google Colab 中 运行 Matlab 文件。
我已将 Octave (apt install Octave
) 安装到我的 Colab 中。但是尝试使用 !octave -W make_video.m
运行 我的 .m
文件然后返回
parse error near line 91 of file /content/drive/testing/catdeform/code/util/figure_code/make_video.m
nested functions not implemented in this context
>>> function [shape] = load_shape(res_dir, anchor_coords, anchors)
^
error: source: error sourcing file '/content/drive/testing/catdeform/code/util/figure_code/make_video.m'make_video.m'
然后我做了!pip3 install oct2py
并进入 .m
文件所在的目录并执行:
from oct2py import Oct2Py
oc = Oct2Py
oc.make_video
得到输出"make_video" Octave function
然后我又做了!octave -W make_video.m
得到了:
error: 'exists_or_mkdir' undefined near line 51 column 1
error: called from
make_video at line 51 column 1
我可能做错了什么?也许有比尝试在 Google Colab 中对 运行ning matlab 文件使用 Octave/oct2py 更好的方法?
这里有几件事要说,但让我们从显而易见的开始。
应该是
oc = Oct2Py()
没有
oc = Oct2Py
第一个创建一个 Oct2Py 实例(这显然是你想要的),第二个只是为 Oct2Py class 定义创建一个别名。
请注意,oct2py 包提供了一个已经实例化的单例实例供您使用,oct2py.octave
。所以你可以简单地做:
from oct2py import octave
octave.make_video
话虽如此,让我们解决一些其他问题。
Oct2Py 没有 运行“matlab”脚本。它 运行 的“八度”脚本。这不是一个微不足道的问题。虽然两者之间有很大的重叠,但它们并不是 100% 兼容的。如果您想确保您的 'matlab' 脚本与 'octave' 兼容,请先尝试 运行 在本地 Octave 安装上安装它。
举例说明:您得到的错误是八度错误,而不是 Colab 错误。在 matlab 允许的所有上下文中,早期版本的 Octave 没有完全支持嵌套函数。因此你得到了这个错误。显然,这在最新的 Octave 版本 6.1.0 中应该不再是一个问题。但是,您的 'kernel' 可能依赖于较旧的八度音阶。是否可以通过某种方式将 Colab 指向 Octave 6.1.0 kernel/instance?