使用cellfun将字符串转换为num

时间:2014-06-06 14:45:53

标签: arrays matlab

我有下一个问题:

A=[2014;20;2012;32155];

然后我想在带有字符串字符的单元格数组中转换A,并在每个字符串前加上字符A。换句话说,如果我要创建手动单元阵列,我希望这样做:

A={'A2014';'A20';'A2012';'A32155'};

任何人都可以在不使用循环的情况下完成此操作吗?谢谢!

3 个答案:

答案 0 :(得分:3)

另一种方式是

formatSpec = 'A%d';
B = strtrim(cellstr(num2str(A(:), formatSpec)));
B = reshape(B, size(A));

请注意,您可以通过将'A%d'格式说明符更改为其他内容来修改结果字符串的格式。请阅读num2str的文档以获取更多详细信息。

答案 1 :(得分:2)

就像@rayryeng说的那样有效:

A = num2cell(A);
A = cellfun(@num2str, A, 'UniformOutput', false)

答案 2 :(得分:2)

通过编辑,您可以首先将数字数组转换为字符串的单元格数组,如您所说:

A = num2cell(A);
A = cellfun(@num2str, A, 'UniformOutput', false);

执行此操作后,如果我的理解正确,您希望在每个字符串前插入A字符。因此,您可以这样做:

A = cellfun(@(x) ['A' x], A, 'UniformOutput', false);

你会得到:

A = 

 'A2014'
 'A20'
 'A2012'
 'A32144'