将双数转换为浮点数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将双数转换为浮点数相关的知识,希望对你有一定的参考价值。

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

TypeError:unorderable类型: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中将双精度转换为浮点数就像调用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)。

以上是关于将双数转换为浮点数的主要内容,如果未能解决你的问题,请参考以下文章

NEON 汇编代码,如何将 BYTE 转换为浮点数?

ValueError:无法将字符串转换为浮点数:'GIAC'

Numpy 错误“无法将字符串转换为浮点数:'Illinois'”

ValueError:无法将字符串转换为浮点数:'Mme'

ValueError:无法将字符串转换为浮点数:'31,950'

Android:将音频转换为浮点数[]