使用strcat生成字符串列表 - 如何包含空格?

时间:2015-03-11 20:13:15

标签: matlab

我试图在MATLAB结构中存储变量和约束名称。为此,我尝试了以下方法:

JiSet = 1:6; nF = length(JiSet);
P.names.con(1:nF,1) = cellstr(strcat('x position for robot ',int2str(JiSet(:))));

看起来很简单吧?显然不是,因为我得到以下输出:

'x position for robot1'
'x position for robot2'
'x position for robot3'
'x position for robot4'
'x position for robot5'
'x position for robot6'

我想在文本robot和相应的数字之间显示一个空格。显然strcat会削减尾随空格,我如何确保它们被包含在内?我也尝试了['x position for robot ' int2str(JiSet(:))]形式的方法,但由于int2str部分是一个向量所以维度不匹配,因此无法正常工作。

2 个答案:

答案 0 :(得分:4)

不是使用strcat,而是使用未记录的函数sprintfc(检查here获取信息),而不是使用字符串填充单元格数组:

clear
clc

JiSet = 1:6; 
nF = length(JiSet);

P.names.con(1:nF,1) = sprintfc('x position for robot %i',JiSet);

Names = P.names.con;

%// You can combine this step with the former but I leave it like this for clarity purposes

Names = vertcat(Names)

Names = 
    'x position for robot 1'
    'x position for robot 2'
    'x position for robot 3'
    'x position for robot 4'
    'x position for robot 5'
    'x position for robot 6'

答案 1 :(得分:2)

将第一个参数设为单元格。

JiSet = 1:6; nF = length(JiSet);
P.names.con(1:nF,1) = cellstr(strcat({'x position for robot '},int2str(JiSet(:))));

给出输出:

>> P.names.con
ans = 
    'x position for robot 1'
    'x position for robot 2'
    'x position for robot 3'
    'x position for robot 4'
    'x position for robot 5'
    'x position for robot 6'

来自文档:

For cell array inputs, strcat does not remove trailing white space.