---
app_version: 0.1.0
precision: 3
form_title: Cascaded Noise Figure (Friis' Formula)
form_description: What noise figure does your whole receive chain actually have? Enter each stage's noise figure and gain, front end first — get the system noise figure and equivalent noise temperature.
form_inputs: Stage 1 NF (dB)|nf1_db, Stage 1 gain (dB)|g1_db, Stage 2 NF (dB)|nf2_db, Stage 2 gain (dB)|g2_db, Stage 3 NF (dB)|nf3_db, Stage 3 gain (dB)|g3_db
form_outputs: System noise figure (dB)|nf_sys_db, System noise temperature (K)|t_sys_k, Stage 1 share of total noise|share1
---
# Cascaded Noise Figure (Friis' Formula)
// "My preamp has a great noise figure — does it still matter after the
// coax loss and the mixer?"
//
// Friis: F_total = F1 + (F2-1)/G1 + (F3-1)/(G1*G2) + ...
// The first stage's noise figure dominates, *if* its gain is high enough to
// swamp everything after it — that's why a low-loss preamp ahead of a lossy
// feedline matters so much.

# Stages, front end first
nf1_db = 0.8   // dB — a good low-noise preamp
g1_db = 20     // dB
nf2_db = 3     // dB — e.g. the feedline loss shows up as "gain" < 0 and NF = loss
g2_db = -3     // dB — 3 dB of coax loss between preamp and receiver
nf3_db = 8     // dB — the receiver's own front end, after the preamp's gain
g3_db = 10     // dB

# Convert to linear (noise factor F, gain ratio G)
f1 = db2ratio(nf1_db)
g1 = db2ratio(g1_db)
f2 = db2ratio(nf2_db)
g2 = db2ratio(g2_db)
f3 = db2ratio(nf3_db)
g3 = db2ratio(g3_db)

f_sys = f1 + (f2 - 1) / g1 + (f3 - 1) / (g1 * g2)
nf_sys_db = db(f_sys)

"System noise factor F": f_sys
"System noise figure (dB)": nf_sys_db

// Equivalent noise temperature, referenced to 290 K (the standard reference
// temperature T0 used to define noise figure in the first place).
t0_k = 290
t_sys_k = t0_k * (f_sys - 1)
"System noise temperature (K)": t_sys_k

# How much of the total noise is each stage responsible for?
term1 = f1
term2 = (f2 - 1) / g1
term3 = (f3 - 1) / (g1 * g2)
total = term1 + term2 + term3

share1 = term1 / total
share2 = term2 / total
share3 = term3 / total

"Stage 1 share of total noise": share1
"Stage 2 share of total noise": share2
"Stage 3 share of total noise": share3
