Matlab - 将整数值与向量

时间:2016-12-12 18:05:50

标签: arrays matlab concatenation

我有一个带有某些数字的向量:

A=[1 2 3];

我需要另外一个矢量:

B=[G1 G2 G3];

由于我无法混合字符和双字符,我尝试将矩阵A转换为单元格数组:

num2cell(num2str(A))

然后做:

strcat(A, 'G')

获得所需的结果。但是做num2cell我获得了空白区域的单元格值(所以不是obteniendo一个3x1的单元格数组,而是获得Nx1),然后用字母' G'变得错了。

2 个答案:

答案 0 :(得分:2)

问题在于num2cell默认情况下使每个字符成为单独的单元格数组元素。

num2cell(num2str(A))
%    '1'    ' '    ' '    '2'    ' '    ' '    '3'

要简单地将G连接到每个元素,您只需在numstr的列向量版本上使用A,它将每个数字的每个字符串表示放在A中在一条新线上。然后strcat会在每行前加'G'。如果您希望它作为单元格数组,我们可以在cellstr调用中将其包装起来以获取单元格数组。

output = cellstr(strcat('G', num2str(A(:))))

或者,您可以在sprintf

中的每个元素上使用A
output = arrayfun(@(x)sprintf('G%d', x), A, 'UniformOutput', false)

答案 1 :(得分:0)

如果您希望B成为包含所有这些值的单字符串,则可以使用sprintf。这个函数接受向量作为它的第二个参数,因此很容易将相同的字符添加到A中的每个值。

B = sprintf('G%d ', A);

请注意,这会在您上次输入后留下一个尾随空格(即'G1 G2 G3 '),但这可以通过以下方式轻松删除:

B(end) = [];

有关更多示例,请参阅documentation on sprintf