使用sprintf打印具有可变数量元素的向量

Mad*_*ddy 8 matlab printf

在下面的代码中,我可以打印item由空格分隔的向量中的所有元素

item = [123 456 789];
sprintf('%d %d %d', item)

ans =

123 456 789
Run Code Online (Sandbox Code Playgroud)

如何在不必输入多少%d元素的情况下进行此操作item

gno*_*ice 19

最简单的答案是要注意SPRINTF自动循环遍历你给它的向量的所有元素,所以你只需要使用一个 %d,但是跟随它或用空格引导它.然后,您可以使用STRTRIM功能删除末端的额外空白区域.例如:

>> item = [123 456 789];
>> strtrim(sprintf('%d ',item))

ans =

123 456 789
Run Code Online (Sandbox Code Playgroud)


abc*_*bcd 5

我相信num2str这就是你要找的。

item=[123 456 789]; 
num2str(item)

ans =

123  456  789
Run Code Online (Sandbox Code Playgroud)

由于您还标记了它sprintf,这里有一个使用它的解决方案。

item=[123 456 789]; 
str='%d ';
nItem=numel(item);
strAll=repmat(str,1,nItem);

sprintf(strAll(1:end-1),item)

ans =

123 456 789
Run Code Online (Sandbox Code Playgroud)