I am trying to get a hold on
irfft but there is no much docs / examples about it. I tried some python code but the equivalent failed. Basically (and I aopologize for this), I can’t make sense of
which throws an error
Has anyone used this ?
Thank you for your help,
irfft is the inverse of
rfft. Also, you need to supply an extra argument for the size of first dimension (since it is not uniquely determined by the output of
To give a little more context, the Discrete Fourier Transform (DFT) is in general a complex-to-complex transform - if you give it a vector of
N complex numbers in the time domain, you get
N complex numbers back representing the spectra of your signal. The Fast Fourier Transform (FFT) is a fast algorithm for computing the DFT, but it’s ubiquitous enough that people commonly use “FFT” for the transform in general.
In the special case where you signal is real-valued (the imaginary part is zero for all your samples), it turns out that the spectrum is conjugate-symmetric (positive frequencies are the complex conjugates of negative frequencies), so you only need to compute half of it.
rfft exists to do that optimization, and only gives you the positive half of the spectrum. So in that case
rfft(x) will give you a vector of length
length(x) ÷ 2 + 1 (note
÷ is truncating integer division).
x is length
rfft(x) will be of length
9, but if
x is length
rfft(x) will also be length
9. That’s why when you invert the transform with
irfft you need to specify the original length, as it’s lost in the
If you’re dealing with real-valued signals you can use
irfft, and if you have complex signals you should use