如何将函数的多个输出传递到单元数组中

9

我有一个带有以下原型的函数

function [bandwidth,density,X,Y,x,y]=kde2d(data,n,MIN_XY,MAX_XY)

基本上,该函数返回如上所示的6个输出,其中一些是矢量形式,而另一些是数值。我应该如何优雅地将函数的输出传递到一个1x6的单元数组中?
1个回答

13

怎么样?

[a{1:6}] = kde2d( data, n, MIN_XY, MAX_XY )

编辑:

考虑这个烦人的函数

def foo(n):
  if n == 1:
    return [1, ]
  elif n == 2:
    return [1, ], {'a': 2}
  elif n == 3:
    return [1, ], {'a': 2}, (3, 3, 3)
  return [1, ], {'a': 2}, (3, 3, 3), None

您可以始终将所有输出放入一个单独的元组中:

for i in range(1, 5):
  f = foo(i)
  print('got {} outputs: {}'.format(len(f), f))

而这个简单循环的输出结果将是:

got 1 outputs: [1]
got 2 outputs: ([1], {'a': 2})
got 3 outputs: ([1], {'a': 2}, (3, 3, 3))
got 4 outputs: ([1], {'a': 2}, (3, 3, 3), None)
如果您想获得特定的输出:
f = foo(2)
f[1]   # accessing the second output, {'a': 2} in this example.

如果我们不知道函数输出的数量怎么办? - M.Hossein Rahimi
1
@HosseinRahimi 我认为你可以将输出存储在一个变量中,然后查询它的 len - Shai
假设我们有一个名为 [out1, out2, out3, ...] = foo() 的函数。foo() 可以根据输入和 nargout 的不同,具有从 1 到 10 个任意数量的输出。我需要获取该函数的所有可用输出,无论输入或... - M.Hossein Rahimi
例如,使用您上面提到的方法,我们有3种可能的情况:
  1. 如果nargout == 6:我们将获得函数的前6个输出
  2. 如果nargout <6:我们会收到一个错误,指出输出参数不足
  3. 如果nargout> 6:我们将无法获得所有输出
(nargout:输出参数数量)
- M.Hossein Rahimi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接