|
一组从FPGA上得到的IQ数据,数据组成为:32bit数据,前面16bit是I,后面16bit是Q,然后有614400个32bit数据,中心频率是1895m,采样频率是61.44m,对这样一组数据画频谱图,下面是我的做法,就是把iq数据分开然后直接对组合起来的复数进行fft,但我总感觉是错误的,图出来也不像正确的样子,请大佬们指导指导,对这类iq数据该怎么频域分析呢(数据发不上去,这个问题我也发在matlab中文论坛上了,大家可以去这里获取原数据:
求助帖:对从FPGA模块上得到的IQ数据进行频域分析
https://www.ilovematlab.cn/thread-617393-1-1.html
(出处: MATLAB中文论坛)
)
clc;clear;
close all;
str='FpgaData_r_1895.mat';
fs = 61.44e6;
FFT_Num=4096;
fids =fopen(str);
data=fread(fids,inf,'int16',0,'b'); %此处读取出来的数据看图
data_r_i=zeros(1,ceil(length(data)/2));
for i=1:2:length(data)
data_r_i(floor(i/2+1))=complex(data(i),data(i+1));
end
M=1:FFT_Num;
freq=M*fs/FFT_Num;
figure();
for i=1:FFT_Num:length(data_r_i)-FFT_Num
data_pro=data_r_i(i:i+FFT_Num);
X =fftshift(fft(data_pro,FFT_Num)); % Compute its 16-point DFT
mag=20*log10(abs(X(M)))-100; % 求得Fourier变换后的振幅
plot(freq,mag,'r');
receiver_power= max(mag);
pause(0.1);
end
|
|