在MATLAB中剥离第一层单元阵列的优雅方法?

时间:2014-11-09 12:52:58

标签: matlab cell-array

我有一个1x2单元格数组

  • a{1, 1}是包含5x1
  • [1 2 3 4 5] int数组
  • a{1, 2}是包含5x1
  • 'aa', 'bb', 'cc', 'dd', 'ee'单元格数组

剥离第一层的最优雅方法是什么,产生5x2单元格数组如下?

1 'aa'
2 'bb'
3 'cc'
4 'dd'
5 'ee'

3 个答案:

答案 0 :(得分:2)

怎么样:

% original cell
a = cell(1,2);
a{1} = [1 2 3 4 5];
a{2} = {'aa', 'bb', 'cc', 'dd', 'ee'};

% flattened
aa = reshape([num2cell(a{1}) a{2}], [], 2)

答案 1 :(得分:1)

我想出了一个解决方案,但我不确定它的“优雅”。

a = cell(1, 2);
a{1, 1} = [1, 2, 3, 4, 5];
a{1, 2} = {'aa','bb','cc','dd','ee'};

result = [num2cell(a{1, 1})' a{1, 2}']

result = 

    [1]    'aa'
    [2]    'bb'
    [3]    'cc'
    [4]    'dd'
    [5]    'ee'

答案 2 :(得分:0)

您可以尝试以下代码:

a{1, 1} = [1,2,3,4,5];
a{1, 2} = {'aa','bb','cc','dd','ee'};

temp = num2cell(a{1});
b = {temp{:};a{2}{:}}.'

b = 

    [1]    'aa'
    [2]    'bb'
    [3]    'cc'
    [4]    'dd'
    [5]    'ee'