The radio spectrum is conventionally [1] divided into frequency bands that seem arbitrary at first glance. For example, VHF runs from 30 to 300 MHz. All the frequency band boundaries are 3 times a power of 10.

Why all the 3’s? Two reasons: 3 is roughly the square root of 10, and the speed of light is 300,000 km/s. The former matters when you think in terms of frequencies, and the latter matters when you think in terms of wavelengths.

## Frequencies

The frequency bands are centered (on a log scale) on powers of 10. The band centered at 10^{n} runs from

3 × 10^{n-1} Hz

to

3 × 10^{n} Hz.

Since 10^{0.5} ≈ 3, this means that the log base 10 of the frequency band runs from roughly *n* – 1/2 to *n* + 1/2.

|--------+-------+-----------------------------| | Center | Short | Long | |--------+-------+-----------------------------| | 10^0 | TLF | Tremendously Low Frequency | | 10^1 | ELF | Extremely Low Frequency | | 10^2 | SLF | Super Low Frequency | | 10^3 | ULF | Ultra Low Frequency | | 10^4 | VLF | Very Low Frequency | | 10^5 | LF | Low Frequency | | 10^6 | MF | Medium Frequeny | | 10^7 | HF | High Frequency | | 10^8 | VHF | Very High Frequency | | 10^9 | UHF | Ultra High Frequency | | 10^10 | SHF | Super High Frequency | | 10^11 | EHF | Extremely High Frequency | | 10^12 | THF | Tremendously High Frequency | |--------+-------+-----------------------------|

The table is easier to remember if you read it from the middle because it’s symmetric about 1 MHz.

From MF you either go up to HF or down to LF. Above HF is VHF and below LF is VLF. Above VHF is UHF, and below VLF and ULF. And so on.

The following bit of Python code computes the name of a frequency’s band following the discussion above.

from math import log10 def frequency_band(freq): decade = round(log10(freq)) if decade in [5, 6, 7]: name = "LMH"[decade-5] else: name = "VUSET"[abs(decade-6)-2] name += "H" if decade > 6 else "L" return name + "F"

## Wavelengths

A radio wave with frequency *f* has wavelength *c*/*f*. As noted above, The band centered at 10^{n} runs from 3 × 10^{n-1} to 3 × 10^{n}. This means the wavelengths vary from

3 × 10^{8} *m* / 3 × 10^{n}

to

3 × 10^{8} *m* / 3 × 10^{n-1}

and so the wavelength is between 10^{8-n} and 10^{9-n} meters.

To change the code above take wavelength as an argument, calculate the decade as

decade = 8 - int(log10(wavelength))

Note that casting to integer truncates floats, taking the floor before changing the type.

## Related posts

[1] Specifically, these are the conventions established by the International Telecommunications Union (ITU).

In practice, TLF, SLF, and ULF are uncommonly used (everything below LF is either “VLF” or “ELF”), as are SHF, EHF, and THF (stuff above 1GHz being more commonly called microwave, mm-wave, terahertz, and/or infrared). LF through UHF are the real core that mostly everyone agrees on.