【发布时间】:2020-06-11 20:56:59
【问题描述】:
假设我有一个如下定义的行向量:
x = [5 6.7 8.9]
上面的代码生成了一个行向量,其中所有元素都被类型转换为浮点数(包括第一个索引中的 5)。
x =
5.0000 6.7000 8.9000
有什么办法可以防止 5 的类型转换(首先存在),即有什么办法可以让我的向量如下:
x =
5 6.7000 8.9000
5后没有四个小数点。
【问题讨论】:
-
向量的所有条目必须是相同的类型。无论如何,浮点
double数据类型包括最大为2^53的整数,所以这应该不是问题。您看到的4.0000与uint32(4)的值相同(尽管数据类型不同) -
普通数组无法做到这一点,但 cell 数组可以。有趣的是,如果我在 Octave 中创建一个像
x = {5 6.7 8.9}这样的元胞数组,5会显示而没有小数点,但它的类仍然是double。 -
你只关心这里的视觉还是实际的类型转换?
-
@AdityaSaini
x = {int32(5) 6.7 8.9}(或您想要的任何整数类型)将创建一个包含一个整数和两个双精度数的元胞数组,如果您正在寻找的话。或者你可以创建一个结构。或两个单独的数组。很多选择。 -
注意:在此处使用单元格数组 (
{...}) 可能会在显示格式方面为您提供所需的内容,但总的来说,使用单元格意味着您的性能会很差。如果可以,请坚持使用数字。
标签: matlab octave matlab-deployment matlab-compiler