首页 文章

从Matlab矩阵中分配变量值

提问于
浏览
2

来自一个笨拙的背景我不得不使用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 回答

  • 2

    在MATLAB中真正做到这一点的唯一方法是使用单元数组的内容comma-separated list来"distribute"到多个变量 . 不足之处在于它要求您首先使用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{:};
    

相关问题