问题标签 [fixed-point]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1360 浏览

matlab - 定点开发

这些天我正在研究一些定点编码。

如果我有一堆来自 ADC 的 16 位样本,并且我与 16 位滤波器系数相乘,结果可能是 32 位定点数,对吗?现在这很好,因为我的目标是 32 位定点 DSP。但是,如果我想将它乘以另一个 16 位定点系数或其他东西,那么我会溢出对吗?那么这是否意味着我需要进行中间截断?最终我还是会截断,因为我需要将结果发送到 16 位 DAC。

有没有人有在 MATLAB 中执行此操作的经验?

编辑我确实有定点工具箱。我不明白的是,现在如果我设置一个 16 位字长的数字,然后将最大乘积长度设置为 16,然后将它乘以另一个 16 位字,它会给我一个错误吗?如果我必须执行所有截断以防止错误,那么定点工具箱如何真正帮助我?我想我正在寻找一个示例,说明如何使用定点工具箱来确保最好的舍入/溢出条件,因为我的输入是 16 位并且我有 32 位寄存器。

谢谢

0 投票
2 回答
1808 浏览

math - 定点数学中的溢出

作为部分学习练习,部分爱好项目,我正在使用定点数学在 AVR 上实现我自己对 Cooley-Tukey FFT 算法的解释。我之前没有处理太多定点数学,我想知道如何最好地进行部分实现。我想这个问题的要点是要求确认我正在正确考虑所涉及的问题。

CT 算法的核心涉及一组复值数据的乘法和加法,以下列方式(在伪代码中):

余弦和正弦数据将是 S.XXX'XXXX 形式的 8 位有符号二进制小数,输入数据也将是 SXXX.XXXX 形式的 8 位有符号二进制小数,相乘将生成 16 位有符号小数积. 正如我所看到的,对于正弦和余弦的特别“坏”值以及数据的实部和虚部,temp1 或 temp2 将非常接近 16 位有符号整数的限制。
如果数据的实部和虚部都为 b0111.1111,则 Wolfram Alpha 中的一些工作表明,在正弦和余弦值“坏”的情况下,输出可能比简单的输出大 1.4 倍将正弦的最大值乘以输入的最大值。

例如,如果正弦参数是 b0111.1111,输入值为 b0111.111,则输出将为 b0111111.00000001,或十进制的 16129。1.4 倍大约是 22580。这不会溢出有符号 16 位 int 的正范围,但在接下来的几行中,这些乘积会从输入数据中加减,并假设这里的输入数据转换为 16 位,很可能会发生溢出。

在我看来,权衡是:要么增加数据的内部处理分辨率,这会增加处理时间,要么确保输入数据保持低于导致溢出的幅度,从而降低信噪比。这是关于事物的大小吗?

0 投票
3 回答
1322 浏览

c++ - 如何在 C++ 中优化一个简单的数字类型包装类?

我正在尝试在 C++ 中实现一个定点类,但我遇到了性能问题。我已将问题简化为浮点类型的简单包装器,但它仍然很慢。我的问题是 - 为什么编译器无法完全优化它?

“浮动”版本比“浮动”版本快 50%。为什么?!

(我使用 Visual C++ 2008,测试了所有可能的编译器选项,当然是发布配置)。

请看下面的代码:

0 投票
2 回答
1873 浏览

binary - 如何用二进制表示-0

此问题涉及将小于 abs(1) 且为负数的浮点数转换为 32.32 格式,例如:-0.1234。

将其转换为 32.32 时,整数部分和小数部分分别被分成高 32 位字和低 32 位字。在上面的这个例子中,高 32 位将保持 -0,而低 32 位将保持 0.1234,两者都转换为二进制。

所以问题是,在这种情况下,如何正确表示二进制中的 -0 值?

0 投票
1 回答
195 浏览

java - 在java中将浮点数转换为定点数时会发生什么(特别是java me)

我希望我的java me程序尽可能高效地运行。我的目标是进行光线投射,并想知道遍历体素的最佳方式。我听说浮点数的转换和比较非常占用 CPU。所以我想为什么不给每条射线 x 和 y 添加一定的距离,截断其余部分,然后使用这些坐标检查八叉树的体素。基本上,有没有更好的方法来为java me程序做这样的事情?

截断浮点数?

0 投票
2 回答
1063 浏览

iphone - iPhone的编译优化:浮点还是定点?

我正在为 iphone 构建一个库(speex,但我确信它也适用于许多其他库)并且 make 脚本可以选择使用定点而不是浮点。

由于 iphone ARM 处理器具有 VFP 扩展并且执行非常好的浮点计算,您认为使用定点选项是更好的选择吗?

如果有人已经对此进行了基准测试并想分享,我真的会感谢他。

0 投票
2 回答
4124 浏览

vhdl - vhdl中实变量的定点转换

我在 vhdl 中有以下代码片段:

现在我期待 1.2 的定点版本在信号“s”中可用。

但它总是忽略分数部分。's' 只包含小数部分(此处为“1”)。

我在这里想念什么?

0 投票
1 回答
2331 浏览

c++ - 用于整数三角函数的 C++ 库,使用可选近似值优化速度?

我已经在一个项目中达到了这样的地步:开始为向量和其他三角函数构建一些支持类比继续使用临时函数更有意义。我希望有很多 C++ 库为此,但我不想牺牲我习惯的速度和功能。

具体来说,我希望能够使用整数角度,并且我希望保持这样的近似值所提供的超快速度:

因此,在我不必要地自己动手之前,是否有任何用于 c++ 的非常快速的定点库,其中包含模板类(例如向量),我可以在其中指定使用的整数的宽度,并且具有快速近似值,例如我应该看的上面那个?

0 投票
2 回答
90 浏览

c# - 防止错误结转的最佳方法?

我有一个通过以 250 kHz 采样电压创建的大型数据阵列。我想将数据以及相关时间打印到文件中。我的第一种方法是这样做(在 C# 中):

显然,由于浮点数学这种方法的固有性质,它开始累积一个误差,在几秒钟的数据后变得显着。

我解决这个问题的方法是这样的:

这可以使所有内容保持同步,但看起来并不特别优雅。有没有更好的方法来解决这个问题?最后,在顶级方法中,使用 t += dt 与带小数的 t = i * dt 有什么不同?双打呢?

编辑:正如已经指出的那样,十进制不是浮点数。我应该在这里使用十进制还是双精度?

0 投票
2 回答
10140 浏览

c - C中的定点无符号除法

我需要一种算法来在 C 中进行无符号定点除法。我最多可以使用 32 位字。

我想最小化表示整数部分所需的位数,同时能够使用 [0..15] 范围内的数字。显然,最小位数是 4。问题是我提出的算法只能使用 5 位。因为它将余数与除数进行比较,然后移动余数直到它大于除数,如果除数的最高有效位为 1,那么算法只会移动余数(它永远不会更大)。这是代码:

如果您确实有解决方案但不想理解代码,请发布它。:)

例子:

我们想将 1.5 除以 2,得到 0.75。假设我们对整数部分使用 4 位,对小数部分使用 28 位。所以我们的数字是十六进制的: