无法通过命令行参数将数据从 Octave 传递到 python

Can't pass data from octave to python through command line arguments

我正在计算 Octave 中的 HoG 特征描述符,然后我尝试使用 Python 对这些数据进行聚类 scikit-learn。 为了在 Python 中测试我的代码,我试图将 4000x2 数据传递给 Python。 我正在使用

Octave 调用 Python 脚本

system('python filename.py data')

然后尝试使用

获取数据

sys.argv

但我得到的第二个参数是字符串 'data' 而不是我从 Octave[=36= 传递的 4000x2 数据]

我应该怎么做才能获得 Python 中的原始数据,而不仅仅是字符串 'data'

我不是 Octave 方面的专家,但答案很可能是这样的:

command=sprintf("python filename.py %s",data)
system(command)

请注意,在大多数操作系统中,命令行参数的数量是有限的。

Octave 中内置了一个 python 命令。 或者,我会另存为 .mat 文件,然后使用 scipy.io.loadmat.

在您的 python 脚本中打开它

还有 eval_py and python_cmd from the symbolic package,但我不确定这是否适合您的特定用例。最通用、与 matlab 兼容且推荐的方法是 .mat