I am doing some system identification using different signals such as single tone, multi tone, chirp and so on. These days I was trying to get an FFT of a chirp signal and I found a nice code here on Stack Exchange. I am pretty satisfied with the results except that I would like the resolution to be better between f0 and f1, the initial and end frequency. I have tried different methods of interpolating the FFT results, interpolating the magnitude (which is fine more or less but doesn't give me anything on the phase).
Would you know a way to get a better resolution?
Also the code:
%% Test script close all clear all clc % create timevector % get fs fs = 10e4; % create timevector t = linspace(0,0.2,fs); f0 = 1000; f1 = 2000; % chirp in timedomain SignalChirp = chirp(t,f0,max(t),f1); % Window length nfft= length(SignalChirp); %generate the vector of frequencies halfn = floor(nfft / 2)+1; deltaf = str2double(num2str(1/(nfft / fs))); %deltaf = 1 / ( nfft / fs); ffft = ((0:(halfn-1)) * deltaf)/t(end); % perform FFT X = fft(SignalChirp,nfft); magni1(1) = abs(X(1)) ./ (nfft); magni1(2:(halfn-1)) = abs(X(2:(halfn-1))) ./ (nfft / 2); magni1(halfn) = abs(X(halfn)) ./ (nfft); figure(1) subplot(2,1,1) plot(t,SignalChirp,'k'); title(['Chirp Signal']); xlabel('Time(s)'); ylabel('Amplitude'); subplot(2,1,2) semilogx(ffft,20*log10(magni1)),hold on