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

时间:2011-05-16 23:58:36

标签: matlab printf

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

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

ans =

123 456 789

如何在%d中输入与item元素数量一样多的{{1}}来完成此操作?

3 个答案:

答案 0 :(得分:19)

最简单的答案是注意SPRINTF自动循环显示您提供的向量的所有元素,因此您只需使用一个 %d,但请遵循它或以空格引导它。然后,您可以使用函数STRTRIM删除末端的额外空白区域。例如:

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

ans =

123 456 789

答案 1 :(得分:4)

我相信num2str正是您所寻找的。

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

ans =

123  456  789

由于您还标记了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

答案 2 :(得分:0)

根据以上答案创建函数,并将其保存在名为函数名称的文件中。

保存在名为 print_vector.m 的文件中,该文件位于 / home / $ {project_file_path} / functions

文件夹中
function vector_as_string = print_vector(v)
str='%d ';
nItem=numel(v);
strAll=repmat(str,1,nItem);
vector_as_string = sprintf(strAll(1:end-1),v)

导入程序并使用

addpath('/home/${project_file_path}/functions')
vector = [10 ; 20; 30;];
disp(sprintf('printing a vector using function %s \n', print_vector(vector));

输出为:

printing a vector using function 10 20 30