Discontinuities in LFM chirp signal
2 次查看(过去 30 天)
显示 更早的评论
Hi All,
I am generating a customized bidirectional chirp signal using the built-in CHIRP function. I am doing this by generating an up chirp and down chirp for each period in my signal and then concatenating them together. I have taken great pains to try and ensure continuous phase, but I am still getting very sharp "knees" in the time domain signal right at the data points where up and down chirps meet, which tells me that phase is likely not continuous.
Below is the heart of the code:
j = 1; thetaNought = 0; for i = 1:chirpSize:length(time)
currentStartFrequency = startFrequencies(j);
if(j < numChirps)
nextStartFrequency = startFrequencies(j+1);
else
nextStartFrequency = startFrequencies(1);
end
peakFrequency = currentStartFrequency + BANDWIDTH;
%chrip up
y = chirp(time(1:riseSize),currentStartFrequency,time(riseSize), peakFrequency, 'linear', rad2deg(thetaNought));
thetaNought = acos(y(end));
%chirp down
yDown = chirp(time(1:fallSize),peakFrequency,time(fallSize),nextStartFrequency,'linear',rad2deg(thetaNought));
thetaNought = acos(yDown(end));
tdSignal(i:i+chirpSize-1) = [y yDown];
j = j + 1;
end
Here, start frequencies are defined ahead of time (but are all the same for the purposes of testing the code), and correspond to the trough frequencies of the chirp. Variables with *Size are in data points, and the time vector is predefined based on the sampling rate and number of chirps desired in the signal (I use "chirp" to mean one period of the signal, or an up + down chirp). Note that the starting theta value is always forced to be the same as the last theta value.
Can anyone see why this would be producing discontinuities? I can provide any more information if that would be helpful.
Thanks in advance!
0 个评论
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!