8

我有一个包含以下数据的单元格:

Tom     Student
Jim     Faculty     
Clare   Student

我想要做的是在前面的另一列中添加一个序列号。

1   Tom     Student
2   Jim     Faculty     
3   Clare   Student

有人可以给一些建议吗?

4

2 回答 2

11

您已A定义为:

>> A={'Tom', 'Student'; 'Jim', 'Faculty'; 'Clare', 'Student'}

A = 

    'Tom'      'Student'
    'Jim'      'Faculty'
    'Clare'    'Student'

要添加列:

>> newCellCol = strsplit(num2str(1:size(A,1)))'

newCellCol = 

    '1'
    '2'
    '3'

>> A = [newCellCol A]

A = 

    '1'    'Tom'      'Student'
    '2'    'Jim'      'Faculty'
    '3'    'Clare'    'Student'

>> 

对于第一列中的数值数组:

>> newCellCol = mat2cell(1:size(A,1),1,ones(1,size(A,1)))';
>> A = [newCellCol A]

A = 

    [1]    'Tom'      'Student'
    [2]    'Jim'      'Faculty'
    [3]    'Clare'    'Student'

正如 Dan 所指出的,您也可以使用num2cell(1:size(A,1))'代替上述内容。mat2cell

于 2013-10-30T05:20:39.537 回答
1

不确定您的单元阵列的确切组织方式,但如果如下所示,您可以执行以下操作:

A={{'Tom', 'Student'}, ...
    {'Jim', 'Faculty'}, ...
    {'Clare', 'Student'}};


sizeA = size(A,2);

for i = 1:sizeA
    A{i} = [i, A{i}]
end

% alternatively, instead of a for loop, you can use cellfun
% A = cellfun(@(x, i)[i x], A, num2cell(1:size(A, 2)), 'UniformOutput',0)

A{1}
A{2}
A{3}

ans = 

    [1]    'Tom'    'Student'


ans = 

    [2]    'Jim'    'Faculty'


ans = 

    [3]    'Clare'    'Student'
于 2013-10-30T05:10:03.200 回答