在使用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);
输出结果为: