MATLAB: Triangular wave form Up and Down sweep problem?

fmcw triangular wave formPhased Array System Toolbox

I am trying to dechirp a triangular up and down sweep of transmitted and recievedsignal with no doppler, ideally i should get only one beat frequency same for Up sweep and Down sweep, but i am getting two beat frequencies, i dont know why, i think its problem with the dechirp command, I am attaching my code also, help me find the problem,
clear,close all, clc
fc=77e9;
fs= 150000000 ;
tm = 0.002;
bw = 150000000 ;
c=3e8;
slope = bw/tm;
lambda = c/fc;
hwav = phased.FMCWWaveform('SweepTime',tm,'SweepBandwidth',bw,...
'SampleRate',fs,'SweepDirection','Triangle' , 'NumSweeps',2)
xt = step(hwav);
sampletime=1/hwav.SampleRate;
tau = 8e4;
delay = tau*sampletime;
supposed_range = delay*c/2
xr = [zeros(tau,1); xt(1:end-tau)];
y = dechirp(xr,xt);
hspec = dsp.SpectrumAnalyzer('SampleRate',hwav.SampleRate,'TwoSidedSpectrum',true ,...
'Title','Spectrum for received and dechirped signal',...
'LegendSource','Auto');
step(hspec,[y])
figure
spectrogram(xt,32,16,32,fs,'yaxis')
hold on
spectrogram(xr,32,16,32,fs,'yaxis')
hold on
spectrogram(y,32,16,32,fs,'yaxis')
fb_rng = rootmusic(pulsint(y,'coherent'),1,hwav.SampleRate)
range = beat2range(fb_rng,slope)

Best Answer

The beat frequency computed from upsweep and downsweep are meant to be different. It is that difference help you resolve the range Doppler ambiguity. You can change the last two lines to
fb_rng = rootmusic(pulsint(y,'coherent'),2,hwav.SampleRate)
range = beat2range(fb_rng.',slope)
The result will be matching the expected value.
HTH
Related Question