9

次のプロトタイプの関数があります

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

基本的に、この関数は上記のように6つの出力を返します。一部はベクトル形式で、その他は数値です。関数からの出力を1行6列のセル配列にエレガントに渡すにはどうすればよいですか?

4

1 に答える 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.
于 2013-03-20T12:53:58.967 に答える