matlab中怎么调用python,python计算结果再返回matlab?

我回用输入输出到一个文本文件来实现,但这个可能读写效率有点低,特别是读(因为我真正要编写的程序要读25个数,这样在一个文本文件的25行读25个数,一行读一个数,要读25次,可能有点慢)。有没别的效率更高的方法?可以一次性把25个数从matlab传给python的。
比如另外一种方法:把参数用python命令行参数的方式传入,然后从cmdout(也就是命令行的标准输出)获取返回值。这种方法怎么实现啊?
比如实现一个简单的例子:在matlab中输入a=1;b=2;在python中执行c=a+b,d=a-b;然后把结果c,d返回给matlab中的变量c1,d1,即c1=c;d1=d;
分别在matlab和python中编写哪些语句,能够实现以上功能啊?我的软件版本python 2.5

matlab:

[status, cmdout] = system('python xxx.py 1 2')

python:

# -*- coding: utf-8 -*-
import sys
if __name__=="__main__":
        arg1 = sys.argv[1]
        arg2 = sys.argv[2]
        ret = float(arg1)+float(arg2)
        print ret

因为system的参数和cmdout都是字符串,所以要做些字符串操作。

追问

谢谢你啊!本来想直接问你的,好像直接问不到,又发了一贴。
有两问题:1)这只能返回一个数,返回两个数不行啊?就是“在python中执行c=a+b,d=a-b;返回c,d
2)system('python xxx.py 1 2'),只能把1,2放在这个函数中,不能用a=1;b=2;system('python xxx.py a b')。我真正要编写的程序中,传不同数值到python计算,函数中用变量名

追答

    返回的cmdout本质上是字符串,所以在里面放任意多的变量都是可以的。在matlab里可以用scanf解析字符串。

    system()的参数本质上也是字符串,不可能直接传变量名,可以在matlab里用sprintf将变量值转换成字符串。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网