присваивать значения переменным из Matlab matrix

#python #arrays #matlab #numpy #matrix

#python #массивы #matlab #numpy #матрица

Вопрос:

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

Ответ №1:

Единственный способ действительно сделать это в MATLAB — использовать список, разделенный запятыми, для «распределения» содержимого массива ячеек по нескольким переменным. Недостатком является то, что для этого требуется, чтобы вы сначала преобразовали свою строку (числовой массив) в массив ячеек, используя что-то вроде 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{:};