Array architectures: 1D, 1.25D/1.5D/1.75D, 2D matrix, row-column, CMUT/PMUT
An array is a sampled aperture whose samples are themselves small apertures, wired to a system with a fixed number of channels. This module turns those three facts into design rules: element directivity and pitch for 1D arrays, elevation control from a fixed lens to 1.75D, and the channel-count problem of 2D arrays with its four answers (sparse layouts, multiplexing, micro-beamforming in the probe, row-column addressing), then the micromachined transducers that make dense 2D apertures and in-probe electronics practical.
You will be able to
- Predict an element's acceptance angle from its width and the baffle model, and from it the minimum usable F-number
- Choose pitch for linear, curved and phased arrays from the steering range, and price steering with the element factor
- Define 1.25D, 1.5D, 1.75D and 2D precisely and estimate slice thickness for each
- Budget a matrix probe: channels, cable loading, data rate; compare sparse, micro-beamformed and row-column designs
- Map 2D grating lobes in direction-cosine space \((u, v)\) and size the pitch of a square or hexagonal grid for a steering cone
- Derive the micro-beamformer pattern (subarray factor × coarse array factor), its subarray grating lobes and the steering window around each pre-steer setting, the core of 4D TEE
- Explain the row-column PSF (one-way per dimension), its edge-wave ghosts and the roll-off apodization fix
- Use the parallel-plate CMUT model: pull-in at \(g_0 /3\), coupling and spring softening versus bias; contrast PMUTs
Assumes
- Module 04 (Sampling, Fourier, LTI), Sections 04.7–04.8: spatial sampling, beam = Fourier transform of aperture, grating-lobe formula, \(\lambda\)F#
- Module 16 (Piezoelectrics & KLM) and Module 17 (Matching, backing, lens, FEA): piezoelectric element, \(k_t\), matching layers, lens
- Module 18 (CMUT, PMUT & new materials): membrane mechanics behind Section 19.7
- Forward reference, read later: Module 23 (Beams, k-space, compounding), Sections 23.1, 23.3–23.4: Fresnel number and focal shift, broadband grating lobes and edge waves, coarray, random thinning and vernier arrays
19.1The element: geometry, directivity and crosstalk
A 1D array element is a strip of width w (azimuth) and height H (elevation), separated from its neighbour by a kerf; pitch \(d = w\) + kerf. Typical numbers: kerf 20–40 µm, fill fraction \(w/d \approx 0.8\text{–}0.9\), H from about 3 mm (high-frequency linear) to well over 10 mm (low-frequency abdominal). In azimuth the element is a small aperture, so its far-field directivity is the Fourier transform of its velocity profile:
- \(E(\theta)\)
- element (directivity) factor, amplitude relative to broadside
- \(w\)
- element width, mm
- \(\theta\)
- angle from the element normal, rad
- \(\lambda\)
- wavelength in the medium, mm
- \(\operatorname{sinc}(x)\)
- normalized sinc, \(\sin(\pi x)/(\pi x)\); \(x\) is its dimensionless argument
- \(\theta_{-6\,\mathrm{dB}}\)
- acceptance half-angle of the element
- \(F\#_{\min}\)
- smallest useful receive F-number (depth / aperture)
- \(E(\theta)\)
- element directivity, as in (19.1)
Element directivity versus width, frequency and baffle
Exact formulaFar field of a uniformly vibrating strip: \(\operatorname{sinc} (w \sin \theta /\lambda)\) (rigid baffle, Rayleigh integral) and × \(\cos \theta\) (pressure-release baffle). Single frequency; no lateral modes, crosstalk or lens.Crosstalk
Crosstalk is any path by which driving one element moves its neighbours: mechanical coupling through the kerf filler, backing and matching layers; guided waves (Lamb and Scholte-type waves) in the lens and at the lens–tissue interface; and capacitive coupling in the flex circuit and cable. It widens the effective element (so the directivity narrows below the sinc prediction), and guided waves add lobes at the angle where their trace velocity matches the wave in tissue. Full dicing through the matching layers, soft kerf fillers and sub-dicing of wide elements (to push lateral modes above the band, Module 17) are the standard countermeasures. Nearest-neighbour crosstalk is commonly measured by driving one element and recording its neighbours electrically or with a laser vibrometer, with design targets around −30 dB or lower.
The element factor is the same Fourier pair as the array factor, one scale smaller. The array samples the aperture at pitch d, so its pattern repeats every \(\lambda /d\) in \(\sin \theta\); each sample has width \(w \approx d\), so the element factor is a sinc whose first null sits at \(\sin \theta = \lambda /w\), right next to the first grating lobe at \(\lambda /d\). That is why the element factor helps against grating lobes when steering is small and cannot help when steering is large.
19.2Linear, curved and phased arrays: why λ versus λ/2
A uniform array of N elements at pitch d, steered to \(\theta_0\), has the pattern element factor × array factor:
- \(P(\theta)\)
- one-way array pattern
- \(\mathrm{AF}\)
- array factor
- \(N\)
- number of elements
- \(d\)
- element pitch, mm
- \(u_0\)
- \(\sin\theta_0\), the steering direction
- \(u,\ \theta\)
- direction sine \(u = \sin\theta\); angle from the array normal in the scan plane
- \(E(\theta),\ \lambda\)
- element factor and wavelength, as in (19.1)
| Type | Typical numbers | Image format and how the beam moves | Pitch rule |
|---|---|---|---|
| Linear | 128–256 elements, 5–15 MHz, \(d \approx 0.1\text{–}0.3\) mm | Rectangle: a sub-aperture translates along the array; steering only modest (±10–20° for compounding, Doppler, plane-wave angles) | \(d \approx \lambda\): unsteered grating lobe at endfire, where \(E \approx 0\) |
| Curved (convex) | 128–192 elements, 2–6 MHz, radius ≈ 40–60 mm | Sector-like: the curvature fans the beams, so each sub-aperture fires straight out of its own face | \(d \approx \lambda\), same reason as linear |
| Phased | 64–128 elements, 1.5–5 MHz, footprint ≈ 15–25 mm | Sector from a small window (intercostal, TEE): the full aperture is steered ±45° and beyond | \(d \approx \lambda /2\) at the highest frequency of interest |
Array pattern = element factor × array factor, with steering
Exact formulaClosed-form array factor \(\sin (N\pi du/\lambda)/(N \sin (\pi du/\lambda))\) times the soft-baffle element factor \((w = 0.9d)\); far field, narrowband.The pitch rule is a narrowband statement at one frequency. A "\(\lambda\)/2" phased array designed at 2.5 MHz is a \(0.80\lambda\) array at its 4 MHz band edge and for harmonic imaging receive. Broadband pulses smear grating lobes and lower their peak (Module 23), so real designs accept some violation at the band edge; quote the frequency whenever you quote \(d/\lambda\).
19.3Elevation: fixed lens, 1.25D, 1.5D, 1.75D
A 1D array focuses electronically in azimuth only. In elevation it has a fixed aperture H and a fixed focus set by the lens (Module 17), so the slice thickness (the elevation −6 dB two-way beam width) is small only near the lens focus and grows on either side. Multi-row arrays split H into rows. The naming is standardised by what the rows can do (Wildes et al., IEEE TUFFC 1997):
| Class | Elevation aperture | Elevation focus | Elevation steering | Channels (N azimuth, R rows) |
|---|---|---|---|---|
| 1D | fixed | fixed (lens) | no | N |
| 1.25D | variable: outer rows switched in with depth | fixed (lens) | no | N (plus switches) |
| 1.5D | variable, apodized | dynamic, but symmetric about the array centreline (rows paired) | no | N·(R+1)/2 |
| 1.75D | variable, apodized | dynamic, rows independent | limited (few degrees) | N·R |
| 2D | full | full | full, comparable to azimuth | \(N^2\) for a square aperture |
Row delays in a 1.5D array are one value per row, a staircase approximation to the focusing curve, so a few wide rows only correct the low-order (quadratic) part of the elevation phase. The lens still does most of the focusing; the electronics move the focus and change the aperture with depth. The slice thickness matters more than it looks: it sets how much off-plane speckle and clutter fill a cyst, the partial-volume error in QUS and attenuation estimates, and the out-of-plane decorrelation in speckle tracking.
- \(F\)
- elevation (lens) focal depth, mm
- \(H\)
- elevation aperture height, mm
- \(N_F\)
- Fresnel number of the elevation aperture
- \(\lambda\)
- wavelength, mm
Elevation beam: 1D lens versus 1.25D versus 1.5D
SimulationCW Huygens sum in JS: elevation line aperture of 1/r point sources at 5 MHz, lens and row delays as phases, two-way = one-way squared; no azimuth dimension, no lens loss.For QUS (backscatter coefficient, attenuation by spectral difference) the elevation beam enters every diffraction correction. A 1D probe's reference-phantom method cancels it only if the phantom is scanned at the same depths and settings; a 1.5D or 1.75D probe whose elevation aperture switches with depth changes the diffraction term at each switch, which shows up as steps in the attenuation estimate if the reference data were not acquired with identical switching.
19.42D matrix arrays: channel count, grating lobes in (u, v), sparse layouts
Map of Sections 19.4–19.6. A matrix probe raises three questions, answered in order: how many elements and wires (this section, (19.5)–(19.6)), where its grating lobes fall in two dimensions (this section, (19.7)–(19.8), Demo 19.5), and how the in-probe micro-beamformer that solves the wiring problem creates a second set of grating lobes that limits steering (Section 19.5, (19.9)–(19.10), Demo 19.6). Row-column addressing, the other way out, is Section 19.6.
Electronic steering and focusing in both lateral dimensions requires a 2D grid of elements, and the pitch rule now applies in both directions. A \(\lambda /2\) phased aperture of side D needs \((2D/\lambda)^{2}\) elements:
- \(N_{\mathrm{el}}\)
- number of elements of a fully sampled square 2D array
- \(D\)
- aperture side, mm
- \(\lambda\)
- wavelength, mm (0.51 mm at 3 MHz)
The element-loading problem is quantitative. On receive, the element (capacitance \(C_e\), a voltage source behind it) drives the cable capacitance \(C_c\), a capacitive divider:
- \(V_{\mathrm{out}},\ V_{\mathrm{open}}\)
- voltage at the cable end and open-circuit element voltage, V
- \(C_e\)
- element (clamped) capacitance, F
- \(C_c\)
- cable plus input capacitance, F
- \(\varepsilon_r^{S}\)
- relative clamped permittivity
- \(A,\ t\)
- element area (m²) and thickness (m)
- \(\varepsilon_0\)
- vacuum permittivity, \(8.85\times10^{-12}\) F/m
| Strategy | System channels for an N × N aperture | What it keeps | What it costs |
|---|---|---|---|
| Fully wired (research) | \(N^2\) (e.g. 1024) | every element, full flexibility, channel data | multiple synchronized systems, huge cable bundle and data rate |
| Multiplexing | \(N^2 /M\) per firing (M-to-1 switches) | full aperture over M firings | M× lower volume rate; switch capacitance and HV switches in the probe |
| Sparse / random / spiral | \(K \ll N^2\) | aperture extent (resolution) | sidelobe floor ≈ 1/K, sensitivity ∝ K |
| Micro-beamforming | \(N^2 /m^{2}\) for m × m subarrays | full sensitivity, full aperture | in-probe ASIC (power, heat), fine delays only valid near the pre-steer direction, no per-element channel data |
| Row-column (RCA) | 2N | N × N footprint with N + N lines | one-way focusing per dimension, edge-wave ghosts, rectilinear field of view |
Sparse arrays are Module 23's random thinning in 2D. With K elements placed at random among \(N^2\) grid positions, far-field phasors at a sidelobe direction add as a random walk, so the mean sidelobe power relative to the peak is \((N^2 - K)/(K(N^2 - 1)) \approx 1/K\): −25.3 dB for \(K = 256\) of 1024, two-way about twice that in dB for independent transmit and receive sets, because the two-way pattern is the product of the one-way patterns, the transform of the coarray (transmit layout convolved with receive layout, Section 23.4). Periodic thinning instead puts grating lobes at full height. Deterministic layouts (vernier pairs, Fermat or density-tapered spirals) shape the floor; density-tapered spirals of 256 elements let a single 256-channel system drive a 2D aperture (Ramalli et al., IEEE TUFFC 2015). Fully wired research systems have driven 32 × 32 matrices with 1024 channels for 3D ultrafast imaging (Provost et al., Phys. Med. Biol. 2014).
m19_sparse_2d_array.m (all reach the 1/K ≈ −24 dB floor).Sparse 2D array: layout and far-field beam pattern
Exact formulaArray factor of the element mask by 2D FFT (zero-padded 128 × 128) in sine space; point elements, narrowband far field, element factor omitted. Random layouts are seeded draws.Grating lobes in two dimensions: the (u, v) plane
In 2D the direction of a plane wave needs two coordinates. Use the direction cosines \(u = \sin\theta\cos\varphi\), \(v = \sin\theta\sin\varphi\), with \(\theta\) measured from the array normal and \(\varphi\) the azimuth from the x axis. Every real direction lies in the unit disc \(u^2 + v^2 \le 1\), the visible region. Steering to \((\theta_0, \varphi_0)\) is a linear phase in both coordinates, so the pattern of an \(N_x \times N_y\) grid is the 1D array factor (19.3) in each axis, shifted to the steering point, and it repeats on a lattice:
- \(u,\ v\)
- direction cosines, \(u = \sin\theta\cos\varphi\), \(v = \sin\theta\sin\varphi\)
- \(\theta,\ \varphi\)
- polar angle from the array normal and azimuth from the x axis
- \(u_0,\ v_0\)
- steering direction, \(u_0 = \sin\theta_0\cos\varphi_0\), \(v_0 = \sin\theta_0\sin\varphi_0\)
- \(\mathrm{AF}_{N, d}\)
- 1D array factor of (19.3) with \(N\) elements at pitch \(d\)
- \(N_x,\ N_y\)
- elements along x and y
- \(d_x,\ d_y\)
- pitches along x and y, mm
- \(p,\ q\)
- replica (grating-lobe) orders
- \(u_{pq},\ v_{pq}\)
- centre of replica \((p, q)\)
- \(\lambda\)
- wavelength, mm
Steering moves the whole lattice by \((u_0, v_0)\); the window stays put. A grid is free of grating lobes for every steering direction inside a cone \(\sin\theta \le \sin\theta_{\max}\) if every replica stays outside the unit circle while the main lobe sweeps a disc of radius \(\sin\theta_{\max}\), that is, if every nonzero lattice vector is longer than \(1 + \sin\theta_{\max}\). For a rectangular grid the shortest is \(\lambda/\max(d_x, d_y)\). A triangular (hexagonal) grid with nearest-neighbour spacing \(d\), built as a staggered grid with alternate rows offset by \(d_x/2\) and row spacing \(d_y = (\sqrt{3}/2)\,d_x\), has a triangular replica lattice with six nearest replicas at \(2\lambda/(\sqrt{3}\,d)\) (centres at \(u_0 + p\lambda/d_x\), \(v_0 + (q - p/2)\lambda/d_y\)):
- \(\theta_{\max}\)
- half-angle of the steering cone (all azimuths)
- \(d\)
- nearest-neighbour spacing of the triangular grid, mm
- \(d_x,\ d_y,\ \lambda\)
- as in (19.7)
m19_matrix_gratinglobe_uv.m).
The cone condition is the worst case over azimuth. A square grid is weakest along its axes, where the replicas are nearest: at 0.7\(\lambda\) and \(\theta_0 = 30^{\circ}\), steering along x (\(\varphi_0 = 0\)) brings the (−1, 0) replica to \(u = -0.929\), inside the circle (0 dB isotropic, −11.5 dB with a soft-baffle element of width 0.9\(d\)); steering the same 30° along the diagonal (\(\varphi_0 = 45^{\circ}\)) leaves every replica outside (nearest at radius 1.132). With unequal pitches the larger one sets the limit: \(d_x = 0.5\lambda\), \(d_y = 0.8\lambda\) steered 30° along y puts a replica at \(v = -0.75\), −5.1 dB with the element factor. Steering in one plane only relaxes the other axis to the linear-array rule (\(d \approx \lambda\), lobes at endfire).
2D grating-lobe map in direction-cosine space
Exact formulaClosed-form array factor of an \(N_x \times N_y\) grid (separable Dirichlet kernels; staggered grids as the coherent sum of even and odd rows), uniform weights, far field, narrowband, evaluated on one sample per pixel over \(u, v \in [-2, 2]\). Optional element factor: soft-baffle square element of width 0.9 pitch, \(\operatorname{sinc}(w_x u/\lambda)\operatorname{sinc}(w_y v/\lambda)\cos\theta\)."λ/2 in both axes" is sufficient, not necessary, and it is defined for the worst azimuth. Quoting a single steering angle for a matrix probe without the azimuth hides the azimuth dependence: a square grid at 0.7\(\lambda\) steered 30° has a grating lobe along its axes and none along its diagonals. Quote the cone of (19.8), or draw the (u, v) map.
19.5Micro-beamforming: subarray grating lobes and the steering limit (4D TEE)
Micro-beamforming splits each beamforming delay into a fine part applied in the probe and a coarse part applied in the system. Elements are grouped into m × m subarrays. An ASIC under (or next to) the array amplifies each element, delays it by a small programmable amount, and sums the group onto one cable conductor; the system then beamforms the subarray outputs as if each were one large element. Savord and Solomon described a fully sampled matrix transducer for real-time 3D built this way (IEEE Ultrasonics Symposium 2003), and it is the architecture inside matrix TEE and transthoracic volume probes. In TEE it is not optional: the cable runs through a gastroscope, so the channel reduction must happen in the tip.
Write element n as subarray centre \(X_k\) plus local offset \(\xi_i\). The fine delays steer each subarray toward \(u_0 = \sin \theta_0\) (the pre-steer direction); the coarse delays steer the subarray centres toward the beam direction \(u_s\). The far-field pattern factorizes:
- \(X_k\)
- centre of subarray \(k\), mm
- \(\xi_i\)
- position of element \(i\) inside a subarray, mm
- \(u_s\)
- direction set by the system delays between subarrays
- \(u_0\)
- pre-steer direction of the in-probe (micro-beamformer) delays
- \(\mathrm{CAF},\ \mathrm{SF}\)
- coarse array factor and subarray factor
- \(P(u)\)
- far-field receive pattern of the micro-beamformed array (normalize by the element count)
- \(u,\ \lambda\)
- direction sine and wavelength, as in (19.3)
- \(k,\ i,\ j\)
- subarray index, element index within a subarray, imaginary unit
This one equation gives the whole error budget:
- On the pre-steer direction \((u_s = u_0)\), every coarse grating lobe lands on a null of the subarray factor and cancels exactly (narrowband). The micro-beamformed aperture is then equivalent to the fully sampled one.
- Off the pre-steer direction by \(\delta\), the main lobe is weighted by \(\mathrm{SF}(\delta)\) (a gain loss) and the grating lobes at \(u_s \pm \lambda /(md)\) are no longer on nulls. For 3 × 3 subarrays at \(\lambda /2\): \(\delta = 5^{\circ}\) costs 0.2 dB with lobes at −15 dB; \(\delta = 10^{\circ}\) costs 0.9 dB with a −8.3 dB lobe; \(\delta = 20^{\circ}\) and the lobe is as large as the main beam.
- Curvature inside a subarray is negligible. The quadratic (focusing) phase across a subarray of width md is \(\pi (md/2)^{2}/(\lambda R)\): 0.027 rad for \(3 \times \lambda /2\) at \(R = 20\) mm and 5 MHz. Only the direction each subarray looks matters. When focusing near the probe, outer subarrays see the focus from a different angle than the centre; if all subarrays share one pre-steer, the outer ones are effectively steered off by \(\delta_k \approx \arctan (X_k /R)\), and at F# 1 the edge sees 27°.
- Channel reduction is \(m^2\) (9 for 3 × 3, 16 for 4 × 4, 25 for 5 × 5); the subarray must stay small because the subarray pitch md sets where the coarse grating lobes sit.
The steering window, in closed form. The coarse array factor equals 1 at each of its replicas \(u_s + p\lambda/D\), \(D = md\), so the level of a coarse grating lobe relative to the main lobe is just the ratio of subarray-factor values there. For the nearest replica on the side toward the pre-steer direction the numerators of the two SF values have equal magnitude (they differ by a phase of \(\pi\)) and the ratio reduces to the denominators:
- \(\rho\)
- amplitude of the worst coarse (subarray) grating lobe relative to the main lobe, valid for \(0 \le \Delta u < \lambda/D\)
- \(\Delta u\)
- pre-steer error in direction sine, \(\sin\theta_s - \sin\theta_0\)
- \(D\)
- subarray pitch, mm
- \(m,\ d\)
- subarray size (m × m elements) and element pitch, mm
- \(\rho_{\max}\)
- allowed lobe amplitude (0.1 = −20 dB)
- \(\Delta u_{\max}\)
- half-width of the steering window around the pre-steer, in direction sine
- \(N,\ N_{\mathrm{cab}}\)
- elements per side of an \(N \times N\) matrix; system channels (cable conductors) after micro-beamforming
- \(\mathrm{SF},\ u_s,\ u_0,\ \lambda\)
- as in (19.9)
| Subarray (d = λ/2) | Cables, 48 × 48 | Coarse lobe spacing λ/D | Lobe 10° off pre-steer | Window, lobe ≤ −10 dB | Window, lobe ≤ −20 dB |
|---|---|---|---|---|---|
| 2 × 2 | 576 | 1.000 | −11.1 dB | ±11.2° | ±3.6° |
| 3 × 3 | 256 | 0.667 | −8.3 dB | ±8.5° | ±3.0° |
| 4 × 4 | 144 | 0.500 | −5.2 dB | ±6.6° | ±2.4° |
| 6 × 6 | 64 | 0.333 | +0.7 dB | ±4.5° | ±1.7° |
The trade-off. Cables fall as \(1/m^2\) but the steering window shrinks only as about \(\sin(\pi/m)\): from 2 × 2 to 4 × 4 the cable count drops fourfold while the −20 dB window narrows from ±3.6° to ±2.4° (broadside pre-steer, from m19_matrix_gratinglobe_uv.m). The window is per pre-steer setting, not a limit on where the probe can look: the fine delays are reprogrammed for each transmit event or receive-line group, so the real costs are (i) how many receive lines can be formed from one acquisition (all must lie within the window of the shared pre-steer), (ii) the delay range of the analog cells, and (iii) near-field focusing, where subarrays at the aperture edge see the focus from a different angle than the shared pre-steer. Covering ±45° in one axis at −20 dB with 3 × 3 takes 14 pre-steer zones. Larger \(m\) also moves the coarse lobes closer to the main lobe (\(\lambda/D\)), so the transmit beam suppresses them less in two-way imaging.
Micro-beamformer pattern: subarray factor × coarse array factor
Exact formulaDirect phasor sum over the 48 elements with fine (pre-steer) and coarse delays, plotted with the closed-form factors SF and CAF; far field, narrowband, ideal delays.| \(\delta = \theta_s - \theta_0\) (\(d = \lambda /2\)) | 2 × 2: loss / lobe (dB) | 3 × 3: loss / lobe (dB) | 4 × 4: loss / lobe (dB) |
|---|---|---|---|
| 0° | 0 / none | 0 / none | 0 / none |
| 5° | −0.08 / −17.2 | −0.22 / −15.2 | −0.41 / −12.9 |
| 10° | −0.33 / −11.1 | −0.88 / −8.3 | −1.69 / −5.2 |
| 15° | −0.74 / −7.3 | −2.03 / −3.6 | −4.00 / +0.6 |
| 20° | −1.32 / −4.5 | −3.73 / +0.4 | −7.76 / +6.4 |
Loss = \(\mathrm{SF}(\delta)\) on the main lobe; lobe = highest coarse grating lobe relative to the (reduced) main lobe, one-way receive, narrowband, from m19_microbeamforming.m (broadside \(\theta_0 = 0\)). Broadband pulses lower these lobes (Module 23), and in pulse-echo the transmit beam multiplies them, which is why a micro-beamformed receive aperture works well for one focused receive line per transmit and degrades for wide parallel (multiline) receive around a broad transmit.
What the 4D TEE literature reports
Commercial matrix TEE probes carry on the order of a few thousand elements in the tip. Published academic designs show the numbers concretely: a 32 × 32 PZT matrix on a front-end ASIC with 3 × 3 receive subarrays and 96 delay-and-sum subarray beamformers, a ninefold reduction in receive cables at 0.27 mW per channel (Chen et al., IEEE J. Solid-State Circuits 2017); its acoustic characterization reports 5.8 MHz centre frequency, a directly wired 8 × 8 transmit sub-aperture and ±37° pre-steering range (Daeichin et al., Ultrasound Med. Biol. 2018). Bera et al. (Phys. Med. Biol. 2018) built multiline 3D beamforming on such micro-beamformed data and report volume rates of 300 Hz with 25 transmit events and 44 Hz with 169; partitioned transmit/receive apertures with 4 × 4 receive subarrays reached up to 59 Hz (Ultrasound Med. Biol. 2018).
Three consequences for anyone processing matrix-TEE data. First, there are no per-element channel data: every algorithm that needs them (aberration correction by element-wise delay estimation, coherence factors computed over elements, sound-speed estimation from channel-data focusing) can only work on subarray outputs, a coarser and pre-steered aperture. Second, the receive beam quality varies across the volume with the distance from each subarray's pre-steer direction, so a phantom PSF measured on axis is not the PSF at the sector edge with parallel beams. Third, the per-channel ASIC power (sub-mW) times thousands of elements sets the tip temperature budget, which in turn caps transmit voltage, duty cycle and volume rate.
"The micro-beamformer limits the steering angle" is imprecise. Fine delays are programmable per beam, so a single receive line at 40° can be pre-steered to 40°. What is limited is the angular distance between the pre-steer direction and any beam formed from the same subarray data (parallel receive beams, retrospective beamforming), and the maximum fine delay the analog delay lines hold, \((m - 1)d \sin \theta_0 /c\) across the subarray per axis: 120 ns for \(3 \times \lambda /2\) at 37° and 5 MHz.
Matrix probes in practice
Three ways to wire a 2D aperture, and where each is used. Element counts are in the thousands for clinical matrix probes: a commercial adult cardiac transthoracic matrix probe (5–1 MHz) has about 3000 elements, a commercial adult matrix TEE probe (7–2 MHz) about 2500.
| Architecture | Elements → system channels | Beam quality | Where it is used |
|---|---|---|---|
| Fully sampled + micro-beamformer ASIC | \(N^2\) → \(N^2/m^2\) (2304 → 256 for 3 × 3) | full 2D focusing in Tx and Rx; subarray lobes outside the steering window (19.10); no per-element channel data | clinical 4D TEE and real-time 3D TTE, biplane imaging |
| Fully sampled, fully wired or multiplexed | \(N^2\) (1024) or \(N^2/M\) per firing | full channel data; volume rate ÷ M with multiplexing | research: 3D ultrafast imaging and volumetric ULM with 32 × 32 probes (Provost et al. 2014; Heiles et al., IEEE Trans. Med. Imaging 2019) |
| Sparse (random, spiral) | \(K\) of \(N^2\) (256) | full aperture, floor ≈ 1/K, sensitivity ∝ K | 3D with one 256-channel system (Ramalli et al. 2015) |
| Row-column (Section 19.6) | 2N (128 + 128) | one-way focusing per axis, edge ghosts | 3D Doppler and ULM with one system (Jensen et al., IEEE TUFFC 2020: 62 + 62 at 3 MHz) |
Why the ASIC sits in the handle or tip. Four budgets fail together without it: conductors (a gastroscope or a flexible cable carries a few hundred, not thousands), element loading (a 0.2 mm element of ≈ 1.8 pF facing 100–200 pF of cable loses 35–41 dB, (19.6), so the preamplifier must sit within millimetres), data rate (492 Gb/s raw for 1024 channels) and connector size. The price is power in the probe: the per-channel ASIC power, multiplied by thousands of elements, sets the surface-temperature budget and with it transmit voltage and volume rate.
Uses. 4D TEE for valves and structural-heart guidance; 3D echocardiography and simultaneous biplane views from one footprint; volumetric ULM, where a 2D image plane would integrate bubbles over the elevation slice (Module 31, Section 31.7): 32 × 32 matrices in the rat brain (Heiles et al. 2019) and in the coronary circulation (Demeulenaere et al., JACC Cardiovasc. Imaging 2022), and row-column arrays as the low-channel alternative. Two-way patterns of all these layouts, including sparse transmit/receive pairs, are coarray products (Module 23, coarray section).
19.6Row-column addressed arrays: N + N channels for an N × N aperture
Pattern the top electrode of a 2D plate into N rows and the bottom electrode into N columns. Each row is one long element along x, each column one long element along y, and the plate is addressed with 2N connections instead of \(N^2\) (256 instead of 16 384 for 128 + 128). The idea was assessed theoretically as a "crossed electrode" 2D array by Morton and Lockwood (IEEE Ultrasonics Symposium 2003) and built at scale as a 256 × 256 row-column array by Seo and Yen (IEEE TUFFC 2009). The standard scheme transmits on the rows and receives on the columns:
- Transmit: delaying the rows focuses (or steers) the beam in y only. Each row is uniform along x, so the transmit field is a fan focused in y and unfocused in x.
- Receive: delaying the columns focuses in x only.
- The two-way response is therefore separable and each dimension is focused once:
Row-column addressing: which strips fire, which listen, where the focus lies
SchematicTop view; 16 + 16 strips drawn for a 128 + 128 array at \(\lambda /2 = 0.154\) mm (5 MHz, 19.7 mm footprint). Delay bars and the delay readouts are exact geometric focusing delays (\(c = 1540\) m/s, strip centres); nothing here is a field computation.- \(T,\ R\)
- one-way transmit and receive patterns along the axis given
- \(x,\ y\)
- lateral coordinates along the row and column electrodes
- \(\mathrm{PSF}_{\mathrm{RCA}},\ \mathrm{PSF}_{\mathrm{2D}}\)
- focal-plane point-spread function of the row-column and of the fully addressed array
- \(T_x, R_x, T_y, R_y\)
- transmit and receive beam factors along x and y of the fully addressed array
Rasmussen, Christiansen, Thomsen and Jensen (IEEE TUFFC 2015, Part I) made the arrays practical for 3D imaging: synthetic transmit focusing in elevation with single-row emissions, dynamic receive focusing in azimuth, and line-element beamforming that models each strip as a line, not a point (point models distorted a wire phantom). Part II (Christiansen et al., same issue) built and measured a 62 + 62 element CMUT RCA with the roll-off integrated and a fractional bandwidth of about 100 %. Orthogonal plane-wave transmission (transmit plane waves steered in y from the rows, receive on the columns, then swap the roles and compound) brought RCAs to 4D ultrafast imaging (Flesch et al., Phys. Med. Biol. 2017), and RCAs are now a common route to 3D ULM and 3D Doppler with a single 256-channel system.
Focal-plane PSF: row-column versus fully addressed
Approx. modelFraunhofer focal-plane model: each axis factor is the DFT of its apodization, \(\mathrm{PSF}_{\mathrm{RCA}} = R(x)T(y)\), \(\mathrm{PSF}_{\mathrm{2D}} = (RT)(x)\,(RT)(y)\). Narrowband, paraxial, no edge waves (those are Demo 19.8).Edge waves and ghost echoes
A finite strip with uniform weighting radiates like three sources: the stationary point closest to the scatterer and the two ends, where the truncated aperture launches edge waves (the same edge waves that give a focused beam its far sidelobes, Module 23). In transmit-receive, three sources times three receivers give up to nine echoes per scatterer (Rasmussen et al. 2015); after beamforming the ones from the strip ends appear as ghost copies of bright targets. Apodizing along each strip removes them, but a strip has one electrical connection, so the weighting has to be built into the element itself. Rasmussen et al. did this with a roll-off region at each strip end, in which the effective weighting built into the element tapers over \(16\lambda\) and report the peak ghost reduced by 43 dB at (8, 3, 30) mm with the main lobe essentially unchanged; a plain Hann weighting along the strips also suppresses ghosts but attenuated the response at that position by 24 dB because off-centre points see the low-weight part of the strip.
- \(s(t)\)
- received echo signal
- \(p(t)\)
- two-way electromechanical pulse
- \(h_{\mathrm{row}},\ h_{\mathrm{col}}\)
- spatial impulse responses of the row and column strips
- \(a(x)\)
- apodization along the strip
- \(r(x)\)
- distance from the strip point to the field point, m
- \(c\)
- sound speed, m/s
- \(t,\ \delta(\cdot)\)
- time, s; Dirac delta
One row, one column, one scatterer: main echo and edge ghosts
SimulationSpatial impulse response of each strip computed in JS (4000 point sources with 1/r and the strip weight, binned at 250 MHz), convolved row ∗ column ∗ Gaussian pulse by FFT, envelope by analytic signal. Same code asm19_rca_beam.m.A row-column array is two orthogonal 1D arrays sharing one footprint. Everything about it follows from that: 1D channel count per dimension, 1D-like (one-way) focusing per dimension, a field of view equal to the footprint (rectilinear, unless a diverging lens or curvature widens it), and the edge effects of a 1D element whose elevation height is the full aperture.
19.7CMUT and PMUT: micromachined transducers
A capacitive micromachined ultrasonic transducer (CMUT) is a thin membrane suspended over a sealed gap of a few hundred nanometres, with electrodes on the membrane and the substrate. A DC bias pulls the membrane in; an AC signal on top of it vibrates the membrane (transmit), and membrane motion modulates the capacitance and hence the charge (receive). The parallel-plate model carries the essential physics (Haller & Khuri-Yakub, IEEE Ultrasonics Symposium 1994; Ladabaum et al., IEEE TUFFC 1998):
- \(k\)
- membrane spring constant, N/m
- \(x\)
- static deflection, m
- \(\varepsilon_0\)
- vacuum permittivity, F/m
- \(A\)
- electrode area, m²
- \(V\)
- bias voltage, V
- \(g_0\)
- initial gap, m
- \(k_{\mathrm{eff}}\)
- effective (spring-softened) stiffness, N/m
- \(V_{\mathrm{PI}}\)
- pull-in voltage, V
- \(\xi\)
- normalized deflection
- \(k_T^2\)
- electromechanical coupling coefficient
- \(f,\ f_0\)
- biased and unbiased resonance frequency, Hz
- \(V\)
- DC bias voltage, as in (19.13)
CMUT bias: displacement, coupling and resonance up to pull-in
Approx. modelLumped parallel-plate (piston) CMUT: spring k, gap \(g_0\), no dielectric layer or fringing; \(f_0\) from Kirchhoff clamped-plate theory in vacuum.Why CMUTs are broadband. The membrane's mechanical impedance per area near resonance is of order \(\omega \rho h\): for 1 µm of silicon at 10 MHz, \(2\pi \cdot 10^{7} \cdot 2.33 \times 10^{-3} \approx 0.15\) MRayl, a tenth of water's 1.5 MRayl. The water load dominates and damps the resonance (Q well below 1), so the bandwidth is set by the electrical and spring roll-offs and by higher membrane modes rather than by a mechanical Q; fractional bandwidths above 100 % have been reported in immersion (Oralkan et al., IEEE TUFFC 2002). No matching layer is needed because there is no high-impedance ceramic to match.
Collapse mode. Biasing beyond pull-in lets the membrane centre touch the insulated substrate; the free annulus then vibrates at a higher frequency with higher coupling and output pressure (Bayram et al., IEEE TUFFC 2003). Lowering the bias releases it only at a lower snap-back voltage (hysteresis). Charge trapping in the dielectric shifts the effective bias over time and is a classic CMUT reliability issue, together with the high DC bias and the nonlinearity of the electrostatic force (\(V^2\), which generates harmonics unless the AC drive is small compared with the bias).
PMUT. A piezoelectric micromachined ultrasonic transducer is a thin piezoelectric film (AlN, ScAlN or PZT) on a passive membrane, driven in flexure through the transverse (\(e_{31}\)) effect (Qiu et al., Sensors 2015). It needs no bias, has an impedance that suits low-voltage CMOS, and AlN is CMOS-process compatible; the price is lower effective coupling (a few percent for AlN films) and usually narrower bandwidth than a CMUT. Its resonance follows the same plate law, \(f \propto h/a^2\). Both CMUT-on-CMOS and PMUT-on-CMOS have reached commercial handheld 2D-array probes, the route where micromachining pays off most: thousands of elements bonded directly to the electronics that solve the channel problem.
This section is the array-architecture view of micromachined transducers: why they make dense 2D apertures and RCAs practical. Membrane mechanics beyond the piston model, collapse-mode design, charging, PMUT film stacks (AlN, ScAlN, PZT) and the piezo-materials comparison (PZT, single crystal, composites) are treated in Module 18.
| Technology | Coupling | Bandwidth (−6 dB) | Acoustic matching | Fabrication and integration | Typical use |
|---|---|---|---|---|---|
| PZT ceramic, diced | \(k_t \approx 0.5\) | ≈ 60–80 % with matching and backing | needs 1–3 matching layers (\(Z \approx 30\text{–}35\) MRayl) | dicing; hard to go below ~0.1 mm pitch in 2D; wire-out is the bottleneck | most 1D probes |
| 1-3 piezocomposite / single crystal | \(k_t \approx 0.6\text{–}0.8\) (composite, PMN-PT) | ≈ 80–100 % | lower Z, still matched | dice-and-fill; single crystal costlier and temperature sensitive | premium 1D, phased and matrix probes |
| CMUT | \(k_T^2 \to 1\) near pull-in (bias dependent) | > 100 % reported | none needed | lithographic, any element shape and pitch, CMOS integration; needs high DC bias; charging | wideband imaging, dense 2D, RCA (with bias-controlled apodization) |
| PMUT | few % (AlN), higher for PZT films | usually narrower than CMUT | none needed | lithographic, no bias, low-voltage CMOS drive | handheld 2D arrays, sensing, fingerprint, ranging |
Ranges are indicative and depend strongly on design; Modules 16 and 17 give the piezoelectric numbers in detail.
Probe connectors and cables
A conventional probe connects through a multi-pin connector (zero-insertion-force designs with a few hundred pins are common) and a 1.5–2.5 m bundle of micro-coax lines with capacitance of roughly 50–120 pF/m. The cable is a lumped capacitive load for 1D elements (Section 19.4), adds a delay and loss that the system calibrates out, and is often tuned with an inductor at either end (Module 16). For matrix probes the cable carries subarray outputs, digitized or multiplexed data, bias and control lines, and power for the ASIC, which is why matrix probe cables are designed together with the in-probe electronics rather than as passive wiring.
19.8Visual summary
Thirteen pictures that carry the module. Each card is a question to answer in five seconds, the answer with its number, and a figure computed from the formula or a direct sum.
19.9How experts think about it
An array designer sees three nested Fourier pairs and one wiring budget. The element is a small aperture whose transform is the acceptance cone; the array samples the aperture, so its transform repeats at \(\lambda /d\); a subarray is an aperture of apertures, so its transform multiplies a coarse lattice whose replicas it must null. The wiring budget (channels, cable capacitance, data rate, tip power) decides which of these structures the hardware can afford, and every architecture from 1.5D to row-column to micro-beamforming is a different compromise between how many independent delays exist and where they are applied.
The far field of a uniformly vibrating strip is the Fourier transform of its width, the same pair that makes an aperture's beam. The baffle sets the boundary condition around the strip: rigid gives the Rayleigh integral with no obliquity factor; pressure-release adds \(\cos \theta\). A 0.27 mm element at 5 MHz falls 6 dB at 43.5° (rigid) or 36.0° (soft); kerfed arrays usually measure closer to the soft curve.
An aperture edge at F# looks at the pixel from atan(1/(2F#)) off its normal. Once that exceeds the element's −6 dB angle, edge channels contribute less than half amplitude signal but full noise and clutter. Because \(w/\lambda\) grows with frequency, the limit is frequency dependent: 0.27 mm elements allow F# 0.44 at 3 MHz and need 1.05 at 7.5 MHz. Frequency-dependent F# (or apodization) is the consequence.
The array factor repeats every \(\lambda /d\) in \(\sin \theta\). Steering to \(\sin \theta_0\) moves the main lobe and its replicas together, so the nearest replica sits at \(\sin \theta_0 - \lambda /d\). It stays outside visible space (below −1) while \(\lambda /d\) > \(1 + \sin \theta_0\). A cardiac phased array steering ±45° at 3.5 MHz needs d ≤ 0.26 mm.
With \(d = \lambda\) the first replica of a broadside beam is at \(\sin \theta = \pm 1\), exactly where the soft-baffle element factor is zero. Steering spoils this quickly: at 20° the replica moves to −41.1°, where an element of width \(0.9\lambda\) still has −8.2 dB against −1.9 dB at 20°, a grating lobe only 6.3 dB below the main lobe. That is why linear-array compounding and steered Doppler use modest angles, and why pitch is reduced on probes intended for plane-wave steering.
Every element sees the steered beam's target at \(\theta_0\), so the beam's peak is \(E(\theta_0)\) times the broadside peak, on transmit and on receive. A \(\lambda /2\) soft-baffle element loses 4.9 dB one-way at 45°, about 10 dB round trip: sector edges in cardiac images are darker for this reason before any attenuation. Rigid-baffle numbers (−1.9 dB at 45°) are optimistic for real arrays.
The elevation beam is a line aperture of height H focused once, so the two-way −6 dB width at the focus is \(0.89\lambda F/H\), and the depth of field is only a few \(\lambda F\#^{2}\). But \(H^2 /(4\lambda F)\) is usually below 1–2, so the focal gain is weak, the narrowest slice sits shallower than F (here near 13 mm, 0.86 mm), and beyond the focus the slice grows almost linearly: 3.4 mm at 60 mm in this example. That growth is the slice-thickness artefact that fills cysts at depth.
Each class adds independent delays in elevation. Pairing rows symmetric about the centreline halves the channels but forces a symmetric delay profile: focusing yes, steering no. A row delay is one value across a wide row, a staircase approximating the focusing curve, so a few rows correct only the low-order phase and the lens still does most of the work. With 5 rows of 2 mm, the electronic focus keeps the slice between about 0.7 and 2.3 mm from 12 to 80 mm.
The pitch rule applies in x and y, so the element count grows with the square of the aperture in wavelengths. A 20 mm cardiac footprint at 3 MHz is 78 \(\lambda /2\) per side. Against a system with 128–256 channels and a probe cable of similar size, every 3D design must reduce channels by 10–100×: sparse layouts (K), micro-beamforming (\(m^2\)), multiplexing (M), or row-column addressing (2N).
At a sidelobe direction the K element phasors have effectively random phases, so their sum is a random walk: mean power ≈ \(K(N^2 - K)/(N^2 - 1)\) against a peak of \(K^2\). Simulation of 20 draws on a \(32 \times 32\) \(\lambda/2\) grid gives −21.6, −25.0, −29.2 dB for \(K = 128\), 256, 512 versus −21.6, −25.3, −30.1 dB predicted. The highest sidelobe of one draw sits 10–16 dB above the mean, so random 2D arrays need independent transmit and receive layouts to reach a usable two-way floor.
\(C_e = \varepsilon_0 \varepsilon_r A/t\) scales with area. On receive the element's open-circuit voltage divides across \(C_e\) and the cable capacitance, so \(V_{\mathrm{out}} /V_{\mathrm{open}} \approx C_e /(C_e + C_c)\). The loss falls on the signal before the first amplifier, so the system noise figure rises by the same amount. A preamplifier or subarray beamformer in the probe, within millimetres of the element, is the only fix.
Subarray centres at pitch md form a coarse array with grating lobes every \(\lambda /(md)\) in u (0.67 for \(3 \times \lambda /2\)). The subarray factor, steered to \(u_0\), has nulls at the same spacing. When the beam is formed in the pre-steer direction, each coarse grating lobe lands on a null and vanishes: the pattern equals the fully sampled one. This is the reason micro-beamforming preserves image quality at a channel reduction of \(m^2\).
Off the pre-steer direction by \(\delta\), the main lobe is weighted by \(\mathrm{SF}(\delta)\) and the coarse grating lobe at \(u_s - \lambda /(md)\) is weighted by \(\mathrm{SF}(\delta - \lambda /(md))\), no longer a null. For \(m = 3\), \(d = \lambda /2\) the lobe reaches the main-lobe level near \(\delta = 20^{\circ}\). Parallel receive beams spread around a broad transmit therefore suffer at the edges of each multiline group, and retrospective re-steering of stored subarray data is limited to a few degrees.
The focusing phase across a subarray of width md, beyond the linear (steering) term, is the Fresnel term \(\pi (md/2)^{2}/(\lambda R)\). For \(3 \times \lambda /2\) at 5 MHz it is 0.11 rad at 5 mm and 0.027 rad at 20 mm, far below the \(\pi /4\) tolerance; a linear (pre-steer) fine delay is enough. Large subarrays break this in the near field: 8 elements reach 0.77 rad at 5 mm. What does matter is that, near the probe, outer subarrays see the focus at a different angle than the centre one.
Rows (strips along x) can only delay in y, columns only in x. Transmit on rows, receive on columns: \(\mathrm{PSF} = T(y)R(x)\). Along the x axis \(T = 1\), so the response is the one-way receive sinc; along the diagonal both factors are in their sidelobes, giving −26.5 dB, while a fully addressed array focused twice in both would give −53 dB there. Apodization helps but is applied once per dimension: Hann gives −31.5 dB on axis, against −63 dB for a fully addressed array.
A uniform strip's impulse response at a point has an onset (from the closest point of the strip) and two steps (where the strip ends). Each step convolved with the pulse is an edge echo; transmit and receive strips give 3 × 3 combinations. In the single-pair simulation the uniform strips give edge echoes near −22, −27 and −30 dB; a \(16\lambda\) Hann roll-off added beyond the strip ends brings the highest below −45 dB, with the main echo unchanged because the scatterer projects onto the flat part of the strip.
The electrostatic force \(\varepsilon_0 AV^2 /(2(g_0 - x)^{2})\) has a gradient \(\varepsilon_0 AV^2 /(g_0 - x)^{3}\) that acts as a negative spring. Using the equilibrium, its ratio to k is \(2x/(g_0 - x) = k_T^2\), which reaches 1 at \(x = g_0 /3\), \(V_{\mathrm{PI}} = \sqrt{8kg_0^3 /(27\varepsilon_0 A)}\). Transduction gain grows with bias, so CMUTs run at 70–90 % of pull-in, where a small bias drift changes sensitivity and frequency noticeably.
Near resonance the membrane's mechanical impedance per area is of order \(\omega \rho h\). When that is much smaller than the radiation impedance \(\rho c\) of the medium, the medium dominates the dynamics and the resonance is heavily damped: the transducer behaves like a stiffness-controlled source loaded by water over a wide band. A bulk ceramic plate is the opposite case (34 MRayl versus 1.5) and needs matching layers to reach 60–80 %. Thicker or denser membranes, or air, push a CMUT toward narrowband behaviour.
A 128-channel 1D system already moves 61 Gb/s of raw RF. A fully wired 32 × 32 matrix moves 8× that, continuously, which is why fully wired 3D research platforms are multi-system installations. Micro-beamforming divides by \(m^2\), an RCA scales as 2N, sparse arrays as K. In-probe digitization with serial links and data compression is the next step for large matrices.
Steering is a linear phase in both coordinates, so the pattern is the 1D array factor in each axis, shifted to \((u_0, v_0)\), and it repeats on the reciprocal lattice (19.7). \(\lvert\mathrm{AF}\rvert = 1\) at every replica, so a visible replica is a full-height lobe weighted only by the element factor. A square 0.7\(\lambda\) grid steered 30° along x puts the (−1, 0) replica at \(u = 0.5 - 1.43 = -0.93\); along the diagonal the nearest replicas sit at radius 1.13, outside.
The no-lobe condition for a steering cone is that every nonzero replica-lattice vector is longer than \(1 + \sin\theta_{\max}\) (19.8). A square grid's shortest vector is \(\lambda/d\); a triangular grid of spacing \(d\) has six at \(2\lambda/(\sqrt{3}\,d)\), packed more uniformly around the circle. At equal element density a 0.6\(\lambda\) square grid steers a 41.8° cone, the equivalent triangular grid (0.645\(\lambda\)) 52.3°.
The coarse array factor has replicas every \(\lambda/D\) (\(D = md\)) and equals 1 on each, so the lobe level is the subarray factor there divided by its value on the main lobe; the exact ratio is (19.10). With \(d = \lambda/2\): 2 × 2 / 3 × 3 / 4 × 4 keep −20 dB within ±3.6° / ±3.0° / ±2.4° of the pre-steer, while the cable count of a 48 × 48 matrix drops from 576 to 256 to 144. Cables fall as \(1/m^2\), the window only as about \(\sin(\pi/m)\).
19.10Cheat sheet
| Concept | Formula / number | Ultrasound use |
|---|---|---|
| Element directivity | \(\operatorname{sinc} (w \sin \theta /\lambda)\) (rigid), × \(\cos \theta\) (soft) | acceptance angle, element factor of every pattern |
| Minimum F-number | \(F\#_{\min} = 1/(2 \tan \theta_{-6\,\mathrm{dB}})\) | receive aperture growth, frequency-dependent F# |
| Grating lobes | \(\sin \theta_g = \sin \theta_0 \pm m\lambda /d\) | pitch choice, steering limits |
| Grating-lobe-free pitch | \(d \le \lambda /(1 + \sin \theta_{\mathrm{max}})\) | phased \(\lambda /2\), linear ≈ \(\lambda\) |
| Steering loss | \(E(\theta_0)\), twice in pulse-echo | sector-edge brightness, lateral gain |
| Elevation slice at focus | ≈ \(0.89 \lambda F/H\) (two-way −6 dB), \(N_F = H^2 /(4\lambda F)\) | slice-thickness artefact, QUS partial volume |
| 1.25D / 1.5D / 1.75D | switched aperture / + symmetric dynamic focus / + independent rows | elevation control in 1D-format probes |
| 2D element count | \((2D/\lambda)^{2}\); 32 × 32 = 1024 | channel-reduction requirement |
| Random sparse floor | \((N^2 - K)/(K(N^2 - 1)) \approx 1/K\) | sparse 2D layouts, spiral arrays |
| Cable divider | \(C_e /(C_e + C_c)\), \(C_e = \varepsilon_0 \varepsilon_r A/t\) | why 2D needs in-probe electronics |
| Micro-beamformer pattern | \(\mathrm{CAF}(u - u_s) \cdot \mathrm{SF}(u - u_0)\), coarse lobes at \(u_s \pm \lambda /(md)\) | 4D TEE, matrix TTE, multiline limits |
| Subarray curvature error | \(\pi (md/2)^{2}/(\lambda R)\) | fine delays can be linear |
| 2D grating lobes | replicas at \((u_0 + p\lambda/d_x,\ v_0 + q\lambda/d_y)\); visible if \(u^2 + v^2 \le 1\) | matrix-probe pitch, steering in azimuth and elevation |
| No-lobe steering cone | square \(d \le \lambda/(1 + \sin\theta_{\max})\); triangular \(d \le 1.155\,\lambda/(1 + \sin\theta_{\max})\) | 2D pitch, hexagonal layouts (13 % fewer elements) |
| Subarray grating lobe and window | \(\rho = \sin(\pi d\Delta u/\lambda)/\sin(\pi/m - \pi d\Delta u/\lambda)\); 3 × 3 at λ/2: ±3.0° for −20 dB | micro-beamformer pre-steer zones, parallel receive beams |
| RCA PSF | T(y) R(x); 2N channels | 3D ULM and Doppler with one system |
| CMUT pull-in | \(x = g_0 /3\), \(V_{\mathrm{PI}} = \sqrt{8kg_0^3 /(27\varepsilon_0 A)}\) | bias point, collapse mode |
| CMUT coupling and frequency | \(k_T^2 = 2\xi /(1 - \xi)\), \(f/f_0 = \sqrt{(1 - 3\xi)/(1 - \xi)}\) | bias-dependent sensitivity and centre frequency |
| Plate resonance | \(f_0 = (10.22/2\pi a^2)\sqrt{D/\rho h} \propto h/a^2\) | CMUT/PMUT cell design |
| Data rate | channels × \(f_s\) × bits | architecture choice, in-probe digitization |
19.11Interview and qualifying-exam questions
I1Why is a phased array pitched at \(\lambda /2\) and a linear array at about \(\lambda\)? · screen
Grating lobes sit at \(\sin \theta_0 \pm \lambda /d\). A phased array steers the whole aperture over ±45° or more, so it needs \(d \le \lambda /(1 + \sin \theta_{\mathrm{max}})\): \(0.59\lambda\) for 45°, \(\lambda /2\) for a full sector. A linear array translates an unsteered sub-aperture; with \(d = \lambda\) the first replica is at ±90°, where the element factor is zero, so it is harmless. Follow-up: "what happens when you steer the linear array 20° for compounding?" The lobe enters at −41°, about 6 dB below the main lobe narrowband; broadband pulses and the transmit/receive product lower it further, but that is why linear-array steering stays modest.
I2Define 1.25D, 1.5D and 1.75D arrays precisely. · screen
All have several rows in elevation. 1.25D: the elevation aperture is switched (outer rows added with depth), focus fixed by the lens. 1.5D: aperture, apodization and focus are dynamic, but rows are paired symmetrically about the centreline, so no elevation steering; channels N(R + 1)/2. 1.75D: rows independent, so the delay profile can be asymmetric and the beam can steer a few degrees; channels NR. 2D: steering in elevation comparable to azimuth. Follow-up: "why does 1.5D help QUS?" Thinner and more uniform slice over depth means less partial-volume and a diffraction term that changes less with depth, but switching steps must be matched in the reference data.
I3What is the element factor, and how does it limit the receive F-number? · screen
The far-field directivity of one element: \(\operatorname{sinc} (w \sin \theta /\lambda)\) for a rigid baffle, times \(\cos \theta\) for a soft baffle, which matches kerfed arrays better. Edge elements of an aperture at F# see the pixel at atan(1/(2F#)); if that exceeds the −6 dB angle they add noise and clutter faster than signal. \(F\#_{\min} = 1/(2 \tan \theta_{-6\,\mathrm{dB}})\): 0.69 for 0.27 mm elements at 5 MHz, 1.05 at 7.5 MHz. Follow-up: "so what F# should the beamformer use for a broadband pulse?" A frequency-dependent one, or apodization based on element directivity, because the acceptance cone is twice as wide at the low band edge as at the high one.
I4You must design a 3D TEE probe with a few thousand elements, but the cable carries about 100 conductors. Walk through the options. · onsite
Required reduction ≈ 30×. Fully wired is impossible through a gastroscope. Sparse: keeps the aperture with \(K \approx 100\) elements but the floor is ≈ −20 dB one-way and sensitivity drops by K/N; unacceptable for cardiac contrast. RCA: 2N lines (a 64 × 64 aperture in 128 lines) but one-way focusing per dimension and a rectilinear field of view, a poor fit for a sector through a small window. Micro-beamforming: subarrays of 5 × 5 to 6 × 6 cut channels 25–36× with full sensitivity, at the cost of an ASIC in the tip (power ≈ sub-mW per element against a temperature limit), fine delays with limited range, and pre-steering limits on multiline. That is why matrix TEE uses micro-beamforming. Follow-up: "how do you transmit?" Pulsers in the ASIC with per-element delays, or a smaller directly wired transmit sub-aperture as in the 32 × 32 academic designs.
I5Derive the micro-beamformer pattern and say where its errors come from. · onsite
Element position = subarray centre \(X_k\) + offset \(\xi_i\). Fine delays steer to \(u_0\), coarse delays steer centres to \(u_s\): \(P(u) = \mathrm{CAF}(u - u_s) \cdot \mathrm{SF}(u - u_0)\). CAF has grating lobes at \(u_s \pm \lambda /(md)\); SF has nulls at \(u_0 \pm \lambda /(md)\). Equal steering cancels the lobes. Errors: (1) \(\delta = \theta_s - \theta_0 \ne 0\) (parallel beams, near-field focusing with shared pre-steer): gain \(\mathrm{SF}(\delta)\) and lobes \(\mathrm{SF}(\delta - \lambda /(md))\); 3 × 3 at \(\lambda /2\): −0.9 dB and −8 dB lobe at 10°. (2) Curvature inside the subarray: \(\pi (md/2)^{2}/(\lambda R)\), negligible for small m beyond a few mm. (3) Fine-delay range and quantization, and channel gain mismatch in the ASIC. Follow-up: "why do grating lobes matter less in pulse-echo?" The transmit beam multiplies them; they hurt most with broad transmits and many parallel receive beams.
I6How does a row-column array work, what is its PSF, and what are the ghosts? · onsite
Top electrodes in rows, bottom in columns: 2N connections for an N × N footprint. Transmit on rows focuses in y only, receive on columns focuses in x only, so \(\mathrm{PSF} = T(y)R(x)\): one-way per dimension, −13.3 dB axis sidelobes (uniform) and 1.21 \(\lambda\)F# width instead of −26.5 dB and 0.89 \(\lambda\)F#. Each strip acts as three sources (the closest point and two ends), so a scatterer gives up to nine echoes; the end contributions beamform into ghosts (the strongest edge echo is −26 dB in Rasmussen et al.'s single row/column simulation, their Fig. 4). Fix: weighting built into the strip ends (roll-off apodization), which keeps the centre at unit weight; Hann along the whole strip also works but kills off-centre sensitivity. Follow-up: "how do you get high volume rates?" Orthogonal plane waves: rows transmit tilted plane waves, columns receive, then swap, and compound.
I7A random sparse 2D array uses 256 of 1024 positions. Predict its sidelobes and say how you would improve it. · onsite
Mean sidelobe power ≈ \((N^2 - K)/(K(N^2 - 1)) = -25.3\) dB; the peak sidelobe of a draw is 10–15 dB higher, near −10 to −15 dB, comparable to a uniform aperture's −13 dB but everywhere. Improvements: independent transmit and receive layouts so the two-way floor multiplies (or vernier/coarray designs with no gaps), density tapering (spirals) to apodize the floor, optimization of the layout, broadband pulses which decorrelate the random sum across frequency. Follow-up: "what does thinning cost besides sidelobes?" Receive \(\mathrm{SNR} \propto K\) and transmitted energy ∝ K: −6 dB each for \(K = N^2 /4\).
I8Why does a CMUT need a DC bias, and what happens at pull-in? · onsite
Electrostatic force ∝ \(V^2\): without bias an AC drive produces force at 2f and the receive sensitivity \((\partial Q/\partial x \propto V)\) is zero. The bias linearizes transmit and sets the receive gain. The bias also softens the spring: \(k_{\mathrm{eff}} = k(1 - 2x/(g_0 - x))\), zero at \(x = g_0 /3\), the pull-in voltage \(\sqrt{8kg_0^3 /(27\varepsilon_0 A)}\). Approaching it, \(k_T^2 \to 1\) and the resonance drops (0.75 \(f_0\) at 0.9 \(V_{\mathrm{PI}}\)). Beyond it the membrane collapses onto the insulator; collapse-mode operation gives higher coupling and pressure with hysteresis. Follow-up: "reliability issues?" Dielectric charging shifts the effective bias, high DC voltage in the patient-applied part, and nonlinearity at large AC drive.
I9Estimate the receive loss of connecting one 2D element directly to a 2 m cable. · screen
0.2 × 0.2 mm, 0.3 mm thick, \(\varepsilon_r^S \approx 1500\): \(C_e = 8.85 \times 10^{-12} \cdot 1500\) \(\cdot\, 4 \times 10^{-8}/3 \times 10^{-4} \approx 1.8\) pF. Cable ≈ 75–100 pF/m × 2 m ≈ 150–200 pF. Divider \(C_e /(C_e + C_c) \approx 0.009\text{–}0.012\), −39 to −41 dB before the first amplifier. A 1D element of 60 pF loses ≈ 11–13 dB. Follow-up: "and with a preamp in the handle?" The element then sees only a few pF of trace and input capacitance, the loss drops to a few dB, and the cable is driven from a low impedance.
I10You want 3D ULM in a rat brain with one 256-channel system. Which array architecture, and what do you give up? · research
Options: (a) RCA 128 + 128 with orthogonal plane waves: full footprint and kHz volume rates, but one-way focusing per dimension, cross-shaped PSF and edge ghosts; ULM localizes microbubbles to a fraction of the PSF, so a separable but larger PSF mainly costs SNR and increases overlap between bubbles, and ghosts must be suppressed (roll-off apodization, ghost-aware tracking). (b) 256-element sparse (spiral) array: true 2D focusing, low channel count, but low sensitivity \((K = 256)\) and a high clutter floor, which raises false detections. (c) Multiplexed 1024-element matrix: four firings per volume, motion between them. A strong answer quantifies: localization precision scales as PSF width / \(\sqrt{\mathrm{SNR}}\) with SNR as a power ratio (Module 12), so compare width × \(\mathrm{SNR}^{-1/2}\) across options at the same volume rate. Follow-up: "how do you validate localization in 3D?" Microchannel or wire phantoms with known geometry, and Fourier ring/shell correlation on split datasets.
I11What is crosstalk in an array, how does it show up, and how is it measured? · onsite
Coupling of one element's drive into its neighbours: mechanical (kerf filler, backing, matching layers), guided waves in the lens and at the lens–tissue interface, and electrical (capacitive coupling in flex and cable). It widens the effective element, so the measured directivity is narrower than sinc predicts; guided modes add lobes or notches at specific angles and frequencies; it also adds a correlated component to neighbouring channels that biases coherence-based measures. Measurement: drive one element, record neighbours electrically in a water tank or measure surface velocity with a laser vibrometer; report nearest-neighbour levels in dB versus frequency. Follow-up: "design countermeasures?" Dice through the matching layers, soft kerf filler, sub-dicing, lens and matching-layer materials with high attenuation for the guided modes.
I12A square matrix at 0.6λ pitch must steer a 40° cone in every azimuth. Any grating lobes? Would a hexagonal grid help? · onsite
Replicas sit at \(\lambda/d = 1.667\) from the main lobe along the axes; the cone is lobe-free while \(1.667 \ge 1 + \sin\theta_{\max}\), i.e. up to 41.8°, so 40° passes with a thin margin (skirts of the nearest replica approach the edge at 40° along an axis). A triangular grid with the same element density has spacing \(0.6\sqrt{2/\sqrt{3}} = 0.645\lambda\) and six replicas at \(2\lambda/(\sqrt{3}\cdot 0.645\lambda) = 1.79\): lobe-free to 52.3°. Equivalently, for the 40° cone it allows 0.70\(\lambda\) spacing against 0.61\(\lambda\) for the square grid, 13 % fewer elements, or the same count over a larger aperture. Follow-up: "why are most matrix probes still rectangular?" Dicing, interconnect to a rectangular ASIC cell grid, and the fact that the micro-beamformer, not the element pitch, usually sets the usable steering per acquisition.
I13A 4D TEE probe with 3 × 3 micro-beamforming at λ/2 forms 16 parallel receive lines across ±20° around one pre-steer. What do you expect, and how do you fix it? · research
Lines at 20° from the pre-steer carry a subarray grating lobe at +0.4 dB relative to their own main lobe, which is itself 3.7 dB down; the −20 dB window is only ±3.0°, the −10 dB window ±8.5° (19.10). The outer lines show ghost copies of bright structures displaced by \(\lambda/D = 0.67\) in \(u\), partly suppressed by the transmit beam in two-way. Fixes: narrow the fan of lines per pre-steer (more transmit events, or one pre-steer zone per group of lines), reprogram fine delays per zone (14 zones cover ±45° per axis at −20 dB), use 2 × 2 subarrays if the cable budget allows (window ±3.6° at −20 dB), or broaden the transmit only as far as the window. Follow-up: "can retrospective beamforming of the subarray data fix it?" No: the lobe is baked into the analog sum; only the coarse lattice can be re-steered.
19.12MATLAB lab
Base MATLAB only (no toolboxes); each script runs as-is in MATLAB R2019b+ and GNU Octave 8. Paste into the editor and press Run.
m19_element_directivity.mElement directivity (rigid, soft), −6 dB angles and \(F\#_{\min}\) versus width and frequency; steered array pattern with grating lobes · change w, f, pitch, steering · runtime ≈ 1 s
%% m19_element_directivity.m -- element factor, acceptance angle, F#min, and array pattern = element x array factor
% Purpose : (1) directivity of a strip element of width w: rigid baffle sinc(w sin(th)/lambda),
% soft baffle sinc(...)*cos(th). Find the -6 dB half-angle by bisection and the
% minimum useful F-number F#min = 1/(2 tan th6) for several widths and frequencies.
% (2) steered array pattern P(th) = E(th) * AF(sin th - sin th0) for a linear array
% (d = lambda) and a phased array (d = lambda/2): grating-lobe angles and levels.
% Change : widths w_mm, frequencies f_MHz, N, pitch, steering angles.
% Expect : w = 0.27 mm at 5 MHz: 43.5 deg rigid / 36.0 deg soft, F#min 0.53 / 0.69;
% at 7.5 MHz 27.3 / 25.4 deg, F#min 0.97 / 1.05; at 3 MHz the rigid model never
% reaches -6 dB, soft 48.9 deg (F#min 0.44).
% Linear d = lambda, w = 0.9d, steered 20 deg: main-lobe loss -1.9 dB, grating lobe
% at -41.1 deg, -6.3 dB re main. Phased d = lambda/2 at 45 deg: no grating lobe,
% main-lobe loss -4.5 dB (w = 0.45 lambda, soft).
% Base MATLAB only; runs in MATLAB R2019b+ and GNU Octave 8.
clear; close all; rng(1);
c = 1540; % m/s
sincf = @(x) (abs(x) < 1e-12) + (abs(x) >= 1e-12) .* sin(pi*x) ./ (pi*x + (abs(x) < 1e-12));
Erig = @(th, wl) abs(sincf(wl*sin(th))); % rigid baffle, wl = w/lambda
Esoft = @(th, wl) abs(sincf(wl*sin(th))) .* cos(th); % soft baffle
%% (1) -6 dB acceptance angle and F#min
w_mm = [0.27 0.27 0.27 0.154 0.30];
f_MHz = [3 5 7.5 5 2.5 ];
fprintf(' w (mm) f (MHz) w/lam th6 rigid th6 soft F#min rigid F#min soft\n');
for k = 1:numel(w_mm)
lam = c/(f_MHz(k)*1e6)*1e3; wl = w_mm(k)/lam; th6 = [90 90];
for b = 1:2
if b == 1, E = @(t) Erig(t, wl); else, E = @(t) Esoft(t, wl); end
if E(pi/2 - 1e-9) < 0.5
lo = 1e-6; hi = pi/2 - 1e-9;
for it = 1:60, mid = (lo + hi)/2; if E(mid) > 0.5, lo = mid; else, hi = mid; end, end
th6(b) = (lo + hi)/2*180/pi;
end
end
Fm = 1 ./ (2*tan(th6*pi/180)); Fm(th6 >= 89.99) = 0;
fprintf(' %6.3f %6.1f %6.3f %8.1f %8.1f %10.2f %10.2f\n', w_mm(k), f_MHz(k), wl, th6(1), th6(2), Fm(1), Fm(2));
end
th = linspace(-pi/2, pi/2, 1801);
figure('Name', 'Element directivity');
cols = {'b', 'r', 'k'}; fl = [3 5 7.5];
for k = 1:3
lam = c/(fl(k)*1e6)*1e3; wl = 0.27/lam;
plot(th*180/pi, 20*log10(max(Erig(th, wl), 1e-3)), [cols{k} '--']); hold on;
plot(th*180/pi, 20*log10(max(Esoft(th, wl), 1e-3)), cols{k}, 'LineWidth', 1.5);
end
plot([-90 90], [-6 -6], 'k:'); ylim([-40 0]); xlim([-90 90]); grid on;
xlabel('angle \theta (deg)'); ylabel('directivity (dB)');
title('w = 0.27 mm at 3 / 5 / 7.5 MHz (dashed rigid, solid soft)');
%% (2) Steered array pattern: element factor x array factor
N = 64; u = sin(th);
AF = @(u, dl) abs(sum(exp(1i*2*pi*dl*((0:N-1).' - (N-1)/2)*u), 1)) / N; % dl = d/lambda
cases = {'linear d = lambda, 20 deg', 1.0, 20; 'linear d = lambda, 0 deg', 1.0, 0; 'phased d = lambda/2, 45 deg', 0.5, 45};
figure('Name', 'Array pattern');
for k = 1:size(cases, 1)
dl = cases{k, 2}; th0 = cases{k, 3}*pi/180; wl = 0.9*dl;
P = AF(u - sin(th0), dl) .* Esoft(th, wl);
main = Esoft(th0, wl);
fprintf('\n%s: main-lobe loss E(th0) = %.2f dB\n', cases{k, 1}, 20*log10(main));
found = 0;
for m = [-3 -2 -1 1 2 3]
s = sin(th0) + m/dl;
if abs(s) <= 1
tg = asin(s); found = 1;
Eg = max(Esoft(tg, wl), 1e-5);
fprintf(' grating lobe m = %+d at %.1f deg, %.1f dB re main (element factor %.1f dB; -100 = endfire null)\n', ...
m, tg*180/pi, 20*log10(Eg/main), 20*log10(Eg));
end
end
if ~found, fprintf(' no grating lobe in visible space\n'); end
subplot(3, 1, k); plot(th*180/pi, 20*log10(max(P, 1e-4)), 'b'); hold on;
plot(th*180/pi, 20*log10(max(Esoft(th, wl), 1e-4)), 'r--');
ylim([-50 0]); xlim([-90 90]); grid on; ylabel('dB'); title(cases{k, 1});
end
xlabel('angle \theta (deg)');
What to look for: the table prints 43.5° / 36.0° and \(F\#_{\min} 0.53 / 0.69\) for 0.27 mm at 5 MHz; the linear-array case at 20° prints the grating lobe at −41.1° and −6.3 dB relative to the main lobe.
m19_sparse_2d_array.m\(32 \times 32\) \(\lambda/2\) matrix: full, periodic and random sparse layouts; 2D beam pattern by FFT; mean sidelobe versus the 1/K prediction; off-grid random, Fermat and density-tapered spiral layouts by direct sum · change K, number of draws, spiral taper · runtime ≈ 4 s
%% m19_sparse_2d_array.m -- 2D matrix array: full, periodic and random sparse layouts
% Purpose : narrowband far-field pattern of a 32 x 32 lambda/2 matrix by 2D FFT, in sine space
% (u, v) = (sin th cos phi, sin th sin phi). Compares the fully populated aperture, a
% periodic layout (every 2nd element in x and y) and random layouts with K elements.
% For random layouts the mean sidelobe power relative to the peak is predicted by the
% random-walk formula (N^2 - K)/(K (N^2 - 1)) ~ 1/K.
% Change : K values, number of random draws, pad size P; spiral taper wfun, aperture R.
% Expect : full PSL -13.3 dB (rect, along the axes; -13.4 on this FFT grid); periodic every-2nd: grating lobes
% at 0 dB at endfire (|u| = 1), and at u = -0.5 when steered to u0 = 0.5;
% random K = 128 / 256 / 512 (20 draws): mean sidelobe about -21.6 / -25.0 / -29.2 dB vs
% -21.6 / -25.3 / -30.1 dB predicted; peak sidelobe of a single draw about -9 to -15 dB.
% Channel count of the full aperture: 1024; data rate 1024 x 40 MHz x 12 bit = 492 Gb/s.
% Off-grid layouts, 256 elements on a 10 mm aperture at 5 MHz (direct sum): random on a 64 x 64
% lambda/2 grid, Fermat spiral, density-tapered spiral: mean sidelobe about -24.4 / -24.8 / -24.4 dB
% (1/K = -24.1 dB), PSL -15.3 / -13.8 / -15.1 dB, -6 dB main-lobe width 0.037 / 0.043 / 0.051 in u.
% Base MATLAB only; runs in MATLAB R2019b+ and GNU Octave 8.
clear; close all; rng(1);
N = 32; P = 256; % elements per side, FFT size
fprintf('Full matrix: %d elements; raw data %.0f Gb/s at 40 MHz, 12 bit\n', N^2, N^2*40e6*12/1e9);
uu = ((0:P-1) - P/2) / P * 2; % u for d = lambda/2: u = (lambda/d) f = 2 f
[U, V] = meshgrid(uu, uu);
vis = (U.^2 + V.^2) <= 1; % visible region
ml = 2/N; % first null of the full aperture (u = lambda/(N d))
main = (abs(U) < ml) & (abs(V) < ml);
side = vis & ~main;
pat = @(mask) fftshift(abs(fft2(mask, P, P))); % |array factor|, unnormalized
%% Full and periodic layouts
A = pat(ones(N)); A = A / max(A(:));
fprintf('full aperture : PSL %6.1f dB, mean sidelobe %6.1f dB\n', 20*log10(max(A(side))), 10*log10(mean(A(side).^2)));
mp = zeros(N); mp(1:2:end, 1:2:end) = 1;
Ap = pat(mp); Ap = Ap / max(Ap(:));
fprintf('periodic every 2nd : %d elements, highest lobe outside main %5.1f dB (grating lobes at endfire, |u| = 1)\n', sum(mp(:)), 20*log10(max(Ap(side))));
u0 = 0.5; ramp = repmat(exp(1i*pi*u0*(0:N-1)), N, 1); % steer to u0 along x (d = lambda/2: phase pi u0 per element)
Aps = pat(mp .* ramp); Aps = Aps / max(Aps(:));
sides = vis & ~((abs(U - u0) < ml) & (abs(V) < ml));
[~, ig] = max(Aps(:) .* sides(:));
fprintf('periodic, steered u0 = %.1f: highest lobe %5.1f dB at u = %.2f (grating lobe at u0 - 1)\n', u0, 20*log10(Aps(ig)), U(ig));
%% Random layouts
Ks = [128 256 512]; nd = 20;
fprintf('\n K mean SL (sim) predicted PSL mean (min..max)\n');
for K = Ks
msl = zeros(1, nd); psl = zeros(1, nd);
for t = 1:nd
m = zeros(N); idx = randperm(N^2); m(idx(1:K)) = 1;
Ar = pat(m); Ar = Ar / max(Ar(:));
msl(t) = 10*log10(mean(Ar(side).^2)); psl(t) = 20*log10(max(Ar(side)));
if K == 256 && t == 1, m256 = m; A256 = Ar; end
end
fprintf('%5d %6.1f %6.1f %5.1f (%5.1f..%5.1f)\n', K, mean(msl), 10*log10((N^2 - K)/(K*(N^2 - 1))), mean(psl), min(psl), max(psl));
end
%% Off-grid layouts with 256 elements on a 10 mm aperture (same layouts as the page drawing)
% Direct phasor sum (positions are not on a grid, so no FFT): P(u,v) = sum exp(j 2 pi (x u + y v)/lambda).
lam = 0.308; R = 5; Ke = 256; n = (0:Ke-1)'; ga = pi*(3 - sqrt(5)); % mm, golden angle 137.5 deg
rF = R*sqrt((n + 0.5)/Ke); % Fermat spiral: uniform density
wfun = @(r) 0.25 + 0.75*0.5*(1 + cos(pi*r/R)); % density taper (pedestal + raised cosine)
rr = linspace(0, R, 4001); cw = [0, cumsum(wfun((rr(1:end-1) + rr(2:end))/2) .* 2*pi.*(rr(1:end-1) + rr(2:end))/2 .* diff(rr))];
rT = interp1(cw, rr, (n + 0.5)/Ke*cw(end)); % invert the cumulative count
idx = randperm(64^2, Ke)'; gx = (mod(idx - 1, 64) - 31.5)*0.154; gy = (floor((idx - 1)/64) - 31.5)*0.154;
lay = {gx, gy; rF.*cos(n*ga), rF.*sin(n*ga); rT.*cos(n*ga), rT.*sin(n*ga)};
names = {'random 256 of 64 x 64 (lambda/2)', 'Fermat spiral, 10 mm', 'density-tapered spiral'};
ug = linspace(-1, 1, 161); [Ug, Vg] = meshgrid(ug, ug); visg = (Ug.^2 + Vg.^2) <= 1;
uc = linspace(-0.15, 0.15, 601); % fine cut for the main lobe
fprintf('\n10 mm aperture, 256 elements, 5 MHz (1/K = %.1f dB):\n', 10*log10(1/Ke));
fprintf(' layout PSL mean SL -6 dB width (u)\n');
Aoff = cell(1, 3);
for k = 1:3
x = lay{k, 1}; y = lay{k, 2};
A2 = abs(exp(1i*2*pi/lam*(Ug(:)*x' + Vg(:)*y')) * ones(Ke, 1)) / Ke; A2 = reshape(A2, size(Ug));
ac = abs(exp(1i*2*pi/lam*(uc(:)*x')) * ones(Ke, 1)) / Ke;
w6 = 2*max(uc(ac >= 0.5)); % full -6 dB width of the main lobe
sideg = visg & (sqrt(Ug.^2 + Vg.^2) > 1.5*w6); % exclude the main lobe
fprintf(' %-34s %6.1f %6.1f %.4f\n', names{k}, 20*log10(max(A2(sideg))), 10*log10(mean(A2(sideg).^2)), w6);
Aoff{k} = A2;
end
%% Figures
dBimg = @(X) max(20*log10(X + 1e-12), -40) .* vis - 45*(~vis);
figure('Name', 'Sparse 2D arrays');
subplot(2, 3, 1); imagesc(ones(N)); axis image; title('full 32 x 32'); colormap(gray);
subplot(2, 3, 2); imagesc(mp); axis image; title('periodic every 2nd');
subplot(2, 3, 3); imagesc(m256); axis image; title('random K = 256');
subplot(2, 3, 4); imagesc(uu, uu, dBimg(A)); axis image; caxis([-40 0]); xlabel('u'); ylabel('v'); title('full (dB)');
subplot(2, 3, 5); imagesc(uu, uu, dBimg(Aps)); axis image; caxis([-40 0]); xlabel('u'); title('periodic, steered u_0 = 0.5');
subplot(2, 3, 6); imagesc(uu, uu, dBimg(A256)); axis image; caxis([-40 0]); xlabel('u'); title('random 256 (dB)'); colorbar;
figure('Name', 'Cuts v = 0');
plot(uu, 20*log10(A(P/2+1, :) + 1e-12), 'k', uu, 20*log10(A256(P/2+1, :) + 1e-12), 'b'); hold on;
plot([-1 1], 10*log10((N^2 - 256)/(256*(N^2 - 1)))*[1 1], 'r--');
ylim([-60 0]); grid on; xlabel('u = sin \theta (v = 0)'); ylabel('dB'); legend('full', 'random K = 256', '1/K floor');
figure('Name', 'Off-grid 256-element layouts on 10 mm');
dBg = @(X) max(20*log10(X + 1e-12), -40) .* visg - 45*(~visg);
for k = 1:3
subplot(2, 3, k); plot(lay{k, 1}, lay{k, 2}, '.', 'MarkerSize', 6); axis image; axis([-5.2 5.2 -5.2 5.2]); xlabel('x (mm)'); ylabel('y (mm)'); title(names{k});
subplot(2, 3, 3 + k); imagesc(ug, ug, dBg(Aoff{k})); axis image; caxis([-40 0]); xlabel('u'); ylabel('v'); title('|P(u,v)| (dB)');
end
colormap(gray); colorbar;
What to look for: full aperture PSL −13.4 dB on the FFT grid (−13.3 dB exact); every-2nd periodic layout 0 dB (grating lobes at endfire unsteered, at \(u = -0.5\) when steered to \(u_0 = 0.5\)); random \(K\) = 128/256/512 mean sidelobe −21.6/−25.0/−29.2 dB against −21.6/−25.3/−30.1 dB predicted (the formula ignores the deterministic sidelobes of the full aperture, which matter as \(K \to N^2\)). The last cell computes the three off-grid layouts drawn in Section 19.4 (256 elements on a 10 mm aperture, 5 MHz, direct phasor sum): mean sidelobe −24.4 / −24.8 / −24.4 dB for the random, Fermat and density-tapered layouts against \(1/K = -24.1\) dB, peak sidelobe −15.3 / −13.8 / −15.1 dB, and −6 dB main-lobe widths 0.037 / 0.043 / 0.051 in u. The floor is set by K whatever the layout; the spiral removes periodicity (no grating lobes, a quiet zone around the main lobe), and the taper trades main-lobe width for lower near-in sidelobes.
m19_microbeamforming.mSubarray (micro-) beamforming: direct element sum versus CAF × SF factorization, main-lobe loss and grating lobe versus pre-steer error \(\delta\) for 2 × 2 to 4 × 4 · change m, d, \(\delta\) · runtime ≈ 2 s
%% m19_microbeamforming.m -- sub-array (micro-) beamforming: subarray factor x coarse array factor
% Purpose : a 48-element line (one axis of a 48 x 48 matrix) at pitch d is grouped into
% subarrays of m elements. Fine delays inside each subarray steer it to u0 = sin(th0)
% (pre-steer); coarse delays between subarray centres steer to us = sin(ths). The
% receive pattern factorizes exactly: P(u) = CAF(u - us) * SF(u - u0), where CAF has
% grating lobes at us +- p lambda/(m d) and SF has nulls at u0 +- p lambda/(m d).
% (1) checks the factorization against the direct element sum; (2) tabulates the
% main-lobe loss SF(delta) and the highest coarse grating lobe versus the pre-steer
% error delta = ths - th0 for m = 2, 3, 4; (3) the fine-delay span and the curvature
% error inside a subarray; (4) 2D patterns of the 48 x 48 matrix (separable).
% Change : m, d/lambda (dl), delta values, N, R.
% Expect : factorization error ~1e-15. d = lambda/2, 3 x 3: delta = 5 deg: -0.22 dB, lobe -15.2 dB;
% 10 deg: -0.88 dB, -8.3 dB; 20 deg: -3.73 dB, lobe above the main lobe (+0.4 dB).
% 2 x 2 at 10 deg: -0.33 dB, -11.1 dB. 4 x 4 at 10 deg: -1.69 dB, -5.2 dB.
% Channels of a 48 x 48 matrix: 2304 -> 256 (3 x 3). Fine-delay span (m-1) d sin(th0)/c
% for 3 x lambda/2 at 37 deg, 5 MHz: 120 ns. Curvature phase pi (m d/2)^2/(lambda R) at
% R = 20 mm: 0.027 rad.
% Base MATLAB only; runs in MATLAB R2019b+ and GNU Octave 8.
clear; close all; rng(1);
c = 1540; f0 = 5e6; lam = c/f0; % m/s, Hz, m
N = 48; dl = 0.5; d = dl*lam; % elements, pitch in lambda, pitch (m)
u = linspace(-1, 1, 4001);
SF = @(u, m) abs(sin(m*pi*dl*u) ./ (m*sin(pi*dl*u) + (abs(sin(pi*dl*u)) < 1e-12))) .* (abs(sin(pi*dl*u)) >= 1e-12) + (abs(sin(pi*dl*u)) < 1e-12);
%% (1) Direct element sum versus CAF x SF
m = 3; K = N/m; u0 = sin(0*pi/180); us = sin(10*pi/180);
n = 0:N-1; k = floor(n/m); xi = mod(n, m) - (m-1)/2; Xk = (k + 0.5)*m - N/2; % positions in pitch units
w = exp(-1i*2*pi*dl*(xi*u0 + Xk*us)); % fine + coarse steering
Pdir = abs(exp(1i*2*pi*dl*u(:)*(Xk + xi)) * w(:)).' / N;
CAF = abs(exp(1i*2*pi*dl*(u(:) - us)*(((0:K-1) + 0.5)*m - N/2)) * ones(K, 1)).' / K;
Pfac = CAF .* SF(u - u0, m);
fprintf('(1) max |direct - CAF*SF| = %.1e (m = %d, delta = 10 deg)\n', max(abs(Pdir - Pfac)), m);
%% (2) Loss and grating lobe versus pre-steer error (th0 = 0)
dels = [0 5 10 15 20];
fprintf('\n(2) d = %.2f lambda: main-lobe loss / highest coarse grating lobe re main (dB)\n delta', dl);
fprintf(' m = %d ', 2:4); fprintf('\n');
for dd = dels
fprintf(' %4.0f ', dd);
for m = 2:4
ust = sin(dd*pi/180); loss = 20*log10(SF(ust, m)); gl = -Inf;
for p = [-2*m:-1, 1:2*m]
if mod(p, m) == 0, continue; end
ug = ust + p/(m*dl);
if abs(ug) <= 1, gl = max(gl, 20*log10(SF(ug, m) + 1e-15) - loss); end
end
if gl < -100, fprintf('%6.2f / none ', loss); else, fprintf('%6.2f / %+5.1f ', loss, gl); end
end
fprintf('\n');
end
fprintf(' channels for 48 x 48: %d -> %d (2x2), %d (3x3), %d (4x4)\n', N^2, (N/2)^2, (N/3)^2, (N/4)^2);
%% (3) Fine-delay span and curvature error
th0 = 37*pi/180; R = 20e-3;
fprintf('\n(3) fine-delay span (m-1) d sin(th0)/c, 3 x lambda/2 at 37 deg: %.0f ns\n', 2*d*sin(th0)/c*1e9);
for mm = [3 4 8]
fprintf(' curvature phase pi (m d/2)^2/(lambda R), m = %d: R = 5 mm %.3f rad, R = 20 mm %.3f rad\n', ...
mm, pi*(mm*d/2)^2/(lam*5e-3), pi*(mm*d/2)^2/(lam*R));
end
%% (4) Figures: 1D cuts and 2D patterns for delta = 0 and 10 deg (m = 3)
m = 3; K = N/m; k = floor(n/m); xi = mod(n, m) - (m-1)/2; Xk = (k + 0.5)*m - N/2;
Pof = @(u0, us) abs(exp(1i*2*pi*dl*u(:)*(Xk + xi)) * exp(-1i*2*pi*dl*(xi*u0 + Xk*us)).').' / N;
P0 = Pof(0, 0); P10 = Pof(0, sin(10*pi/180));
figure('Name', 'Micro-beamforming cuts');
subplot(2, 1, 1); plot(u, 20*log10(P0 + 1e-6), 'b', u, 20*log10(SF(u, m) + 1e-6), 'r--'); ylim([-50 0]); grid on;
title('3 x 3 at \lambda/2, beam = pre-steer (\delta = 0)'); ylabel('dB');
subplot(2, 1, 2); plot(u, 20*log10(P10 + 1e-6), 'b', u, 20*log10(SF(u, m) + 1e-6), 'r--'); ylim([-50 0]); grid on;
title('\delta = 10 deg: subarray factor no longer nulls the coarse lobes'); xlabel('u = sin \theta'); ylabel('dB');
[UU, VV] = meshgrid(u(1:20:end), u(1:20:end));
vis = (UU.^2 + VV.^2) <= 1;
img = @(Pu) max(20*log10(Pu(1:20:end).' * P0(1:20:end) + 1e-9), -40) .* vis - 45*(~vis);
figure('Name', 'Micro-beamforming 2D');
subplot(1, 2, 1); imagesc(u(1:20:end), u(1:20:end), img(P0).'); axis image; caxis([-40 0]); xlabel('u'); ylabel('v'); title('\delta = 0');
subplot(1, 2, 2); imagesc(u(1:20:end), u(1:20:end), img(P10).'); axis image; caxis([-40 0]); xlabel('u'); title('\delta = 10 deg in u'); colorbar;
What to look for: the factorization error is at machine precision; for 3 × 3 at \(\lambda /2\) the table prints −0.88 dB loss and a −8.3 dB lobe at \(\delta = 10^{\circ}\), and the 2D figure shows the coarse grating lobes appear only when \(\delta \ne 0\).
m19_rca_beam.mRow-column array: separable focal PSF versus fully addressed, axis and diagonal sidelobes; single row/column echo with edge-wave ghosts, uniform versus roll-off strips · change apodization, scatterer, roll-off · runtime ≈ 3 s
%% m19_rca_beam.m -- row-column addressed array: separable PSF and edge-wave ghosts
% Purpose : (1) focal-plane (Fourier) PSF of an N x N row-column array (transmit on rows: focus
% in y only; receive on columns: focus in x only) versus a fully addressed matrix
% focused on transmit and receive: PSF_RCA = R(x) T(y), PSF_2D = Tx Rx (x) . Ty Ry (y).
% (2) pulse-echo signal of one transmit row and one receive column for one scatterer:
% s = p * h_row * h_col, with h the spatial impulse response of a strip (1/r line of
% point sources). Uniform strips have steps at their ends (edge waves -> ghost echoes);
% roll-off strips (Hann taper added beyond each end, as in Rasmussen et al. 2015)
% remove them.
% Change : apodization, N, scatterer position (xs, ys, zs), roll-off width.
% Expect : uniform: axis PSL RCA -13.3 dB vs full -26.5 dB; diagonal -26.5 vs -53.0 dB;
% -6 dB width 1.21 vs 0.89 lambda F#. Hann: axis -31.5 vs -62.9 dB.
% Echo at (8, 3, 30) mm: uniform-strip edge echoes about -22, -27, -30 dB after the main
% echo; with a 16 lambda roll-off the highest is below about -43 dB. Centred scatterer
% (0, 0, 30): edge echo -13.3 dB (both ends arrive together).
% Base MATLAB only; runs in MATLAB R2019b+ and GNU Octave 8.
clear; close all; rng(1);
%% (1) Focal-plane PSF
N = 64; x = linspace(-4, 4, 1601); % lateral position in units of lambda F#
n = (0:N-1) - (N-1)/2;
apods = {'uniform', ones(1, N); 'Hann', 0.5 - 0.5*cos(2*pi*((0:N-1) + 0.5)/N)};
fprintf('(1) N = %d per side: RCA uses %d channels, fully addressed %d\n', N, 2*N, N^2);
for a = 1:2
w = apods{a, 2};
p = abs(exp(1i*2*pi*x(:)*n/N) * w(:)).' / sum(w); % one-way focal pattern
xx = x(x >= 0); pp = p(x >= 0); k = 2; while pp(k+1) < pp(k), k = k + 1; end
psl = max(pp(k:end));
w1 = 2*xx(find(pp < 0.5, 1)); w2 = 2*xx(find(pp.^2 < 0.5, 1));
fprintf(' %-8s axis PSL RCA %6.1f dB, full %6.1f dB | diagonal RCA %6.1f, full %6.1f dB | -6 dB width RCA %.2f, full %.2f lambda F#\n', ...
apods{a, 1}, 20*log10(psl), 40*log10(psl), 40*log10(psl), 80*log10(psl), w1, w2);
if a == 1, p1 = p; end
end
xs2 = x(1:8:end); q = p1(1:8:end);
figure('Name', 'RCA PSF');
subplot(2, 2, 1); imagesc(xs2, xs2, max(20*log10(q.' * q), -50)); axis image; caxis([-50 0]); title('RCA: R(x) T(y)'); xlabel('x (\lambda F#)'); ylabel('y');
subplot(2, 2, 2); imagesc(xs2, xs2, max(20*log10((q.^2).' * q.^2), -50)); axis image; caxis([-50 0]); title('fully addressed'); xlabel('x (\lambda F#)'); colorbar;
subplot(2, 1, 2); plot(x, 20*log10(p1 + 1e-9), 'r', x, 40*log10(p1 + 1e-9), 'b'); ylim([-60 0]); grid on;
xlabel('x (\lambda F#)'); ylabel('dB'); legend('RCA axis (one-way)', 'full axis = RCA diagonal');
%% (2) Edge waves: one row (along x at y = 0) transmits, one column (along y at x = 0) receives
c = 1540e3; f0 = 5e6; lam = c/f0; % mm/s, Hz, mm
L0 = 128*lam/2; fs = 250e6; dt = 1/fs; nx = 4000; % strip length (mm), sampling
sig = 1/(2*pi*0.6*f0/2.3548); % 60 % (-6 dB) bandwidth Gaussian pulse
tp = (-200:200)*dt; pulse = exp(-tp.^2/(2*sig^2)) .* cos(2*pi*f0*tp);
Pn = 8192; pre = 250;
cases = [8 3 30; 0 0 30];
figure('Name', 'RCA edge waves');
for ci = 1:2
sc = cases(ci, :);
for rw = [0 16*lam]
L = L0 + 2*rw; s = -L/2 + ((0:nx-1) + 0.5)*L/nx; e = L/2 - abs(s);
a = ones(1, nx); if rw > 0, t = e < rw; a(t) = 0.5 - 0.5*cos(pi*e(t)/rw); end
rt = sqrt((s - sc(1)).^2 + sc(2)^2 + sc(3)^2); rr = sqrt((s - sc(2)).^2 + sc(1)^2 + sc(3)^2);
wt = a*(L/nx)./rt; wr = a*(L/nx)./rr;
it = round((rt - min(rt))/c/dt) + pre + 1; ir = round((rr - min(rr))/c/dt) + 1;
ht = accumarray(it(:), wt(:), [Pn 1]).'; hr = accumarray(ir(:), wr(:), [Pn 1]).';
pk = zeros(1, Pn); pk(1:201) = pulse(201:401); pk(end-199:end) = pulse(1:200); % centred, circular
S = fft(ht) .* fft(hr) .* fft(pk);
H = zeros(1, Pn); H(1) = 1; H(2:Pn/2) = 2; H(Pn/2+1) = 1;
env = abs(ifft(S .* H)); env = env / max(env);
tt = ((1:Pn) - pre - 1)*dt*1e6; % us after the closest-point arrival
% predicted edge arrivals (us): combinations of closest point and the two physical ends
rtE = [min(rt), sqrt((-L0/2 - sc(1))^2 + sc(2)^2 + sc(3)^2), sqrt((L0/2 - sc(1))^2 + sc(2)^2 + sc(3)^2)];
rrE = [min(rr), sqrt((-L0/2 - sc(2))^2 + sc(1)^2 + sc(3)^2), sqrt((L0/2 - sc(2))^2 + sc(1)^2 + sc(3)^2)];
[A1, B1] = meshgrid(rtE - rtE(1), rrE - rrE(1)); tc = (A1(:) + B1(:)).'/c*1e6; tc = tc(tc > 0.45);
best = -Inf;
for q = tc, kk = abs(tt - q) <= 0.1; best = max(best, 20*log10(max(env(kk)))); end
if rw == 0, lab = 'uniform'; else, lab = sprintf('roll-off %g lambda', rw/lam); end
fprintf('(2) scatterer (%g, %g, %g) mm, %-16s: highest edge echo after 0.45 us %6.1f dB\n', sc(1), sc(2), sc(3), lab, best);
subplot(2, 1, ci); plot(tt, 20*log10(env + 1e-9)); hold on;
end
xlim([-1 4]); ylim([-70 0]); grid on; ylabel('envelope (dB)');
title(sprintf('one row Tx, one column Rx, scatterer (%g, %g, %g) mm', sc)); legend('uniform', 'roll-off 16\lambda');
end
xlabel('time after main echo (\mus)');
What to look for: axis PSL −13.3 dB (RCA) versus −26.5 dB (full), diagonal −26.5 versus −53.0 dB; the echo trace at (8, 3, 30) mm shows the highest edge echo at −22.1 dB with uniform strips and −45.2 dB with a \(16\lambda\) roll-off; a centred scatterer gives −13.3 dB.
m19_matrix_gratinglobe_uv.m2D array factor in (u, v): replica positions and grating-lobe levels with and without the element factor for five pitch/steering cases; no-lobe pitch for square and triangular grids; micro-beamformer lobe ratio and steering window, checked against a direct sum · change the case list, cone angles, subarray sizes K (= m on this page), lobe limits · runtime ≈ 2 s (Octave ≈ 15 s)
%% m19_matrix_gratinglobe_uv.m -- 2D grating lobes in (u, v) and the micro-beamformer steering limit
% Purpose : (1) 2D array factor of an Nx x Ny rectangular grid (pitches dx, dy) steered to (th, phi),
% in direction-cosine space u = sin(th)cos(phi), v = sin(th)sin(phi). Replicas of the main
% lobe sit at (u0 + m lambda/dx, v0 + n lambda/dy); only those inside the unit circle are
% real grating lobes. Prints the visible replicas, their level with and without a soft-baffle
% element factor, and the peak level outside the main lobe for five cases.
% (2) Largest pitch with no grating lobe for steering anywhere in a cone sin(th) <= s:
% square grid d <= lambda/(1+s); hexagonal (triangular) grid, nearest-neighbour spacing
% d <= 2 lambda/(sqrt(3)(1+s)), 13.4 % fewer elements for the same aperture.
% (3) Micro-beamformer (K x K subarrays at pitch D = K d): closed-form ratio of the worst
% coarse grating lobe to the main lobe, rho = sin(a)/sin(pi/K - a), a = pi d delta/lambda,
% and the steering window around the pre-steer for a lobe limit, checked by a direct sum.
% Change : the case list in (1), cone angles in (2), K list and lobe limits in (3).
% Expect : (1) 0.5 lambda, (45,0) deg: no visible replica, peak -13.2 dB (main-lobe sidelobe, grid).
% 1.0 lambda, (20,0): replica at u = -0.658, 0 dB isotropic, -6.3 dB with element factor.
% 0.7 lambda, (30,0): replica at u = -0.929, 0 dB / -11.5 dB; (30,45): replicas at radius
% 1.132, outside, peak -13.2 dB. 0.5 x 0.8 lambda, (30,90): replica at v = -0.75, -5.1 dB.
% (2) cone 30/45/60/90 deg: square 0.667/0.586/0.536/0.500 lambda, hex 0.770/0.676/0.619/0.577.
% (3) d = lambda/2, 48 x 48: cables 576/256/144/64 for K = 2/3/4/6; lobe at 10 deg off
% pre-steer -11.1/-8.3/-5.2/+0.7 dB; -20 dB window +-3.6/3.0/2.4/1.7 deg; -10 dB window
% +-11.2/8.5/6.6/4.5 deg. K = 3 pre-steered to 30 deg: -20 dB beams from 26.6 to 33.5 deg.
% Base MATLAB only; runs in MATLAB R2019b+ and GNU Octave 8. Runtime about 2 s.
clear; close all; rng(1);
% Dirichlet kernel (array factor of N points at pitch 1 in units of x = d u / lambda), safe at integers
Dn = @(x, N) (abs(sin(pi*x)) > 1e-9) .* sin(N*pi*x) ./ (N*sin(pi*x) + (abs(sin(pi*x)) <= 1e-9)) ...
+ (abs(sin(pi*x)) <= 1e-9) .* cos(N*pi*x) ./ cos(pi*x);
snc = @(x) (abs(x) > 1e-12) .* sin(pi*x) ./ (pi*x + (abs(x) <= 1e-12)) + (abs(x) <= 1e-12);
% soft-baffle rectangular element of width wx, wy (in lambda): sinc(wx u) sinc(wy v) cos(th)
EF = @(u, v, wx, wy) abs(snc(wx*u) .* snc(wy*v)) .* sqrt(max(0, 1 - u.^2 - v.^2));
%% (1) 2D array factor and grating lobes for five cases
% columns: dx/lambda, dy/lambda, th0 (deg), phi0 (deg)
cases = [0.5 0.5 45 0; 1.0 1.0 20 0; 0.7 0.7 30 0; 0.7 0.7 30 45; 0.5 0.8 30 90];
Nx = 32; Ny = 32; du = 0.0025; g = -1:du:1; [U, V] = meshgrid(g, g); vis = U.^2 + V.^2 <= 1;
fprintf('(1) %d x %d grid, uniform weights, soft-baffle element of width 0.9 pitch\n', Nx, Ny);
for c = 1:size(cases, 1)
dx = cases(c,1); dy = cases(c,2); th = cases(c,3)*pi/180; ph = cases(c,4)*pi/180;
u0 = sin(th)*cos(ph); v0 = sin(th)*sin(ph);
AF = abs(Dn(dx*(U - u0), Nx) .* Dn(dy*(V - v0), Ny));
E = EF(U, V, 0.9*dx, 0.9*dy); Em = EF(u0, v0, 0.9*dx, 0.9*dy);
main = abs(U - u0) < 1/(Nx*dx) & abs(V - v0) < 1/(Ny*dy); % first-null box of the main lobe
pk_iso = 20*log10(max(AF(vis & ~main)));
pk_ef = 20*log10(max(AF(vis & ~main) .* E(vis & ~main)) / Em);
fprintf(' dx = %.2f, dy = %.2f lambda, steer (th, phi) = (%g, %g) deg, (u0, v0) = (%.3f, %.3f)\n', ...
dx, dy, cases(c,3), cases(c,4), u0, v0);
nvis = 0;
for m = -3:3
for n = -3:3
if m == 0 && n == 0, continue; end
ur = u0 + m/dx; vr = v0 + n/dy; r = hypot(ur, vr);
if r <= 1
nvis = nvis + 1;
fprintf(' replica (m,n) = (%2d,%2d) at (u, v) = (%6.3f, %6.3f), |.| = %.3f: 0 dB isotropic, %6.1f dB with element factor\n', ...
m, n, ur, vr, r, 20*log10(EF(ur, vr, 0.9*dx, 0.9*dy)/Em));
elseif r <= 1.25
fprintf(' replica (m,n) = (%2d,%2d) at |.| = %.3f: just outside the visible circle\n', m, n, r);
end
end
end
if nvis == 0, fprintf(' no replica inside the visible circle\n'); end
fprintf(' peak outside main lobe: %6.1f dB isotropic, %6.1f dB with element factor\n', pk_iso, pk_ef);
end
% check the closed form against a direct phasor sum at random (u, v) for case 4
dx = 0.7; dy = 0.7; u0 = sin(pi/6)*cos(pi/4); v0 = sin(pi/6)*sin(pi/4);
[ix, iy] = meshgrid(0:Nx-1, 0:Ny-1); ix = ix(:); iy = iy(:);
up = 2*rand(50,1) - 1; vp = 2*rand(50,1) - 1;
Pd = abs(exp(1i*2*pi*(dx*(up - u0)*ix.' + dy*(vp - v0)*iy.')) * ones(Nx*Ny,1)) / (Nx*Ny);
Pc = abs(Dn(dx*(up - u0), Nx) .* Dn(dy*(vp - v0), Ny));
fprintf(' closed form vs direct %d-element sum: max error %.1e\n', Nx*Ny, max(abs(Pd - Pc)));
%% (2) Largest pitch with no grating lobe over a steering cone
fprintf('\n(2) Max pitch for no grating lobe, steering anywhere with th <= th_max\n');
fprintf(' th_max square d/lambda hex d/lambda (nearest neighbour)\n');
for tm = [30 45 60 90]
s = sin(tm*pi/180);
fprintf(' %4d %.3f %.3f\n', tm, 1/(1+s), 2/(sqrt(3)*(1+s)));
end
% widest cone for a given pitch: sin(th_max) = |g_min| - 1 (|g_min| = lambda/d square, 2 lambda/(sqrt(3) d) hex)
cone = @(gmin) asin(min(1, max(0, gmin - 1)))*180/pi;
fprintf(' d = 0.70 lambda: no-GL cone %.1f deg (square), %.1f deg (hex, same nearest-neighbour spacing)\n', cone(1/0.7), cone(2/(sqrt(3)*0.7)));
dh = 0.6*sqrt(2/sqrt(3)); % hex spacing with the element density of a 0.6 lambda square grid
fprintf(' d = 0.60 lambda square: cone %.1f deg; hex at equal density (d = %.3f lambda): cone %.1f deg\n', cone(1/0.6), dh, cone(2/(sqrt(3)*dh)));
% reciprocal lattice of the triangular grid, a1 = d(1,0), a2 = d(1/2, sqrt(3)/2), d = 1 lambda
a1 = [1 0]; a2 = [0.5 sqrt(3)/2]; B = inv([a1; a2]).'; % rows b1, b2 with a_i . b_j = delta_ij
best = inf; for m = -2:2, for n = -2:2, if m || n, best = min(best, norm(m*B(1,:) + n*B(2,:))); end, end, end
hx = [a1; a2]; pts = []; for i = -6:6, for j = -6:6, pts = [pts; i*a1 + j*a2]; end, end %#ok<AGROW>
AFhex = abs(sum(exp(1i*2*pi*(pts*B(1,:).')))) / size(pts,1);
fprintf(' triangular grid: nearest replica at %.4f lambda/d (2/sqrt(3) = %.4f); |AF| there = %.3f\n', best, 2/sqrt(3), AFhex);
fprintf(' element density hex/square at equal no-GL cone: %.3f (%.1f %% fewer)\n', sqrt(3)/2, 100*(1 - sqrt(3)/2));
%% (3) Micro-beamformer: worst coarse grating lobe vs pre-steer error, and the steering window
dl = 0.5; N = 48; % element pitch d/lambda, elements per axis
rho = @(dlt, K) sin(pi*dl*dlt) ./ sin(pi/K - pi*dl*dlt); % lobe/main, delta in u units (0 <= delta < 1/(K dl))
win = @(r, K) atan(r*sin(pi/K) ./ (1 + r*cos(pi/K))) / (pi*dl); % delta_max in u for a lobe ratio r
fprintf('\n(3) Micro-beamforming, d = lambda/2, %d x %d matrix, pre-steer broadside\n', N, N);
fprintf(' K cables D/lambda coarse GL spacing lobe at 10 deg window -10 dB window -20 dB\n');
u = linspace(-1, 1, 8001); Kl = [2 3 4 6];
for K = Kl
dlt = sin(10*pi/180);
w10 = asin(win(10^(-10/20), K))*180/pi; w20 = asin(win(10^(-20/20), K))*180/pi;
fprintf(' %d %4d %.1f %.3f %6.1f dB +-%.1f deg +-%.1f deg\n', ...
K, (N/K)^2, K*dl, 1/(K*dl), 20*log10(rho(dlt, K)), w10, w20);
end
% direct-sum check (1D cut): K = 3, pre-steer 0, beam 10 deg
K = 3; n = 0:N-1; xi = mod(n, K) - (K-1)/2; Xk = (floor(n/K) + 0.5)*K - N/2;
us = sin(10*pi/180); w = exp(-1i*2*pi*dl*Xk*us); % fine delays: pre-steer 0 (none)
P = abs(exp(1i*2*pi*dl*u(:)*(Xk + xi)) * w(:)).'; P = P/max(P);
gl = max(P(abs(u - (us - 1/(K*dl))) < 0.05));
fprintf(' direct sum, K = 3, beam 10 deg: lobe at u = %.3f is %.2f dB (closed form %.2f dB)\n', ...
us - 1/(K*dl), 20*log10(gl), 20*log10(rho(us, K)));
% pre-steer at 30 deg: the window is symmetric in u, not in angle
K = 3; u0 = 0.5; dm = win(0.1, K);
fprintf(' K = 3, pre-steer 30 deg, -20 dB: beams from %.1f to %.1f deg (u %.3f to %.3f)\n', ...
asin(u0 - dm)*180/pi, asin(u0 + dm)*180/pi, u0 - dm, u0 + dm);
% 2D: steering off in both axes; the diagonal coarse replica scales as rho_x * rho_y
dlt = sin(5*pi/180);
fprintf(' 2D, K = 3, delta = 5 deg in u and in v: axis lobes %.1f dB, diagonal lobe %.1f dB\n', ...
20*log10(rho(dlt, 3)), 40*log10(rho(dlt, 3)));
% number of pre-steer zones to cover a +-45 deg sector at -20 dB (zones tile u uniformly)
for K = [2 3 4]
fprintf(' K = %d: %d pre-steer zones per axis cover u in [-0.707, 0.707] at -20 dB\n', K, ceil(2*0.7071/(2*win(0.1, K))));
end
%% Figures
figure('Position', [50 50 1000 420]);
subplot(1, 2, 1);
gg = -2:0.01:2; [UU, VV] = meshgrid(gg, gg); dx = 0.7; dy = 0.7; u0 = 0.5; v0 = 0;
A = abs(Dn(dx*(UU - u0), 16) .* Dn(dy*(VV - v0), 16));
imagesc(gg, gg, max(-40, 20*log10(A + 1e-12))); axis image; set(gca, 'YDir', 'normal'); colorbar; hold on;
t = linspace(0, 2*pi, 200); plot(cos(t), sin(t), 'w-', 'LineWidth', 1.5);
[mm, nn] = meshgrid(-3:3, -3:3); plot(u0 + mm(:)/dx, v0 + nn(:)/dy, 'w+');
xlim([-2 2]); ylim([-2 2]); xlabel('u = sin\theta cos\phi'); ylabel('v = sin\theta sin\phi');
title('16 x 16 at 0.7\lambda, steer (30^o, 0^o): AF (dB), visible circle, replicas');
subplot(1, 2, 2);
cols = 'brkm'; hold on; hl = zeros(1, numel(Kl));
for i = 1:numel(Kl)
K = Kl(i); th = linspace(0, asin(min(0.999, 0.98/(K*dl)))*180/pi, 200);
hl(i) = plot(th, 20*log10(rho(sin(th*pi/180), K)), cols(i), 'LineWidth', 1.5);
end
plot([0 30], [-20 -20], 'k:'); plot([0 30], [-10 -10], 'k:');
xlim([0 30]); ylim([-40 5]); grid on; xlabel('beam minus pre-steer (deg), pre-steer broadside');
ylabel('worst coarse grating lobe / main (dB)'); legend(hl, 'K = 2', 'K = 3', 'K = 4', 'K = 6', 'Location', 'southeast');
title('Micro-beamformer steering limit, d = \lambda/2');
What to look for: closed-form 2D array factor equals the direct 1024-element sum to \(6\times10^{-16}\). 0.5\(\lambda\) steered (45°, 0°): no visible replica, peak −13.2 dB (the main lobe's own sidelobe on the grid). 1.0\(\lambda\) at (20°, 0°): replica at \(u = -0.658\), −6.3 dB with the element factor; 0.7\(\lambda\) at (30°, 0°): \(u = -0.929\), −11.5 dB; at (30°, 45°): replicas at radius 1.132, none visible; 0.5 × 0.8\(\lambda\) at (30°, 90°): \(v = -0.75\), −5.1 dB. Cone table 0.667/0.586/0.536/0.500\(\lambda\) (square) and 0.770/0.676/0.619/0.577\(\lambda\) (triangular); 0.7\(\lambda\): 25.4° vs 40.5°. Micro-beamforming at \(\lambda/2\), 48 × 48: cables 576/256/144/64 for K = 2/3/4/6, lobe 10° off pre-steer −11.1/−8.3/−5.2/+0.7 dB, −20 dB window ±3.6/3.0/2.4/1.7°; direct sum −8.2 dB at the lobe peak against −8.3 dB at the replica centre; K = 3 pre-steered to 30°: 26.6° to 33.5°; diagonal lobe −30.5 dB for 5° in both axes; 14 pre-steer zones for ±45° with K = 3.
19.13Self-check
Q1A phased array at 3 MHz must steer ±60°. What is the largest pitch without grating lobes?
\(d \le \lambda /(1 + \sin 60^{\circ}) = 0.536\lambda\); \(\lambda = 0.513\) mm, so d ≤ 0.275 mm.
Q2An element of width \(\lambda\) (soft baffle) has its −6 dB point at 32.3°. What is \(F\#_{\min}\)?
1/(2 tan 32.3°) = 0.79.
Q3How many system channels does a 1.5D array with 128 azimuth elements and 5 rows need? A 1.75D?
1.5D pairs rows symmetrically: 3 independent row groups × 128 = 384. 1.75D: 5 × 128 = 640.
Q4A 48 × 48 matrix uses 4 × 4 micro-beamforming at \(\lambda /2\). How many channels, and where are the coarse grating lobes for a broadside beam?
2304/16 = 144 channels. Subarray pitch \(2\lambda\), so coarse lobes at \(u = \pm \lambda /(md) = \pm 0.5\) (±30°), and also ±1.0. They are cancelled by the subarray factor's nulls if the pre-steer is also broadside.
Q5Why does a row-column array have −13.3 dB sidelobes along x even though it transmits and receives?
Transmit (rows) is uniform along x, so T has no x dependence; only the receive columns focus in x. Along the x axis the two-way PSF is the one-way receive sinc.
Q6A CMUT is biased at 95 % of its pull-in voltage. What are \(x/g_0\), \(k_T^2\) and \(f/f_0\) in the parallel-plate model?
Solve \((27/4)\xi (1 - \xi)^{2} = 0.9025\): \(\xi = 0.219\), \(k_T^2 = 2\xi /(1 - \xi) = 0.56\), \(f/f_0 = \sqrt{(1 - 3\xi)/(1 - \xi)} = 0.66\).
Q7Doubling a CMUT membrane's radius at fixed thickness changes its vacuum resonance by what factor?
\(f \propto h/a^2\): one quarter (10 MHz → 2.5 MHz for 1 µm silicon from \(a = 20\) to 40 µm).
Q8A matrix has \(d_x = 0.5\lambda\), \(d_y = 0.8\lambda\) and steers 30° in the y–z plane (\(\varphi_0 = 90^{\circ}\)). Where is the grating lobe, and how strong is it with a soft-baffle element 0.9 pitch wide?
\(v_0 = 0.5\); the (0, −1) replica sits at \(v = 0.5 - 1/0.8 = -0.75\), inside the circle (−48.6°). \(\lvert\mathrm{AF}\rvert = 1\) there; the element factor ratio \(E(0, -0.75)/E(0, 0.5)\) gives −5.1 dB. Steering the same 30° along x is lobe-free because \(d_x = \lambda/2\). Equation (19.7).
Q9A 64 × 64 matrix at λ/2 uses 4 × 4 micro-beamforming. How many cable conductors, and how far from the pre-steer can a receive line point with subarray lobes below −20 dB?
\(N^2/m^2 = 4096/16 = 256\). From (19.10) with \(\rho_{\max} = 0.1\): \(x = 0.1\sin 45^{\circ}/(1 + 0.1\cos 45^{\circ}) = 0.066\) and \(\Delta u_{\max} = (2/\pi)\arctan x = 0.042\), ±2.4° around broadside, independent of N.
19.14Figures from the literature
Published figures that put real hardware and real data behind the numbers in this module. Citations and figure numbers were checked against the papers; images are not reproduced, follow the links.
Fully wired 1024-element matrix: 3D ultrafast Doppler of the human heart
J. Provost, C. Papadacci, J. E. Arango, M. Imbault, M. Fink, J.-L. Gennisson, M. Tanter and M. Pernot, "3D ultrafast ultrasound imaging in vivo," Phys. Med. Biol. 59(19):L1–L13, 2014, Figs. 2 and 4 (open access, CC BY). doi:10.1088/0031-9155/59/19/L1
Fig. 4: 3D ultrafast Doppler of the left ventricle in a healthy volunteer over a full cardiac cycle. Fig. 2: point resolution and contrast versus the number of diverging-wave virtual sources (1 against 81). The probe is a 3 MHz matrix with 0.3 mm pitch (\(0.58\lambda\), so the pitch rule of Section 19.2 is nearly met in both axes) and 1024 connected elements of a 32 × 35 grid, each on its own channel: the "fully wired" row of the channel table. Look at how many compounded emissions it takes to recover contrast, the price of small 2D elements with low transmit energy each.
A pitch-matched 3 × 3 subarray beamformer, measured
C. Chen, Z. Chen, D. Bera, E. Noothout, Z.-Y. Chang, M. Tan, H. J. Vos, J. G. Bosch, M. D. Verweij, N. de Jong and M. A. P. Pertijs, "A pitch-matched front-end ASIC with integrated subarray beamforming ADC for miniature 3-D ultrasound probes," IEEE J. Solid-State Circuits 53(11):3050–3064, 2018, Figs. 13, 20 and 21. doi:10.1109/JSSC.2018.2864295
Fig. 13(b, c): the 3 × 3 subarray floorplan under a 150 µm pitch PZT matrix and the assembled prototype. Fig. 20(b): measured subarray outputs at different lateral steering angles; Fig. 21: a B-mode image of three needles from the subarray data. The paper reports 5 MHz, ±37° pre-steering with 33 ns delay resolution over a range of about 233 ns (consistent with \((m - 1)d \sin 37^{\circ}/c \approx 117\) ns per axis, summed over two axes), 0.91 mW per element, and a 36× channel reduction (9× subarray, 4× data link). Compare with the 120 ns and sub-mW numbers in Section 19.5.
Row-column edge waves: nine echoes, and the roll-off that removes the ghosts
M. F. Rasmussen, T. L. Christiansen, E. V. Thomsen and J. A. Jensen, "3-D imaging using row–column-addressed arrays with integrated apodization. Part I," IEEE TUFFC 62(5):947–958, 2015, Figs. 4, 8, 12 and 15. doi:10.1109/TUFFC.2014.006531
Fig. 4: one row transmits, one column receives, one scatterer; nine arrivals at the predicted times, the strongest ghost at −26 dB. That is the experiment of Demo 19.8 (−22 to −30 dB at its default point). Fig. 8: peak ghost level versus edge-apodization width for scatterers at 10–80 mm depth, the trade-off behind their \(16\lambda\) roll-off. Fig. 12: the beamformed PSF at (8, 3, 30) mm without and with roll-off (ghost 43 dB lower, main lobe unchanged). Fig. 15: the cross-shaped peak-pressure map of a steered RCA transmit. These are simulations in the paper (5 MHz, 128 + 128, \(\lambda /2\)); Part II (same issue) measures the apodization on a 62 + 62 element CMUT.
Row-column array in vivo: transcranial 3D ULM in the mouse brain
A. Wu, J. Porée, G. Ramos-Palacios, C. Bourquin, N. Ghigo, A. Leconte, P. Xing, A. F. Sadikot, M. Chassé and J. Provost, "3D transcranial dynamic ultrasound localization microscopy in the mouse brain using a row-column array," arXiv:2406.01746, 2024 (preprint), Figs. 1 and 3. arXiv:2406.01746
Fig. 1: the acquisition and processing chain (21 tilted plane waves per electrode set, 42 per volume, 750 Hz volume rate, orthogonal-plane-wave beamforming, localization, tracking). Fig. 3: static transcranial 3D ULM of six mice with vessel profiles. A 128 + 128 RCA (120 µm pitch, 15.4 mm) on one 256-channel system; the paper reports a PSF of about 290 µm laterally and a Fourier-shell-correlation resolution of 60 ± 8 µm. This is the I10 trade-off in practice: a wide, one-way-per-axis PSF is acceptable for ULM because localization, not the PSF, sets the final resolution.
19.15Go deeper
- C. E. Morton and G. R. Lockwood, "Theoretical assessment of a crossed electrode 2-D array for 3-D imaging," Proc. IEEE Ultrasonics Symposium, 2003, pp. 968–971.
- C. H. Seo and J. T. Yen, "A 256 × 256 2-D array transducer with row-column addressing for 3-D rectilinear imaging," IEEE Trans. Ultrason. Ferroelectr. Freq. Control 56(4):837–847, 2009.
- M. F. Rasmussen, T. L. Christiansen, E. V. Thomsen and J. A. Jensen, "3-D imaging using row–column-addressed arrays with integrated apodization—Part I: apodization design and line element beamforming," IEEE TUFFC 62(5):947–958, 2015 (Part II: fabrication and experimental results, same issue).
- M. Flesch et al., "4D in vivo ultrafast ultrasound imaging using a row-column addressed matrix and coherently-compounded orthogonal plane waves," Phys. Med. Biol. 62(11):4571–4588, 2017; J. Sauvage et al., "A large aperture row column addressed probe for in vivo 4D ultrafast Doppler ultrasound imaging," Phys. Med. Biol. 63(21), 2018 (doi:10.1088/1361-6560/aae427).
- B. Savord and R. Solomon, "Fully sampled matrix transducer for real time 3D ultrasonic imaging," Proc. IEEE Ultrasonics Symposium, 2003.
- C. Chen et al., "A front-end ASIC with receive sub-array beamforming integrated with a 32 × 32 PZT matrix transducer for 3-D transesophageal echocardiography," IEEE J. Solid-State Circuits 52(4), 2017; V. Daeichin et al., "Acoustic characterization of a miniature matrix transducer for pediatric 3D transesophageal echocardiography," Ultrasound Med. Biol. 44(10), 2018.
- D. Bera et al., "Multiline 3D beamforming using micro-beamformed datasets for pediatric transesophageal echocardiography," Phys. Med. Biol. 63(7):075015, 2018; D. Bera et al., "Fast volumetric imaging using a matrix transesophageal echocardiography probe with partitioned transmit–receive array," Ultrasound Med. Biol. 44(9):2025–2042, 2018.
- C. Chen et al., "A pitch-matched front-end ASIC with integrated subarray beamforming ADC for miniature 3-D ultrasound probes," IEEE J. Solid-State Circuits 53(11):3050–3064, 2018.
- D. G. Wildes et al., "Elevation performance of 1.25D and 1.5D transducer arrays," IEEE TUFFC 44(5):1027–1037, 1997.
- A. R. Selfridge, G. S. Kino and B. T. Khuri-Yakub, "A theory for the radiation pattern of a narrow-strip acoustic transducer," Appl. Phys. Lett. 37(1), 1980.
- S. W. Smith, H. G. Pavy and O. T. von Ramm, "High-speed ultrasound volumetric imaging system. I. Transducer design and beam steering," IEEE TUFFC 38(2):100–108, 1991; D. H. Turnbull and F. S. Foster, "Beam steering with pulsed two-dimensional transducer arrays," IEEE TUFFC 38(4):320–333, 1991.
- A. Austeng and S. Holm, "Sparse 2-D arrays for 3-D phased array imaging—design methods," IEEE TUFFC 49(8):1073–1086, 2002; A. Ramalli et al., "Density-tapered spiral arrays for ultrasound 3-D imaging," IEEE TUFFC 62(8), 2015.
- J. Provost et al., "3D ultrafast ultrasound imaging in vivo," Phys. Med. Biol. 59(19):L1–L13, 2014.
- I. Ladabaum, X. Jin, H. T. Soh, A. Atalar and B. T. Khuri-Yakub, "Surface micromachined capacitive ultrasonic transducers," IEEE TUFFC 45(3):678–690, 1998; Ö. Oralkan et al., "Capacitive micromachined ultrasonic transducers: next-generation arrays for acoustic imaging?" IEEE TUFFC 49(11):1596–1610, 2002.
- G. G. Yaralioglu et al., "Calculation and measurement of electromechanical coupling coefficient of capacitive micromachined ultrasonic transducers," IEEE TUFFC 50(4), 2003; B. Bayram et al., "A new regime for operating capacitive micromachined ultrasonic transducers," IEEE TUFFC 50(9), 2003.
- Y. Qiu et al., "Piezoelectric micromachined ultrasound transducer (PMUT) arrays for integrated sensing, actuation and imaging," Sensors 15(4):8020–8041, 2015.