npt = 8184; % multiple of 132, % to give an integer number of DAC waveform periods for the FFT pmax = (16384*npt)^2; nf = 396; % number of data files set1 = zeros(npt,nf); set2 = set1; for fx = [1:396] a=load(sprintf('raw_%3.3d.dat',fx)); y1=a(1:npt,1); set1(:,fx) = fft(y1); y2=a(1:npt,2); set2(:,fx) = fft(y2); end f = [0:npt-1]'; sxx = mean(abs(set1).^2,2); syy = mean(abs(set2).^2,2); syx = mean(set2.*conj(set1),2); dif = sxx + syy - 2*abs(syx); plot(f, 10*log10(abs(syx)/pmax), f, 10*log10(dif/pmax)) legend('DAC + upconverter','downconverter + ADC') xlim([0 npt/2]) dens_offset = 10*log10(1320e6/14/npt) ylabel(sprintf('dBFS (subtract %.1f to get dBFS/Hz)',dens_offset)) xlabel('FFT bin (0 to 47.1 MHz IF, 1320 to 1272.9 MHz RF)')