arrays - 如何在 Matlab 中使用元胞数组?

标签 arrays matlab cell

我是 Matlab 的初学者,遇到过元胞数组,但我不确定如何使用索引。

我通过执行以下操作创建了一个包含 5 行和 3 列的元胞数组:

A = cell(5,3);

现在是否可以像普通数组的嵌套 for 循环一样先按行然后按列遍历元胞数组?

    for i=1:5
        for j=1:3
           A{i,j} = {"random"} //random numbers/ string etc
        end
    end

最佳答案

对于元胞数组,您有两种索引方法,即圆括号(即(...))和大括号(即 {...}).

让我们创建一个元胞数组以用于示例:

A = {3,   9,     'a'; 
     'B', [2,4], 0};

使用括号建立索引返回单元格数组的一部分作为单元格数组。例如

A(:,3)

返回一个 2×1 元胞数组

ans =

    'a'
     0

例如,使用大括号编制索引会返回该单元格的CONTENTS

A{1,3}

返回单个字符

ans =

a

您也可以使用括号返回单个单元格,但它仍然是一个单元格。您还可以使用大括号返回多个单元格,但这些返回为 comma separated lists ,这有点高级。

当分配给一个单元格时,非常相似的概念适用。如果您使用括号进行分配,则必须分配适当大小的单元格矩阵:

A(:,1) = {1,1}

如果您使用括号分配单个值,那么您必须将它放在一个单元格中(即 A(1) = 2 会给您一个错误,因此您必须执行 A( 1) = {2})。所以最好使用大括号,因为这样你会直接影响单元格的内容。所以去是对的

A{1} = 2

这等同于 A(1) = {2}。请注意,您所做的 A{1} = {2} 不会给出错误,但它会在您的单元格中嵌套一个单元格,这不太可能是您想要的。

最后,如果您的一个单元格内有一个矩阵,则 Matlab 允许您直接索引到该矩阵,如下所示:

A{2,2}(1)

ans = 

     3

关于arrays - 如何在 Matlab 中使用元胞数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620636/

相关文章:

Java:检查数组中的下一个 "field"是否存在

c++ - 将数组传递给函数然后更改值?

c++ - 使用 C++ AMP 处理大型数组(65536+ 个元素)

MySQL加载数据到文件json数组

ios - 为什么我的原型(prototype)单元背景颜色在 iPad 模拟器上没有改变?

ios - UITableView 中不可见的标签文本

java - 通过 JDBC 将 MATLAB 连接到 Apache Derby 数据库

matlab - 在matlab中将表合并在一起

matlab - 对 Matlab 编辑器实现最大行长度限制

ios - 为新的表格 View 单元格设置暂停动画