Matlab 使用sprintf打印具有可变元素数的向量
在下面的代码中,我可以打印向量Matlab 使用sprintf打印具有可变元素数的向量,matlab,printf,Matlab,Printf,在下面的代码中,我可以打印向量项中由空格分隔的所有元素,如下所示 item = [123 456 789]; sprintf('%d %d %d', item) ans = 123 456 789 我如何在不必输入%d和项中的元素数一样多的情况下执行此操作?我相信这就是您要查找的内容 item=[123 456 789]; num2str(item) ans = 123 456 789 由于您还标记了它sprintf,这里有一个使用它的解决方案 item=[123 456 78
项
中由空格分隔的所有元素,如下所示
item = [123 456 789];
sprintf('%d %d %d', item)
ans =
123 456 789
我如何在不必输入%d
和项中的元素数一样多的情况下执行此操作?我相信这就是您要查找的内容
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
最简单的答案是注意,它将自动循环遍历给定向量的所有元素,因此您只需使用一个%d
,但要跟随它或用空格引导它。然后,可以使用函数删除端点上的额外空白。例如:
>> item = [123 456 789];
>> strtrim(sprintf('%d ',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
尤达,这可能行不通。输出必须发送到SQL存储过程,该存储过程需要来自sprintf()的输入。请评论。谢谢@麦迪:我也有一个使用sprintf
的解决方案。见我回答的后半部分。我不知道SQL,所以我不能评论它是否有效。你可以在一些测试数据上试一下,看看它是否有效。我已经编辑并重新编写了这个问题,以便让意图更清楚。如果您不同意,请随时进行更改。我本打算提出建议,但不确定如何去除最后的空间strtrim
是一个很好的函数+1.