2015-09-02 41 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