从Matlab矩阵中分配变量值

时间:2016-10-01 15:35:48

标签: python arrays matlab numpy matrix

从一个笨拙的背景来看,我不得不使用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片段的第二部分所示,或者我是否必须使用显式索引表示法?

1 个答案:

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