gpt4 book ai didi

在 C 中从 double(GNU 科学库)转换为 SC16Q11

转载 作者:行者123 更新时间:2023-11-30 15:30:45 25 4
gpt4 key购买 nike

我正在使用 GNU 科学库来定义和使用复数。复数定义为

typedef struct{
double dat[2];
} gsl_complex;

这只是将实部和虚部表示为 double float (每个部分占用 8 个字节)。我需要将这些值的数组传递给使用 SC16Q11(有符号复数,16 位 Q11)格式的 D/​​A 转换器。

据我了解,使用 Q11 格式的 16 位处理器使用 16-(11+1)=4 位用于整数部分,留下 1 个符号位和 11 位用于小数部分。这是正确的吗?如何在这两种数据类型之间进行转换?

文档指出每个 IQ 样本都是一个交错的 IQ 对,其中该对的每个值都是 int16_t。

最佳答案

是的,Q11 格式就是 Q4.11(或者 Q5.11,如果将符号位计入 int 位)。

更多信息可以在 http://en.wikipedia.org/wiki/Q_%28number_format%29 找到

您可以使用以下方式进行转换:

int16_t number[2];
number[0] = round(dat[0] * 2048);
number[1] = round(dat[1] * 2048);

2048 来自 2^11。链接里也写了。

关于在 C 中从 double(GNU 科学库)转换为 SC16Q11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com