Background: In a MIMO (Multiple-Input Multiple-Output) wireless link — a system using multiple antennas at both transmitter and receiver — the channel between Nt transmit and Nr receive antennas is described by a complex channel matrix H (size Nr×Nt). Decomposing H with the singular value decomposition (SVD), H = UΣVH, turns the MIMO channel into a set of parallel, non-interfering "eigen-layers" (eigen-modes), each with its own power gain σi², where σi are the singular values of H. Given a fixed total transmit power P, information theory shows that channel capacity C (measured in bit/s/Hz, i.e. bits per second per Hz of bandwidth) is maximized not by splitting power equally across these layers, but through "waterfilling": strong layers (large σi²) get more power, weak layers get less — or none at all if they are too weak relative to the noise floor 1/σi² to be worth using.
Description of This Web Application: This app lets you build a random MIMO channel with a chosen number of transmit/receive antennas (Nt, Nr) and channel rank r = rank(H), then visualizes the antenna array and the resulting channel-magnitude matrix |H| together with the singular value decomposition (SVD) that diagonalizes it. Adjusting the total transmit SNR (Signal-to-Noise Ratio, in dB) triggers a live waterfilling solve, showing the power pi allocated to each eigen-layer relative to the water level μ, the resulting per-layer data rates, and the total capacity C = Σlog₂(1+piσi²) compared against naive equal-power allocation. By experimenting with the controls, you will see why waterfilling outperforms equal-power allocation, how spatial rank limits the number of usable layers, and how SNR determines how many layers are worth activating.