This paper considers the model problem of reconstructing an object from incomplete frequency samples. Consider a discrete-time signal f∈C^{N} and a randomly chosen set of frequencies Ω. Is it possible to reconstruct f from the partial knowledge of its Fourier coefficients on the set Ω? A typical result of this paper is as follows. Suppose that f is a superposition of |T| spikes f(t)=σ_{τ∈T}f(τ)δ(t-τ) obeying |T|≤C_{M}·(log N)^{-1} · |Ω| for some constant C_{M}>0. We do not know the locations of the spikes nor their amplitudes. Then with probability at least 1-O(N^{-M}), f can be reconstructed exactly as the solution to the ℓ_{1} minimization problem. In short, exact recovery may be obtained by solving a convex optimization problem. We give numerical values for C_{M} which depend on the desired probability of success. Our result may be interpreted as a novel kind of nonlinear sampling theorem. In effect, it says that any signal made out of |T| spikes may be recovered by convex programming from almost every set of frequencies of size O(|T|·logN). Moreover, this is nearly optimal in the sense that any method succeeding with probability 1-O(N^{-M}) would in general require a number of frequency samples at least proportional to |T|·logN. The methodology extends to a variety of other situations and higher dimensions. For example, we show how one can reconstruct a piecewise constant (one- or two-dimensional) object from incomplete frequency samples - provided that the number of jumps (discontinuities) obeys the condition above - by minimizing other convex functionals such as the total variation of f.