6.4.1 从元胞数组生成的逗号分隔列表

如前所述(参见索引元胞数组),可以使用 {} 运算符将元胞数组的元素提取为逗号分隔列表。通过用 [] 包围此列表,可以将它拼接成一个数组。例如:

a = {1, [2, 3], 4, 5, 6};
b = [a{1:4}]
     ⇒  b =
         1   2   3   4   5

类似地,也可以使用 {} 选取元胞元素来创建新的元胞数组。通过用 ‘{’ 和 ‘}’ 包围该列表,将创建一个新的元胞数组,如下例所示:

a = {1, rand(2, 2), "three"};
b = { a{ [1, 3] } }
     ⇒  b =
         {
           [1,1] =  1
           [1,2] = three
         }

此外,元胞元素(通过 {} 访问)可以直接传递给函数。来自元胞数组的元素列表将作为参数列表传递给给定函数,就好像使用各个元素作为单独的参数调用该函数一样。以下示例中对 printf 的两次调用是相同的,但后者更简洁,并且可以处理任意大小的元胞数组:

c = {"GNU", "Octave", "is", "Free", "Software"};
printf ("%s ", c{1}, c{2}, c{3}, c{4}, c{5});
     -| GNU Octave is Free Software
printf ("%s ", c{:});
     -| GNU Octave is Free Software

如果用在赋值语句的左侧,可以给用 {} 生成的逗号分隔列表赋值。示例如下:

in{1} = [10, 20, 30];
in{2} = inf;
in{3} = "last";
in{4} = "first";
out = cell (4, 1);
[out{1:3}] = in{1 : 3};
[out{4:6}] = in{[1, 2, 4]})
     ⇒  out =
        {
           [1,1] =

              10   20   30

           [2,1] = Inf
           [3,1] = last
           [4,1] =

              10   20   30

           [5,1] = Inf
           [6,1] = first
        }

版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4