FFT and spectrogram on I-Q data
31 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have an FFT and spectrogram genertated using the follwoing code:
%% fft data generation
Fs = 4e6;
Ns=4e6;
freq=-Fs/2:Fs/Ns:(Fs/2-(Fs/Ns));
amp=10*log10(abs(fft(s(1:Ns),Ns))/Ns);
P=abs(fft(s(1:Ns),Ns))/Ns;
figure(1)
plot((freq+741.5e6),fftshift(P));
%% spectrogram
figure(2);
Nx=4e5;
nsc = floor(Nx/4.5);
nov = floor(nsc/2);
nff = max(256,2^nextpow2(nsc));
spectrogram(s,kaiser(nsc,5.66),nov,nff,Fs, 'MinThreshold',-140);
The output looks like this:

However, I think the spectrogram is wrong:
- The frequency axis does not look right
- The FFT does not correspond to the spectrogram
Can someone please help me understand the spectrogram with a correct code?
file = 'un01';
f=fopen(file,'rb');
values = fread(f, Inf,'float');
I=values(1:2:length(values));
Q=values(2:2:length(values));
s=I+1i*Q;
9 commentaires
Meghna Roy Chowdhury
le 17 Oct 2023
Modifié(e) : Meghna Roy Chowdhury
le 17 Oct 2023
Paul
le 17 Oct 2023
I'm having lots of trouble reading in the data. Every time I try it, values has a different number of elements that aren't close to what you're showing. Don't know why this is a problem. Wish I could be of more help.
Réponses (1)
Sulaymon Eshkabilov
le 13 Oct 2023
Here is how the power spectrum can be computed & plotted:
f = fopen(websave('uni01','https://drive.google.com/file/d/1IjKADYLo4sBOsPXw7TqPOWfgOaRWqgdo/view?usp=sharing'),'rb');
values = fread(f, Inf,'float');
I=values(1:2:length(values)-1);
Q=values(2:2:length(values));
X=I+1i*Q;
Fs = 4e6;
%% spectrogram
figure(2);
[Power, Freq, Time] = pspectrum(X, Fs, 'spectrogram');
waterfall(Freq,Time, Power')
wtf = gca;
wtf.XDir = 'reverse';
view([30 45])
xlabel('Frequency (Hz)')
ylabel('Time (seconds)')
0 commentaires
Voir également
Catégories
En savoir plus sur Multirate Signal Processing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


