#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{:};