# Compute hilbert transform from DCT- FFTW3 REDFT00

My problem is similar to this but not the same.

Edit: Here is a description of Neumann boundary conditions for differential equations: Neumann-type boundary conditions means derivatives are specified at the end of the domain. In this case I refer to the specific case where the derivative vanishes at both the ends of the domain. Henceforth, such boundary condition is referred to as Neumann type.

I have 1D wavenumber domain equivalent to a fourier space with integer multiples of a fundamental mode. At the end of the domain neumann boundary conditions are satisfied.

As such, my spatial real signal has basis functions of cosine types. Due to neumann boundary conditions, to project the signal onto the fourier space, dct type 1 transform is used. Specifically, to accomplish this I use the REDFT00 transform of FFTW3 library.

Now, since it is DCT type 1, only half the length (plus 1) of spatial signal is stored in a 1D array with n bins. Subsequently, I compute the DCT type 1 store it in another array with another n bins. After that I'm confused how to compute the complex part of the hilbert analytic signal from DCT-type1.

It would be better (but not mandatory) to share a piece of code used with FFTW3 REDFT00.

• This really sounds very much like you're a physicist. I'll have to look up a lot of terms. I think it would be especially helpful if you could point out / link to what neumann boundary conditions are in this context – I've heard from them in the context of diff equations, but I haven't found the differential equation in your question. – Marcus Müller Aug 18 '17 at 21:06
• @MarcusMüller Please read the edit. I understand in DSP lexicon, boundary conditions mean to have a sequence i.e. even/odd at the end of array bins. Although, when I say boundary conditions it doesn't mean in the DSP sense, yet a good correspondence can be observed in both semantics – Ricky Aug 19 '17 at 5:56
• hey, thanks for the edit. Problem stays that Neumann boundary conditions describe diff equations, and I don't see a diff equation. In fact, I don't even see a diff'able function – you're referring to a "wavenumber domain equivalent to a Fourier space" – and that's a space, not something diff'able, to which I could apply these conditions. Thus, I assume the boundary conditions apply to all functions you map to that space. Is that understanding correct? – Marcus Müller Aug 19 '17 at 8:46
• @MarcusMüller You're correct. The differential equation doesn't matter here. Only thing of importance is that the function is mapped using DCT type 1. The So the given is just the DCT transform and the problem is to find the hilbert transform from the available DCT. Apologies for being late – Ricky Aug 23 '17 at 4:00
• @MarcusMüller One way is to regenerate the input sequence abcde (in physical domain) as abcdedcb, then take a DFT. Multiply the signum function to the DFT and inverse DFT back to physical domain. Then throw away the last three numbers of the sequence. This will give the complex part of the analytic signal. But I'm looking for a more optimal solution without increasing the array bin size and using DCTs/DFTs only, avoiding the complex numbers of the DFT – Ricky Aug 23 '17 at 4:07