将双重号码转换为浮点数



我需要在Python中对MATLAB数据进行一些详细说明。数据在MATLAB中存储为doubles的数组。当我检索它时,尽管在这里说double数据类型在由Python处理时会在float数据类型中转换,但我会遇到此错误:

TypeError:不可订购类型:double((<float((

我想做的是这个

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变量一起使用?

将双打转换为MATLAB中的浮子就像调用单个函数一样简单:

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/doc/numpy-1.12.0/reference/generated/numpy.ndarray.astype.html(或struct进行直接转换(请参阅此答案,以防万一:将double转换为python中的double(。

最新更新