用Python仿真Matlab定点行为

2024-09-27 21:31:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Matlab脚本,是旧的和破旧的,我正试图重写它的一部分在Python。不幸的是,我不仅不熟悉Matlab,而且脚本是5-6年前写的,所以没有人能完全理解它做什么或如何做。目前我感兴趣的是:

% Matlab
[rawData,count,errorMsg] = fscanf(serialStream, '%f')

现在,我错误地尝试这样做:

# Python
rawData = []
count = 0
while True:
    rawData.append(struct.unpack('f', ser.read(4))[0])
    count += 1

但是,这会打印出完全无用的值。经过进一步的研究,我了解到,在Matlab中,%f并不意味着像在任何一种合理的语言中一样的浮点,而是不动点。因此,我的数据看起来像垃圾是有道理的。你知道吗

通过反复试验,我确定我应该从一个串行端口获得156字节的数据块。但是,我不确定转换为多少个值,因为我在Matlab中找不到解释定点数字有多大的文档(this说它们可以高达128位,但这不是很有帮助)。我还找到了python库decimal,似乎我想从组成部分(即提供符号、数字和指数)来构造它们,但我不确定它们是如何存储在我得到的数据流中的。你知道吗

在Python中,有没有一种从二进制流生成固定点号的好方法?或者我必须在Matlab中查找实现并重新创建它吗?也许有更好的方法来做我想做的事?你知道吗


Tags: 数据方法脚本count错误数字感兴趣matlab

热门问题