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



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

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

我如何在不必输入与item中的元素数量一样多的%d的情况下执行此操作?

最简单的

答案是注意SPRINTF会自动循环浏览你给它的向量的所有元素,所以你只需要使用一个%d,但跟随它或用空格引导它。然后,您可以使用函数 STRTRIM 删除末端多余的空格。例如:

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

我相信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

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

保存在名为 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

最新更新