我回用输入输出到一个文本文件来实现,但这个可能读写效率有点低,特别是读(因为我真正要编写的程序要读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将变量值转换成字符串。