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

发布于 2024-11-08 10:56:07 字数 236 浏览 0 评论 0原文

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

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

ans =

123 456 789

所示: How do I go do this而不需要输入尽可能多的 %d item 中的元素数量?

In the following code, I can print all the elements in the vector item separated by a space as

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

ans =

123 456 789

How do I go about doing this without having to enter as many %d as the number of elements in item?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

就是爱搞怪 2024-11-15 10:56:07

最简单的答案是注意SPRINTF自动循环遍历所有你给它的向量的元素,所以你只需要使用一个 %d,但是在它后面或前面加一个空格。然后,您可以使用函数 STRTRIM 删除末端多余的空白。例如:

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

ans =

123 456 789

The simplest answer is to note that SPRINTF will automatically cycle through all the elements of a vector you give it, so you only have to use one %d, but follow it or lead it with a space. Then you can remove extra white space on the ends using the function STRTRIM. For example:

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

ans =

123 456 789
兮颜 2024-11-15 10:56:07

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

I believe num2str is what you're looking for.

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

ans =

123  456  789

Since you also tagged it sprintf, here's a solution that uses it.

item=[123 456 789]; 
str='%d ';
nItem=numel(item);
strAll=repmat(str,1,nItem);

sprintf(strAll(1:end-1),item)

ans =

123 456 789
中二柚 2024-11-15 10:56:07

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

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

Created a function as per the above answer and save it in a file named as the function name.

saved in file named as print_vector.m placed in folder /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)

import in your program and use

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

outputs as:

printing a vector using function 10 20 30
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文