在下面的代码中,我可以打印向量中的所有元素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