从一个笨拙的背景来看,我不得不使用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中执行此操作的等效方法,而无需使用索引表示法访问矩阵的每个元素。
是否存在执行变量赋值的等效方法,如我在Matlab中的Python片段的第二部分所示,或者我是否必须使用显式索引表示法?
答案 0 :(得分: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{:};