【问题标题】:How to pass tuple to a Matlab function from Python如何从 Python 将元组传递给 Matlab 函数
【发布时间】:2015-09-02 17:01:57
【问题描述】:

我有一个从 python 脚本调用的 Matlab 函数:

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 函数,这些列表在 Matlab 函数中使用 varargin 进行解释。

【问题讨论】:

  • 尝试z = eng.tstFnc(*t) 应用参数而不是将它们作为元组传递
  • @Pyrce 我不敢相信这有效:D 谢谢!
  • 太棒了!我将其添加为答案

标签: python matlab python-2.7 matlab-engine


【解决方案1】:

正如 cmets 中的注释,需要应用参数而不是作为长度为 1 的元组传递。

z = eng.tstFnc(*t)

这会导致使用len(t) 参数而不是单个元组参数调用tstFnc。同样,您可以单独传递每个参数。

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

【讨论】:

  • 我应该补充一点,t = (2,3)z = eng.tstFnc(1, *t) 也可以,以防有人好奇。
  • @sodiumnitrate - 是的,这是拆分元组的标准 Pythonic 方式。顺便说一句,我已经 +1 了你的问题和这个答案。
  • @rayryeng 是的,好的,我不知道 :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
相关资源
最近更新 更多