about to refactor
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 10 Mar 2016 00:44:47 +0000 (00:44 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 10 Mar 2016 00:44:47 +0000 (00:44 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2722 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/nf_from_gr.m

index 59cc293ff0c84cd407fb2fb2a1f96a47acbcc26b..229387c9f10fae16bb8bfae17733ff4108296676 100644 (file)
@@ -1,18 +1,43 @@
 % nf_from_gr.m
 % David Rowe Mar 2016
+%
+% Calculate NF from GNU Radio ...IQIQ... (32 bit float) sample files
 
-% TODO: [ ] synthetic signal to test
-%       [ ] if sine wave power goes up what happens?
+% Take one sample with a -100dBm input carrier
+% Take another sample with no signal (just rx noise)
 
-p = load_comp("~/Desktop/neg100dBm_2MHz.bin");
-pn = load_comp("~/Desktop/nosignal_2MHz.bin");
+% HackRF --------------------------
 
-Pin = -100;             % rx power input of p in dBm 
-Fs = 2E6;               % sample rate in Hz
-st = 100E3; en = 300E3; % frequencies window to use
+%p = load_comp("~/Desktop/nf/hackrf_100dbm_4MHz.bin");
+%pn = load_comp("~/Desktop/nf/hackrf_nosignal_4MHz.bin");
+%Fs = 4E6;                 % sample rate in Hz
+%st = 180E3; en = 400E3;   % frequencies window to use
+
+% RTL-SDR --------------------------
+
+%p = load_comp("~/Desktop/nf/neg100dBm_2MHz.bin");
+%pn = load_comp("~/Desktop/nf/nosignal_2MHz.bin");
+%Fs = 2E6;               % sample rate in Hz
+%st = 100E3; en = 300E3;   % frequencies window to use
+
+% AirSpy -------------------------
+
+p =  load_comp("~/Desktop/nf/airspy_gain_-100dBm_2.5MHz.bin");
+pn = load_comp("~/Desktop/nf/airspy_gain_nosig_2.5MHz.bin");
+Fs = 2.5E6;               % sample rate in Hz
+st = 795E3; en = 820E3;   % frequencies window to use
+
+% Fun Cube Dongle Pro Plus -------------------------
+
+%p =  load_comp("~/Desktop/nf/fcdpp_100dbm_192khz.bin");
+%pn = load_comp("~/Desktop/nf/fcdpp_nosig_192khz.bin");
+%Fs = 192E3;               % sample rate in Hz
+%st = 25E3; en = 125E3;    % frequencies window to use
+
+Pin = -100;               % rx power input of p in dBm 
  
-P = fft(p100(1:Fs));
-N = fft(pns(1:Fs));
+P = fft(p(1:Fs));
+N = fft(pn(1:Fs));
 
 PdB = 10*log10(abs(P));
 NdB = 10*log10(abs(N));
@@ -26,8 +51,8 @@ plot(st:en, PdB(st:en));
 subplot(212)
 plot(st:en, NdB(st:en));
 
-P = 10*log10(P_pwr);
-No = 10*log10(No_pwr);
-G = P - Pin;
-NF  = No - G + 174;
-printf("Pin: %4.1f  Pout: %4.1f  G: %4.1f  NF: %3.1f\n", Pin, P, G, NF);
+P_dB = 10*log10(var(P(st:en)));
+No_dB = 10*log10(var(N(st:en))/(en-st));
+G = P_dB - Pin;
+NF  = No_dB - G + 174;
+printf("Pin: %4.1f  Pout: %4.1f  G: %4.1f  NF: %3.1f\n", Pin, P_dB, G, NF);