【matlab】一行中打印整个数组

在使用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,matlab)