我试图在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
部分是一个向量所以维度不匹配,因此无法正常工作。
答案 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.