【问题标题】:How do I import a data file as a matrix and run a .m file from a python script?如何将数据文件作为矩阵导入并从 python 脚本运行 .m 文件?
【发布时间】:2014-01-13 04:47:04
【问题描述】:

我有一个 .m 文件,用于在 matlab 中运行神经网络,该文件已本地安装在我的计算机上。我正在尝试编写一个 python 脚本,该脚本将多次循环遍历神经网络的可能传输和训练​​函数列表。我写了一个函数来打开和编辑 .m 文件,但我不知道怎么做; 1. 从 python 脚本运行 .m 文件 2. 将神经网络的必要数据作为空格分隔矩阵导入。

我有三个需要作为矩阵导入的数据文件,代码是什么样的?

【问题讨论】:

  • 请出示您的代码。
  • 如果你已经有了 Matlab,而且你确实需要它来运行测试,为什么不在 Matlab 中做循环呢?也就是说,您可能会受益于Sage interface to Matlab
  • 您可以在运行任何外部二进制文件时从 python 运行 matlab。使用 -r 标志运行脚本:matlab -nojvm -nodisplay -nodesktop -r myScript 将作为控制台启动 matlab 并运行 m 文件 myScript - 您只需要验证 myScript 是否在路径中。

标签: python matlab neural-network


【解决方案1】:

suggestion by Shai 的代码可能如下所示

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os

your_dir   = '/path/to/your/mfile'
your_mfile = 'name_of_mfile_without.m'
logfile    = '/path/to/save/matlab/standard_out.txt'
# logfile  = '/dev/null'

transfer_functions = ['func_1','func_2']

for f in transfer_functions:
    os.system(' matlab -nodesktop -nosplash -nodisplay -r  \' '
              ' addpath ' + your_dir + ' ;                    '
              your_mfile + ' ' +  f  + ' ;                    '
              ' exit                     ;                 \' '
              '  > ' + logfile                                 )

\'\' 之间的部分是 MATLAB 代码。这可以帮助您使用输入参数运行 MATLAB 代码。如果您不需要日志文件中的输出,请取消注释 logfile = '/dev/null'

【讨论】:

  • 您知道,如果稳定性是一个问题,使用 -r 运行 matlab 代码是有问题的。如果您的 matlab 脚本遇到错误,Matlab 将照常抛出,但不会返回。这意味着生成的子进程将有效地挂起。这当然可以在你的脚本中使用 try catch 来解决,但是如果你需要的话,它在生产环境中肯定不是最优的。还有其他通过二进制接口调用matlab的方法...
猜你喜欢
  • 1970-01-01
  • 2014-09-12
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多