2016-10-01 84 views
2

來自一個numpy背景,我不得不使用Matlab來開始幾天前的一個新項目。從Matlab矩陣中分配變量的值

切換到Matlab是非常直接的,因爲語法在某種程度上可以與numpy的語法相媲美。但是,有一件事我不能以令人滿意的方式「轉換」。

在numpy的我能夠基於一個陣列(或「矩陣」聊天Matlab的術語)這樣的行分配變量:

import numpy as np 

arr = np.array([1, 2, 3]) 
a, b, c = arr 
print(a, b, c) 

arr = np.array([[1, 2, 3], [11, 22, 33]]) 
for row in arr: 
    a, b, c = row 
    print(a, b, c) 

這似乎很優雅。然而,我沒有找到一種等價的方法來做到這一點,而不使用索引符號訪問矩陣的每個元素。

是否有一種等同的方式來執行變量賦值,如Matlab中我的Python代碼片段的第二部分所示,還是我必須使用顯式的索引符號?

回答

2

在MATLAB中真正做到這一點的唯一方法是使用comma-separated list將單元格數組的內容「分佈」爲多個變量。不利的一面是,它要求您首先使用諸如num2cell之類的東西將您的行(數值數組)轉換爲單元陣列。

% Create an example numeric array 
data = [1, 2, 3]; 

% Convert your data to a cell array 
data_as_cell = num2cell(data); 

% Use {:} indexing to convert the cell into a comma-separated list 
[a, b, c] = data_as_cell{:};