Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用sprintf打印具有可变元素数的向量_Matlab_Printf - Fatal编程技术网

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.