2016-10-01 5 views
2

Исходя из многократного фона, мне пришлось использовать 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 в Matlab, или мне нужно использовать явную индексацию?

ответ

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{:}; 
Смежные вопросы