我有一个带有某些数字的向量:
A=[1 2 3];
我需要另外一个矢量:
B=[G1 G2 G3];
由于我无法混合字符和双字符,我尝试将矩阵A转换为单元格数组:
num2cell(num2str(A))
然后做:
strcat(A, 'G')
获得所需的结果。但是做num2cell我获得了空白区域的单元格值(所以不是obteniendo一个3x1的单元格数组,而是获得Nx1),然后用字母' G'变得错了。
答案 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。