如何对傅立叶复数值降采样?

编程入门 行业动态 更新时间:2024-10-08 12:34:42
本文介绍了如何对傅立叶复数值降采样?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

免责声明:我不是信号处理专家.

我正在编写一个函数,该函数采用一维数组并对其执行快速傅立叶变换.运作方式如下:

I'm writing a function that takes a 1D array and performs Fast Fourier Transform on it. Here's how it works:

  • 如果数组的大小不是2的幂,则在末尾加0,以使其大小成为2的幂.
  • 对填充数组执行FFT并将结果存储在数组x中.
  • 对复杂数组x进行下采样以匹配原始非填充数组的长度.
  • 返回x.
  • If the array's size is not a power of two, pad it with 0s at the end so that its size becomes a power of two.
  • Perform FFT on the padded array and store the results in an array x.
  • Downsample the complex array x to match the length of the original non-padded array.
  • Return x.
  • 我在执行第3步时遇到问题.如果我省略第3步,并对函数调用的结果执行逆FFT,则会得到初始填充数组,这意味着该函数成功执行了第1步和第2步.

    I'm having trouble with step 3. If I omit step 3 and perform inverse FFT on the result of the function call, I get the initial padded array which means the function successfully performs steps 1 and 2.

    我尝试通过使用线性插值进行下采样来实现第3步,但是当我使用MatLab对最终结果执行傅立叶逆变换时,得到的结果不等于原始数组.我需要使用的编程语言不是 MatLab,我仅使用MatLab来验证结果的正确性.

    I tried implementing step 3 by downsampling using linear interpolation, but when I perform inverse fourier transform on the final result using MatLab, the results I got were not equivalent to the original array. The programming language I need to use is not MatLab, I'm only using MatLab to verify correctness of the results.

    我可以使用哪些技术执行第3步,同时在进行逆FFT后仍然能够取回原始的未填充数组?

    推荐答案

    使用循环Sinc核插值计算向下采样的点.对于新的较低的下采样采样率,Sinc宽度将为低通滤波器的截止宽度,该截止值适合于抗混叠.

    Use circular Sinc kernel interpolation to compute the down sampled points. The Sinc width will that of a low-pass filter with a cut-off appropriate to anti-alias for the new lower down-sampled sample rate.

    更多推荐

    如何对傅立叶复数值降采样?

    本文发布于:2023-11-30 12:44:12,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1650012.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:傅立叶   复数

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!