将双数转换为浮点数

时间:2018-02-23 22:39:39

标签: python matlab floating-point type-conversion double

我需要在Python中对MATLAB数据做一些阐述。 数据在Matlab中存储为doubles的数组。当我检索它时,尽管被称为here,当由Python处理时,来自Matlab的double数据类型在float数据类型中被转换,我收到此错误:

  

TypeError:unorderable类型:double()<浮动()

我想要做的就是这个

import matlab.engine

eng=matlab.engine.connect_matlab()

x = eng.workspace['MyData']
x = x[len(x)-1]
if x < 0.01:
    #do stuff

如何将存储在数组中的double数字转换为float,以便我可以将其与其他Python变量一起使用?

1 个答案:

答案 0 :(得分:2)

在Matlab中将双精度转换为浮点数就像调用single function一样简单:

A = rand(10);
whos A;

B = single(A);
whos B;

根据控制台输出:

  Name       Size            Bytes  Class     Attributes

  A         10x10              800  double              

  Name       Size            Bytes  Class     Attributes

  B         10x10              400  single 

请注意精度损失,因为您要将64位数值转换为32位数值。

修改

由于你无法操纵你的Matlab数据,为了做到这一点,我建议你使用Numpy(参考这个函数以防:https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.ndarray.astype.html)或struct直接转换(请参阅以下案例中的答案:convert double to float in Python)。