繁体   English   中英

在C#中重新映射FFT频点分布

[英]Remap FFT frequency bin distribution in C#

我已经为正在使用的数据集进行了FFT编码。 我的意图是创建结果的瀑布图,但是我遇到的问题是,如果更改输入数据的大小,则会得到不同数量的频点。 目前,我只是使输入数据集的大小是我需要映射的像素数量的两倍。 我正在尝试找出一种将任何数据集大小的频点映射到特定数量的像素的方法。 例如,将500个值的数组映射到1250个元素长的数组。 可以选择对数据映射执行线性和非线性插值。 我可能还需要走另一条路,比如说将值映射到一个300个元素长的数组。 我不是数学专业的学生,​​因此想出一个空白。

您需要做的就是将输入零填充到要显示的像素数。 只需在输入上附加零即可使其达到所需的像素长度。 当执行FFT时,它将在填充零后的长度上完成,并为您提供与像素相同数量的输出采样。

当您对FFT输入进行零填充时,FFT实际上会在频域中自动内插。 检查这个出来。 请注意,即使增加了频域样本的数量,这实际上也不会在频域中为您提供任何更多信息(新的频率内容不会仅通过使用此方法显示)。 这只是对现有数据进行过采样。

我不确定采用另一种方法(降采样)的最佳方法,但是我认为这样做的一种方法是仅转换所需的前N个样本。 这样做可能会丢失数据,但可能并不重要,具体取决于应用程序。

离散傅立叶变换(快速或不快速)将始终为您提供与输入数组相同大小的输出数组。 如果要按比例放大,则需要在适当的窗口中使用sinc函数。 参见例如http://en.wikipedia.org/wiki/Lanczos_resampling

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM