0

我想使用数值数组(例如 1:7)来创建元胞数组,例如{1,2,3,4,5,6,7}. 我该怎么做?通过哪个函数?

错误的

>> {1:2}

ans = 

    [1x2 double]

正确的输出

>> {1,2}

ans = 

    [1]    [2]
4

2 回答 2

4

您可以使用

num2cell(1:7)

它将每个数字转换为输出单元格中的单个元素。

你可以用它做更多的事情;键入help num2cell以获取更多信息。

有很多替代方法,我认为最简单的方法是

arrayfun(@(x)x, 1:7, 'UniformOutput', false)

或好的旧for循环:

N = 7;

C = cell(N,1);
for ii = 1:N
    C{ii} = ii; end

尽管您听说过forMATLAB 中的循环,但它们不再那么可怕了。如果您对较大的 N 重复 Nick 的测试,您会发现它num2cell是最快的,然后是for循环,然后是arrayfun.

于 2013-09-05T14:14:48.110 回答
2

在我看来,有两种方法可以做到这一点。num2cell是迄今为止最好的方法,但我也想提一下这个arrayfun方法。

>> arrayfun(@(a)(a), 1:7, 'UniformOutput', false);


>> num2cell(1:7);
于 2013-09-05T14:17:04.957 回答