2016-10-01 20 views
2

数え切れないほどの背景から来て、数日前に新しいプロジェクトにMatlabを使用しなければなりませんでした。Matlab行列の変数の値を割り当てます

Matlabに切り替えるのは、構文が何とかnumpyの構文に似ているためです。しかし、私が満足できる方法で「変換」できなかったことが1つあります。

私はこのような配列(または「マトリックス」イムMatlabの用語)の列に基づいて変数を割り当てることができるよnumpyので

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でこれを行うには、インデックス表記を使用して行列の各要素にアクセスすることなく、等価な方法を見つけることはできませんでした。

MatlabのPythonスニペットの2番目の部分に示すように変数を代入する方法はありますか?または明示的なインデックス表記を使用する必要がありますか?

答えて

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{:}; 
関連する問題