2015-09-02 38 views
3

传递给Matlab的功能我有我从一个Python脚本调用Matlab的功能:如何从元组的Python

import matlab.engine 

eng = matlab.engine.start_matlab() 
t = (1,2,3) 
z = eng.tstFnc(t) 
print z 

功能tstFnc如下:

function [ z ] = tstFnc(a, b, c) 
z = a + b + c 

这但是,因为Matlab只接收一个输入而不是三个输入。这可以工作吗?

注:这是我想要做一个简化的情况。在实际的问题,我具有可变数目,我进入一个Matlab函数,其在使用varargin MATLAB函数解释清单。

+1

尝试'Z = eng.tstFnc(* T)'应用参数,而不是将它们作为一个元组 – Pyrce

+0

@Pyrce的,我不能相信的工作:d谢谢! – sodiumnitrate

+0

太棒了!我将其添加为答案 – Pyrce

回答

3

作为评价笔记,参数需要被施加,而不是通过作为长度的元组1.

z = eng.tstFnc(*t)

这导致tstFnc呼叫与len(t)参数,而不是一个单一的元组参数。同样,你可以单独传递每个参数。

z = eng.tstFnc(1, 2, 3)

+0

我要补充的是'T =(2,3)'和'Z = eng.tstFnc(1,* T)'工作过,万一有人好奇。 – sodiumnitrate

+0

@sodiumnitrate - 是的,这是分裂的元组的标准Python化的方式。顺便说一句,我已经+你的问题和这个答案。 – rayryeng

+0

@rayryeng是的,好吧,我不知道:)谢谢! – sodiumnitrate