我在Matlab中有一个带字符串和数字数组的单元格数组。我希望单元格数组的每个条目都与数组中相应位置的数字连接起来。我认为使用cellfun
可以很容易地解决它,但我没能让它工作。
澄清一下,这是一个例子:
c = {'121' '324' '456' '453' '321'};
array = 1:5
我想得到:
c = {'1121' '2324' '3456' '4453' '5321'}
答案 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'
在您的情况下,您也可以使用cell2mat
和mat2cell
完成同样的事情:
c2 = mat2cell([int2str(array(:)) cell2mat(c.')],ones(1,length(array))).'
答案 2 :(得分:3)
另一个单行,这个没有未记录的功能(感谢@chappjc向我显示num2str
的“格式”输入:
strcat(num2str(array(:),'%-d'),c(:)).'