2013-03-13 70 views
5

八度(/ MATLAB)的表示法,用於處理多個返回值矢量拆包倍頻

[a, b] = f(x) 

表明,用f(x)的返回的值是在一個排序行向量的和八度支持向量拆包(比如Python的元組拆包)。

然而,當我把

[a, b] = [1, 2] 

我得到

error: invalid number of output arguments for constant expression

是否倍頻支持向量拆包?

如果是這樣,那麼正確的符號是什麼?

我找不到文檔

+0

當賦值的右側是函數調用時,方括號('[]')的含義略有不同。你想要達到的是什麼? – 2013-03-13 18:18:15

+0

我有兩個向量(A和B),我想同時迭代。 在Python中,我會做 a,b在zip(A,B): //用a和b做一些東西 – dspyz 2013-03-13 18:37:16

回答

2

在什麼我沒有倍頻來測試,但在MATLAB你可以在「解包」電池陣列。

x = {1 2}; 
[x1,x2] = x{:} 

x1 = 
    1 
x2 = 
    2 

您可以將數值矢量轉換爲單元格數組爲x = num2cell([1 2]);

我必須補充說,這適用於從7.0版本開始的MATLAB。對於早期版本,您必須使用DEAL函數。

+0

這也適用於Octave。謝謝。 對於這樣一個普通的操作,它仍然顯得有些羅嗦 – dspyz 2013-03-13 18:19:51