小编mos*_*osi的帖子

对于c ++整数,1除以2是否可靠地等于0,而3/2 = 1,5/2 = 2等?

有两个不同但相关大小的向量.较大的是(2 * RESOLUTION) + INDEX_OFFSET(例如2050)而较小的是RESOLUTION(例如1024).我认为它足够安全,可以假设它uint16_t可以用来包含向量索引.

通过递增resultIndex2 来执行通过较大向量的迭代.在每次迭代期间,对索引处的较小向量进行赋值(resultIndex - INDEX_OFFSET) / 2.

本质上,代码依赖于以下假设:无论INDEX_OFFSET是奇数还是偶数,上面的2除以总是向下舍入,无论架构如何.例如,如果resultIndex是0或1,则预期为0,如果是2或3则预期为1,依此类推.在上述参数范围内,这是一个安全的假设吗?

NB我承认存在'划分整数类型 - 结果是否可预测?' 但它似乎并不完全匹配.

c++ integer-division

6
推荐指数
1
解决办法
2万
查看次数

Kiss FFT似乎将数据乘以它转换的点数

我对傅里叶变换的有限理解是,您应该能够在时域和频域之间切换,而无需更改原始数据.所以,这里是我(我想)我在做什么的总结:

  1. 使用kiss_fft_next_fast_size(994)以确定我应该使用1000.

  2. 使用kiss_fft_alloc(...)创建kiss_fft_cfgnfft = 1000.

  3. 通过将额外点填充为零,将输入数据从大小994扩展到1000.

  4. kiss_fft_cfg传递给kiss_fft(...)我的输入和输出数组.

  5. 使用kiss_fft_alloc(...)创建逆kiss_fft_cfgnfft = 1000.

  6. 传递逆kiss_fft_cfgkiss_fft(...)输入先前的输出数组.

  7. 期待原始数据回来,但每个数据准确地大1000倍!

我在这里放了一个完整的例子,最后可以找到我的50多行代码.虽然我可以通过将每个结果除以OPTIMAL_SIZE(即1000)的值来解决这个问题,但是如果没有理解为什么那么修复会使我感到非常不安.

请问你能说出我做错的愚蠢事吗?

c++ signal-processing fft kissfft

4
推荐指数
1
解决办法
1564
查看次数

标签 统计

c++ ×2

fft ×1

integer-division ×1

kissfft ×1

signal-processing ×1