MATLAB中行向量的自动类型转换

Automatic Type conversion of row vector in MATLAB

假设我有一个定义如下的行向量:

x = [5 6.7 8.9]

以上代码生成了一个行向量,其中所有元素都被转换为浮点数(包括第一个索引中的 5)。

x =

   5.0000   6.7000   8.9000

有什么方法可以防止 5 的类型转换(首先出现),即有什么方法可以让我的向量如下:

x =

   5  6.7000   8.9000

没有5后四位小数。

在 Matlab 和 Octave 中,double 是所有数值的默认值,即使其中一些值可能是整数(整数)。对于数值数组,所有元素必须属于同一类型。

一般来说,您应该将所有数值保留为双精度值,并使用格式化控件(如 printf() 及其朋友提供的控件)按您的需要显示它们。

在这种情况下,您可以这样做:

x = [5 6.7 8.9];
printf('%d  %.04f  %.04f\n', x); 

或者更灵活:

printf('%g  ', x); printf('\n');