Strcat单元阵列和数组

时间:2014-03-10 21:07:17

标签: arrays matlab cells cell-array

我在Matlab中有一个带字符串和数字数组的单元格数组。我希望单元格数组的每个条目都与数组中相应位置的数字连接起来。我认为使用cellfun可以很容易地解决它,但我没能让它工作。

澄清一下,这是一个例子:

c = {'121' '324' '456' '453' '321'};
array = 1:5

我想得到:

c = {'1121' '2324' '3456' '4453' '5321'}

3 个答案:

答案 0 :(得分:4)

直接输出到单元格数组的sprintf特殊版本称为sprintfc

>> C = sprintfc('%d%d',[array(:) str2double(c(:))]).'
C = 
    '1121'    '2324'    '3456'    '4453'    '5321'

通过保留形状,处理数组输入的方式也有所不同。

答案 1 :(得分:3)

你是对的,你可以使用cellfun - 你只需要使用num2cell将数组转换为单元格数组。假设array是整数向量:

c = {'121' '324' '456' '453' '321'};
array = 1:5;
c2 = cellfun(@(c,x)[int2str(x) c],c,num2cell(array),'UniformOutput',false)

返回

c2 = 

    '1121'    '2324'    '3456'    '4453'    '5321'

在您的情况下,您也可以使用cell2matmat2cell完成同样的事情:

c2 = mat2cell([int2str(array(:)) cell2mat(c.')],ones(1,length(array))).'

答案 2 :(得分:3)

另一个单行,这个没有未记录的功能(感谢@chappjc向我显示num2str的“格式”输入:

strcat(num2str(array(:),'%-d'),c(:)).'