# time-domain response to continous linear chirp

I am investigating the time-domain response of electromagnetic waves. The input signals are a chirp with linear frequency sweep 2.5 Hz->4.5 Hz -> 2.5 Hz and another signal which is abruptly turned off at 10 seconds.

Let's call this $$x(t)$$.

I then find the Fourier Transform of these signals.

I have the experimental values for the response of the chambers from 1 to 6 GHz as shown below.

(Please ignore the GHz as the frequency units, it is indeed Hz because there is a 10^9 at the bottom.)

Subsequently, I have converted the frequencies of this response from GHz to Hz.

I then multiply this response to the $$X(f)$$ to obtain the frequency-domain response. Which looks like this.

Again this is all what we expect to see. The problem is that when I do an inverse Fourier transform on $$Y(f)$$ to obtain the time-domain response, I get something that doesn't make sense.

Aside from the scale not being correct, the shape of these responses don't make sense. I have to mention that my sampling rate was 200 Hz. Before multiplying $$S_{21}(f)\times X(f)$$, I artificially made vector of up to 200 Hz and then flipped and conjugated $$S_{}21(f)$$ to cover frequencies from 199 Hz to 193 Hz (or -1 Hz to -6 Hz). Is this correct?

Given that everything makes send up to inverse Fourier transform, what have I done wrong there? What are good names for "Up-off chirp signal" and "Up-down Chirp signal". I just used these term because I didn't know if there are standard names for them or not.

tc = 10;
fs = 200;
f0 = 2.5;
f1 = 4.5;
t1 = 0:1/fs:tc;
t2 = tc:1/fs:2*tc;
t = [t1 t2];
pts = length(t);

x1 = chirp(t1,f0,tc,f1,"linear", -90);
x2 = zeros(1, length(x1));
x3 = -fliplr(x1);
x_on = [x1 x3];

N = 64040; % to match the 1600 points we have for response in 1-6 GHz
X_on=fft(x_on, N) * (1/N); %apply DFT on the signal
X_off=fft(x_off, N) * (1/N); %apply DFT on the signal
f = fs*(0:N - 1)/N;

G12 = [zeros(1, 320) resp_func(:, 2)' zeros(1, 60198) conj(fliplr(resp_func(:, 2)')) zeros(1, 320)];

Y2_on = X_on .* G12;
Y2_off = X_off.* G12;

y2_on = N * ifft(Y2_on);
y2_off = N * ifft(Y2_off);

subplot(2,1,1)
plot(linspace(0,2*tc, length(y2_on)), y2_on)
hold off
ylabel("Amplitude")
title("continuous chirp")
subplot(2,1,2)
plot(linspace(0,2*tc, length(y2_off)), y2_off)
xlabel("Time(s)")
ylabel("Amplitude")
title("pulsed chirp")

• Mind posting your code? The DFT of the signals does not look correct. Commented Mar 30, 2023 at 3:10
• I never really thought of an "up-down" chirp as a "linear chirp" When I think of a linear chirp, I think of this: $$x(t) = e^{j \pi \beta t^2} \qquad \forall \ t \in \mathbb{R}$$ Now if that signal is abruptly turned off, I might model that as a rectangular window. Commented Mar 30, 2023 at 3:16
• @Envidia I just did. Commented Mar 30, 2023 at 3:18
• Robet, then what should we call it? Commented Mar 30, 2023 at 3:18
• @RezaAfra We usually call up-down sweeps "triangular". Commented Mar 30, 2023 at 3:26

1. Your sweep only covers a very narrow frequency band, however the inverse DFT takes all frequencies as inputs. Zeroing the other frequencies is equivalent to circular convolution with a $$sin(x)/x$$ in the time domain which will result in enormous amount of pre- and post-ringing in the impulse response
3. Your complex conjugate padding of the spectrum is wrong and so the resulting impulse response ifft(G12) will be complex. You want one more sample of padding in the center and one less at the end because of DC and Nyquist (Which don't have conjugates).
For the power spectra of the chirps, you should be getting something that looks like this: The domain of the DFT always goes from $$\frac{-f_s}{2}$$ to $$\frac{f_s}{2}$$, so you can see here that you are oversampling by a factor of more than 20. To illustrate the the spectrum better, I will zoom in: