I am doing fmcw radar simulation. I have an output of mixer and from that I want to reconstruct the amplitude and phase of the signal. Therefore, I am taking hilbert transform and by the abs() and angle(), I can get the phase and amplitude information. Since the hilbert transform is in time domain, I want to map this time domain axis into frequency domain so I can see the value of amplitude and phase at different frequencies. FFT is not an option since by taking the fft, I will get the beat frequency.Therefore, how to map this time domain axis to frequency domain.

here are some of the relations between time and frequency. t = f/K, where

K = Bw / Tm
f = frequency,
Bw = bandwidth,
Tm = transmit time

I guess here, deltaf = 1/ t(2)-t(1) and fmax = 1/deltat, I am trying to map the time axis into frequency, but it gives dimension mismatch. Still there is something missing( some multiplyting factor or diving).Acoordig to my SV, its a demultiplexing process. That woud be really good if anyone can help me.

hil = hilbert(y_filt);
figure, plot(t,abs(hil));
figure, plot(t,angle(hil));
deltaf = 1/t(2) - t(1);
fmax = 1/delta t;
f =?            %%% how to define frequency axis so i can plot amplitude & phase
figure, plot(f,abs(hil));
figure, plot(f,angle(hil));
  • $\begingroup$ If FFT is not an option, then you are screwed because then DFT is not an option... But I don't really understand why. You could try convolution with basis functions, but that's DFT all over again... $\endgroup$
    – user13706
    Commented Jul 13, 2015 at 18:44
  • $\begingroup$ Yes, therefore i am confused. But there shoud be a way. $\endgroup$
    – Urban_Yogi
    Commented Jul 16, 2015 at 10:55

1 Answer 1


I am pretty sure you will not be able to do what you are after without a FFT. I belive you exclude the use of FFT due to a common misunderstanding of the 'time' vectors involved in a FMCW radar.

First, your modulated FMCW chirp signal is in t = 0:T_m, if your channel is a single delay $\tau$, you now have

$y(t) = \sin(2\pi(f_l t + K/2\cdot{}t^2)$

$y_2(t-\tau)=\sin(2\pi(f_l (t-\tau) + K/2\cdot{}(t-\tau)^2)$

mixed = y.*y_2

Note that you can use a spectrogram on both the $y$, $y_2$ and mixed signals to get an idea of the frequency and amplitude.

Your only sensible option at this point is to take a FFT of the mixed signal to obtain the beat frequency (from matlab fft doc):

n = 2^nextpow2(length(t)*5); % zero pad to 5 times the length
Y = fft(mixed,n);
f = Fs*(0:(n/2))/n;

you may want to do a hilbert transform and also apply a window before the fft, but the principle stays the same.

It is trivial to derive that $y(t)\cdot y_2(t-\tau)$ will have a frequency term

$f_\text{beat} = K\tau$

hence we can plot the above in terms of two-way travel time $\tau$:

two_way_t = f/K;
plot(two_way_t, abs(Y)); % expect a peak at \tau
plot(two_way_t, angle(Y)); % expect a wrapped version of 2*pi*t*K*tau + 2*pi*(f_l*tau - K*tau^2)

This two_way_t time vector is now your 'compressed time' vector.

I really hope this clears something up, because I realise I have not really answered your question.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.