MATLAB 中的单元格和数组的连接和索引有何不同?

Posted

技术标签:

【中文标题】MATLAB 中的单元格和数组的连接和索引有何不同?【英文标题】:How do concatenation and indexing differ for cells and arrays in MATLAB? 【发布时间】:2011-02-09 09:58:44 【问题描述】:

我对 MATLAB 中单元格和数组的使用有点困惑,想澄清几点。以下是我的观察:

    数组可以动态调整自己的内存以允许动态数量的元素,而单元格的行为方式似乎不同:

    a=[]; a=[a 1]; b=; b=b 1;
    

    可以从单元格中检索多个元素,但它们似乎不能来自数组:

    a='1' '2'; figure; plot(...); hold on; plot(...); legend(a1:2);   
    b=['1' '2']; figure; plot(...); hold on; plot(...); legend(b(1:2));
    %# b(1:2) is an array, not its elements, so it is wrong with legend.
    

这些是正确的吗?单元格和数组还有哪些不同的用法?

【问题讨论】:

【参考方案1】:

Cell arrays 可能有点棘手,因为您可以以各种方式使用 []() 语法来处理 creating、concatenating 和 @ 987654324@他们,尽管他们各自做不同的事情。解决你的两点:

    要增长元胞数组,您可以使用以下语法之一:

    b = [b 1];     % Make a cell with 1 in it, and append it to the existing
                     %   cell array b using []
    b = b: 1;    % Get the contents of the cell array as a comma-separated
                     %   list, then regroup them into a cell array along with a
                     %   new value 1
    bend+1 = 1;    % Append a new cell to the end of b using 
    b(end+1) = 1;  % Append a new cell to the end of b using ()
    

    当您使用() 索引元胞数组时,它会返回元胞数组中的一个元胞子集。当您使用 索引单元格数组时,它会返回单元格内容的comma-separated list。例如:

    b = 1 2 3 4 5;  % A 1-by-5 cell array
    c = b(2:4);       % A 1-by-3 cell array, equivalent to 2 3 4
    d = [b2:4];     % A 1-by-3 numeric array, equivalent to [2 3 4]
    

    对于d 语法将单元格 2、3 和 4 的内容提取为 comma-separated list,然后使用 [] 将这些值收集到一个数值数组中。所以b2:4等价于写b2, b3, b4,或者2, 3, 4

    对于您对legend 的调用,语法legend(a1:2) 等效于legend(a1, a2)legend('1', '2')。因此 两个 参数(两个单独的字符)被传递给legend。语法 legend(b(1:2)) 传递一个参数,它是一个 1×2 字符串 '12'

【讨论】:

【参考方案2】:

每个元胞数组都是一个数组! From this answer:

[] 是一个与数组相关的运算符。数组可以是任何类型 - 数字数组、字符数组(字符串)、结构数组或元胞数组。数组中的所有元素必须是相同的类型!

示例:[1,2,3,4]

是一种类型。想象一下,您想将不同类型的项目放入一个数组中——一个数字和一个字符串。这可以通过一个技巧来实现 - 首先将每个项目放入容器 中,然后使用这些容器创建一个数组 - 元胞数组。

示例:[1,'Hallo'] 带有速记符号1, 'Hallo'

【讨论】:

以上是关于MATLAB 中的单元格和数组的连接和索引有何不同?的主要内容,如果未能解决你的问题,请参考以下文章

具有自定义单元格和多节数组数据的 Swift UITableView

LSTM 单元和单元

UICollectionView 不同大小的单元格和项目数

可重复使用的单元格和数组的问题

matlab 单元数组是啥意思?

如何在 UITableView 中为不同的单元格和标题设置不同的随机颜色?