在使用matlab时候,有时需要将数组打印出来,比较常用的是disp,可以直接输入数组打印。
如下面的简单示例
a=[1.10001,1.22222,-1.30303];
disp(a);
输出如下:

但是如果需要打印到文件,或者指定格式打印呢,这个时候就不太适用了。
当然有一种比较笨的方法,就是遍历数组打印。这不是不可以,只是实现上比较低效,下面就来介绍几种常用的可以在一行中打印数组的方法。
方法1.
该方法是先将数组中的数据转换成string,然后将string通过join来连接起来;
打印数组也就是打印一个字符串。
当然,这个方法也有弊端,就是matlab在将数据转string的时候,可能存在精度丢失。
示例代码如下,
a=[1.10001,1.22222,-1.30303];
str=join(string(a),', ');
fprintf("%s\n", str);
输出结果为:

可以看到,部分数据的精度有了损失。
方法2.
此方法的思路是动态将打印的format生成好,这里有个好处是可以指定打印的精度。
a=[1.10001,1.22222,-1.30303];
fmt=['a= ' repmat(' %1.2f',1,numel(a)) '\n'];
fprintf(fmt, a);
输出结果为:

这里简单说明一下使用到的函数:
- numel是返回数组的个数
- repmat是生成指定维度的数组,参数中第一个指定了精度,第二个和第三个指定了维度。
以上两个方法都可以比较好的实现在一行中打印整个数组。不过也可能有人会问,如果我想每一行只打印一个数组元素(相当于一列打印整个数组),这样怎么做呢?
一列打印
也可以做到,并且很简单,示例代码如下
a=[1.10001,1.22222,-1.30303];
fprintf('%g\n', a);
输出结果为:

本文介绍了在Matlab中使用disp、join和fprintf灵活打印数组的方法,包括精度控制、一行打印整数组与逐元素打印,以及如何避免精度丢失。重点讲解了两种实用技巧:将数组转字符串和动态设置打印格式。

5512

被折叠的 条评论
为什么被折叠?



