Wave physics, nonlinear propagation and harmonic imaging
Every beamformer assumes a wave equation, a sound speed and a linear medium. This module derives the linear acoustic wave equation, follows the wave through interfaces, scatterers, absorbers and apertures, and then drops the linear assumption: B/A, the shock distance, Fubini's harmonics and the Burgers equation explain why tissue harmonic imaging gives narrower, cleaner beams, and how pulse inversion and amplitude modulation isolate the nonlinear echo.
You will be able to
- Derive the linear wave equation from mass, momentum and state, and state exactly which terms linearization drops
- Compute reflection, transmission, critical angles and shear mode conversion at tissue, fat, bone and air interfaces, and the image errors refraction causes
- Place a scatterer in the specular, Rayleigh or stochastic regime, and connect power-law attenuation to dispersion (Kramers–Kronig) and to spectral downshift
- Estimate focal gain, beam width and depth of focus from the aperture
- Compute β, the shock distance, Fubini harmonic amplitudes and the Gol'dberg number for a given tissue, pressure and frequency
- Quantify why tissue harmonic beams are narrower with lower sidelobes and less clutter, and choose between filtering, pulse inversion and amplitude modulation
Assumes
- Phasors and complex exponentials (Module 01, Complex numbers & phasors); convolution and LTI systems (Module 03, Convolution, LTI & filters)
- The beam as the Fourier transform of the aperture, 04.8 (Module 04, Sampling, Fourier, LTI)
- Analytic signal, envelope and the attenuation downshift (Module 08, Analytic signal & IQ)
15.1The linear wave equation from three conservation laws
Write density, pressure and particle velocity as a rest state plus a small acoustic perturbation: \(\rho = \rho_0 + \rho'\), \(p = p_0 + p'\), \(\mathbf{u} = 0 + \mathbf{u}\). Three physical statements, each kept to first order in the perturbation, give the wave equation.
- \(\rho',\ p'\)
- acoustic density (kg/m³) and pressure (Pa) perturbations
- \(\rho_0,\ p_0\)
- rest density and pressure
- \(\mathbf{u}\)
- particle velocity, m/s
- \(c_0\)
- small-signal sound speed, m/s
- \(\kappa_s\)
- adiabatic compressibility, 1/Pa
- \((\cdot)_s\)
- derivative at constant entropy
- \(B\)
- second-order coefficient of the equation of state (section 15.5), Pa
- \(t\)
- time, s
- \(\nabla,\ \nabla\cdot\)
- gradient and divergence operators, 1/m
- \(\partial\)
- partial derivative
- \(p\)
- total pressure, \(p = p_0 + p'\), Pa
- \(s\)
- entropy (subscript \(s\): at constant entropy)
Take \(\partial/\partial t\) of the mass equation, the divergence of the momentum equation, and eliminate \(\rho'\) with the state equation:
- \(f,\ g\)
- arbitrary waveforms travelling in +x and −x
- \(A\)
- source strength of the spherical wave, Pa·m
- \(r\)
- distance from the source, m
- \(k\)
- wavenumber \(\omega/c_0\), rad/m
- \(Z = \rho_0 c_0\)
- specific acoustic impedance, Rayl (kg m⁻² s⁻¹)
- \(p_0\)
- pressure amplitude, Pa
- \(I\)
- time-averaged intensity, W/m²
- \(t,\ x\)
- time (s) and propagation coordinate (m)
- \(p,\ u\)
- acoustic pressure (Pa) and particle velocity along \(x\) (m/s)
- \(\nabla^2\)
- Laplacian, 1/m²
- \(\rho_0,\ c_0\)
- as in (15.1)
- \(Z_{\mathrm{sph}}\)
- specific impedance of the spherical wave, Rayl
- \(j\)
- imaginary unit, \(j^2 = -1\)
- \(\langle\cdot\rangle\)
- time average over one period
| Medium | ρ (kg/m³) | c (m/s) | Z (MRayl) | \(\alpha_0\) (dB/cm/MHz\(^y\)) | y | B/A | \(\beta = 1 + B/2A\) |
|---|---|---|---|---|---|---|---|
| Water, 20 °C | 998 | 1482 | 1.48 | 0.0022 | 2 | 5.0 (5.4 at 40 °C) | 3.5 |
| Blood | 1060 | 1584 | 1.68 | 0.15 | 1.2 | 6.1 | 4.05 |
| Liver | 1060 | 1578 | 1.67 | 0.5 | 1.1 | 6.5–7.6 (7.0) | 4.5 |
| Muscle | 1050 | 1580 | 1.66 | ≈ 1 (fibre dependent) | 1.1 | 7–8 (7.4) | 4.7 |
| Fat | 950 | 1450 | 1.38 | 0.6 | 1.0 | 9.6–11.3 (10) | 6.0 |
| Generic soft tissue | 1050 | 1540 | 1.62 | 0.5 | 1.0 | 7 | 4.5 |
| Skull bone | 1900 | \(c_L\) 2820, \(c_S\) 1500 | 5.4 | high | – | – | – |
| Air | 1.2 | 343 | 0.0004 | – | – | 0.4 | 1.2 |
Representative values used on this page; tissue values scatter by several percent between studies, temperatures and individuals (compilations in Duck 1990). B/A ranges: water 4.96 at 20 °C, soft tissues mostly 6–8, fat 9.6–11.3. Skull speeds are the 1 MHz ex vivo means of White, Clement and Hynynen (2006); air B/A follows from \(\gamma - 1\) for an ideal gas.
1D finite-difference wave: a pulse meets an impedance step or a layer
Simulation1D staggered-grid pressure–velocity FDTD, 26 points per wavelength, lossless, JS; R, T and energies measured from the simulated tracesEvery delay you apply assumes \(p = f(t - r/c_0)\) with one \(c_0\) and no interaction between waves. Aberration correction and sound-speed estimation exist because the \(c_0\) in the equation is really \(c(\mathbf{r})\); harmonic imaging exists because the dropped second-order terms are not negligible at diagnostic pressures.
15.2Reflection, transmission and refraction
At a plane boundary pressure and normal particle velocity are continuous. For normal incidence of a plane wave from medium 1 onto medium 2:
- \(Z_1,\ Z_2\)
- acoustic impedances of the incident and transmitting media, MRayl
- \(p_i,\ p_r,\ p_t\)
- incident, reflected and transmitted pressure amplitudes, Pa
- \(R,\ T\)
- pressure reflection and transmission coefficients
- \(R_I,\ T_I\)
- reflected and transmitted fractions of the intensity
Oblique incidence. Phase matching along the boundary gives Snell's law; the fluid–fluid coefficients follow by projecting the velocity onto the normal:
- \(\theta_1,\ \theta_2\)
- incidence and refraction angles from the normal, degrees
- \(c_1,\ c_2\)
- longitudinal sound speeds of the two media, m/s
- \(\theta_S,\ c_S\)
- shear refraction angle and shear speed in a solid
- \(\theta_c\)
- critical angle, degrees
- \(\theta\)
- angle of incidence, \(\theta = \theta_1\), degrees
- \(Z_1,\ Z_2\)
- as in (15.3)
- \(R(\theta),\ T(\theta)\)
- oblique-incidence pressure reflection and transmission coefficients (reduce to (15.3) at \(\theta = 0\))
- \(T_I(\theta)\)
- transmitted intensity fraction at angle \(\theta\)
- \(\lvert\cdot\rvert\)
- magnitude (complex beyond \(\theta_c\))
Mode conversion. A solid also supports shear waves, and a fluid–solid boundary has three conditions (normal displacement, normal stress, zero shear stress), so an incident longitudinal wave launches a reflected wave, a transmitted longitudinal wave and a transmitted shear wave. Demo 15.2 solves that 3 × 3 system exactly. With the skull values, beyond 33° the longitudinal wave is gone and between about 37° and 73° more than 90 % of the incident energy enters the bone as shear. Because \(c_S\) (1500 m/s) is below the tissue speed, the shear wave has no critical angle and is refracted toward the normal; shear attenuation in bone is high, which is why transcranial imaging normally stays near normal incidence.
Refraction errors in imaging. The beamformer assumes straight rays at \(c_0\) = 1540 m/s. Three consequences: (1) an axial shift, because a layer of thickness d and speed \(c_L\) is displayed as \(d \cdot c_0/c_L\) (fat: +0.62 mm per cm); (2) a lateral shift, because a wedge-shaped layer bends the beam (a fat wedge of 20° in muscle deviates the beam by 1.9°, i.e. 2.0 mm at 6 cm, the mechanism behind duplicated images below the rectus muscles); (3) defocus, because the delays no longer match the true arrival times. These are the aberrations that sound-speed estimation and aberration correction try to undo.
Snell's law, critical angles and mode conversion
Simulationexact plane-wave boundary conditions solved as a 3×3 complex system in JS (fluid–fluid closed form when \(c_S\) = 0); flat, lossless, isotropic mediaFor sound-speed estimation and aberration correction the interfaces above are the forward model. A 2 cm subcutaneous fat layer adds 1.24 mm of apparent depth and a delay error that grows across the aperture with the path length in fat; an oblique fat–muscle boundary adds a steering error. Ray-based correction uses exactly Snell's law and the layer speeds; full-wave correction (Module 21) adds the reflections and mode conversion that ray models ignore.
15.3Scattering regimes, attenuation and dispersion
What an object returns depends on its size \(a\) relative to the wavelength, through \(ka\):
| Regime | Size | Behaviour | Frequency dependence | Examples |
|---|---|---|---|---|
| Specular | Smooth surfaces, extent \(\gg \lambda\) | Mirror reflection with R(θ) of 15.2; strongly angle dependent | Nearly none | Organ capsules, diaphragm, vessel walls, needles |
| Stochastic (Mie-like) | \(ka \approx 0.5\)–3 | Interference within the scatterer; oscillating, partly directional | Between \(f^4\) and \(f^0\) | Cell clusters, lobules, glomeruli |
| Rayleigh (diffuse) | \(ka \ll 1\) | Nearly omnidirectional; many per resolution cell → speckle | \(\sigma \propto k^4 a^6 \propto f^4\) | Red blood cells (a ≈ 3–4 µm), sub-resolution tissue structure, contrast microbubbles (resonant, Module 28) |
- \(\sigma_s\)
- scattering cross-section, m²
- \(k\)
- wavenumber, rad/m
- \(a\)
- scatterer radius, m
- \(a_{\mathrm{eff}}\)
- effective scatterer radius, µm
- \(\mathrm{BSC}\)
- backscatter coefficient, 1/(m·sr)
- \(n\)
- local spectral exponent of the BSC, dimensionless
- \(\propto\)
- proportional to
- \(f\)
- frequency, MHz
- \(\kappa,\ \rho\)
- compressibility (1/Pa) and density (kg/m³) of the medium
- \(\ln,\ d\)
- natural logarithm and differential (local log-log slope)
- \(0.827\)
- numerical constant of the Gaussian form factor, dimensionless
Attenuation is absorption (conversion to heat by relaxation processes) plus scattering out of the beam; in most soft tissues absorption is the larger part. Over the diagnostic band it follows a power law, and the one-way amplitude decays as \(\exp(-\alpha z)\):
- \(\alpha_0\)
- attenuation coefficient, dB/cm/MHz\(^y\)
- \(y\)
- power-law exponent, dimensionless
- \(f\)
- frequency, MHz
- \(z\)
- one-way depth, cm
- \(\alpha(f)\)
- attenuation coefficient at frequency \(f\), dB/cm
- \(\mathrm{Np},\ \mathrm{dB}\)
- neper and decibel (amplitude units)
Dispersion is forced by causality. A causal, linear medium has a response whose real and imaginary parts of the wavenumber are a Hilbert-transform (Kramers–Kronig) pair: frequency-dependent loss implies a frequency-dependent phase speed. For a power law the nearly local approximation (O'Donnell, Jaynes and Miller 1981; Szabo 1994) gives:
- \(c(\omega)\)
- phase speed at angular frequency ω, m/s
- \(\omega_0\)
- reference angular frequency, rad/s
- \(\alpha_1\)
- attenuation prefactor, Np·s\(^y\)/m
- \(\omega\)
- angular frequency, rad/s
- \(\alpha(\omega)\)
- attenuation coefficient, Np/m
- \(y\)
- as in (15.6)
- \(\ln,\ \tan\)
- natural logarithm, tangent (argument in rad)
Downshift. A Gaussian amplitude spectrum \(\exp[-(f - f_0)^2/(2\sigma_f^2)]\) multiplied by \(\exp(-\alpha_0' f z)\) (\(y = 1\), \(\alpha_0'\) in Np/(m·MHz)) is still Gaussian, shifted by completing the square:
- \(f_c(z)\)
- spectral centre (centroid) after path z, MHz
- \(f_0\)
- transmitted centre frequency, MHz
- \(\sigma_f\)
- standard deviation of the Gaussian amplitude spectrum, MHz
- \(\alpha_0'\)
- attenuation slope, Np/(m·MHz)
- \(z\)
- propagation path, m
Power-law attenuation, Kramers–Kronig dispersion and the pulse after z
Approx. modelpower law \(\alpha_0 f^y\), nearly local Kramers–Kronig dispersion, Gaussian pulse propagated by FFT (JS); plane waveAttenuation coefficients are quoted in dB/cm/MHz for amplitude, one-way. Simulators often want Np/m (multiply dB/cm by 100/8.686 = 11.5). Pulse-echo loss doubles the path; intensity loss in dB equals amplitude loss in dB, but in nepers intensity decays as \(\exp(-2\alpha z)\). Mixing any two of these gives errors of a factor 2 or 8.7.
15.4Diffraction and focusing
Huygens' principle made exact for a baffled planar aperture is the Rayleigh integral: every surface element radiates a spherical wavelet weighted by its normal velocity. Module 21 turns it into the spatial impulse response; here we need only its CW consequences.
- \(v_n\)
- normal surface velocity, m/s
- \(S\)
- aperture surface in a rigid baffle
- \(D(\theta)\)
- far-field directivity of a disc
- \(J_1\)
- Bessel function of the first kind, order 1
- \(a\)
- aperture radius, mm
- \(F\)
- geometric focal length, mm
- \(h\)
- depth of the spherical bowl, mm
- \(v_0\)
- surface velocity amplitude, m/s
- \(G\)
- focal pressure gain, dimensionless
- \(p(\mathbf{r})\)
- pressure at field point \(\mathbf{r}\), Pa
- \(\mathbf{r},\ \mathbf{r}'\)
- field point and source point on \(S\), m
- \(R\)
- distance between source and field point, m (not the reflection coefficient)
- \(\omega,\ \rho_0,\ k\)
- as in (15.1) and (15.2)
- \(j\)
- imaginary unit
- \(\theta\)
- angle from the axis, rad
- \(N\)
- near-field length (last axial maximum), mm
- \(\lambda\)
- wavelength, mm
- \(c,\ z\)
- sound speed (m/s) and axial distance from the bowl vertex (mm)
- \(dS\)
- surface element of the aperture, m²
- \(D\)
- aperture width (1D) or diameter (circular), mm
- \(F\)
- focal depth, mm
- \(x\)
- lateral position in the focal plane, mm
- \(\lambda\)
- wavelength, mm
- \(\operatorname{sinc}\)
- \(\sin(\pi u)/(\pi u)\)
- \(\operatorname{jinc}\)
- \(2J_1(\pi u)/(\pi u)\), circular-aperture analogue of sinc
15.5Nonlinear propagation: B/A, shock distance, Fubini and Burgers
Restore the second-order term of the adiabatic equation of state, expanded in the condensation \(s = \rho'/\rho_0\):
- \(s = \rho'/\rho_0\)
- condensation, dimensionless
- \(A,\ B\)
- first- and second-order coefficients of the adiabatic equation of state, Pa
- \(B/A\)
- nonlinearity parameter, dimensionless
- \(p',\ \rho_0,\ c_0\)
- as in (15.1)
- \(p,\ \rho\)
- total pressure (Pa) and density (kg/m³)
- \((\cdot)_s\)
- derivative at constant entropy
- \(\partial\)
- partial derivative
Two effects make high-pressure parts of the wave faster. The local sound speed rises (the B/2A part), and the medium itself moves with the wave (convection, the "1"). A point of the waveform with particle velocity \(u\) therefore travels at
- \(\beta\)
- coefficient of nonlinearity, dimensionless
- \(u,\ u_0\)
- particle velocity and its amplitude, m/s
- \(\tau\)
- retarded time, s
- \(p_0\)
- source pressure amplitude, Pa
- \(\omega,\ k\)
- angular frequency (rad/s) and wavenumber (rad/m)
- \(\varepsilon\)
- acoustic Mach number, dimensionless
- \(\bar{x}\)
- plane-wave shock-formation distance, m
- \(x,\ t\)
- propagation distance (m) and time (s)
- \(p\)
- acoustic pressure, Pa
- \(\rho_0,\ c_0\)
- as in (15.1)
- \(B/A\)
- as in (15.11)
Each point of the waveform travels at \(c_0 + \beta u\): compressions ahead, rarefactions behind, zero crossings at \(c_0\). Liver at 3 MHz and 1 MPa: \(\beta u_0 = 4.5 \times 10^6\ \mathrm{Pa}/(1060\ \mathrm{kg/m^3} \times 1578\ \mathrm{m/s})\) = 2.7 m/s, and \(\bar{x} = \rho c^3/(\beta\omega p_0)\) = 49 mm. Curves come from the lossless implicit solution \(p = p_0 \sin(\omega\tau + \sigma p/p_0)\) (dashed: undistorted sine), drawn for intuition. In tissue \(\Gamma \approx 1\), so absorption halts the steepening before \(\sigma = 1\); in a water tank (\(\Gamma \approx 90\)) the shock does form.
Fubini (1935) expanded the implicit solution in a Fourier series. With \(\sigma = x/\bar{x}\) and \(p/p_0 = \sum B_n \sin(n\omega\tau)\):
- \(\sigma = x/\bar{x}\)
- shock parameter (distance over shock distance), dimensionless
- \(B_n\)
- amplitude of harmonic n relative to \(p_0\)
- \(J_n\)
- Bessel function of the first kind, order n
- \(n\)
- harmonic order (1 = fundamental)
- \(x,\ \bar{x}\)
- distance (m) and shock distance from (15.12)
- \(p_0\)
- as in (15.12)
Absorption competes. The Burgers equation adds thermoviscous loss to plane-wave nonlinearity; the KZK equation adds diffraction (parabolic) as well, and is the standard model for focused nonlinear beams:
- \(\delta\)
- sound diffusivity, m²/s
- \(\nabla_\perp^2\)
- Laplacian in the plane transverse to the beam axis
- \(\alpha(f)\)
- attenuation at frequency f, Np/m
- \(\Gamma\)
- Gol’dberg number, dimensionless
- \(x,\ z\)
- distance along the beam axis, m
- \(\tau\)
- retarded time, s
- \(p\)
- acoustic pressure, Pa
- \(\beta,\ \rho_0,\ c_0\)
- as in (15.12) and (15.1)
- \(\sigma,\ B_n,\ \bar{x}\)
- as in (15.12) and (15.13)
- \(k\)
- summation index over harmonics (not the wavenumber)
- \(f_0\)
- transmit centre frequency, MHz
- \(\partial\)
- partial derivative
Harmonic growth and waveform steepening in a plane wave
Simulationcoupled-harmonic Burgers equation, 48 harmonics, exact absorption step + RK4 nonlinearity (JS); plane wave. Dashed and lossless curves: Fubini and sawtooth closed formsThe demo is a plane wave. A focused beam has low pressure near the aperture and gain \(G\) at the focus, so harmonic generation concentrates near the focus; diffraction also shifts the harmonic phase relative to the fundamental. Use KZK or a nonlinear full-wave code (k-Wave, Module 21) for quantitative focused-beam work, and use \(\bar{x}\) and \(\Gamma\) for orders of magnitude. Diagnostic in-situ pressures of 1–3 MPa at 2–5 MHz give \(\bar{x}\) of a few centimetres: harmonics are always present in the measured field (Module 21, hydrophone bandwidth) and in the echo.
15.6Tissue harmonic imaging: narrower beams, lower sidelobes, less clutter
In the quasi-linear (weak-nonlinearity) approximation the second harmonic is generated locally at a rate proportional to the square of the fundamental pressure, and then propagates linearly at \(2f_0\). In the focal region the harmonic transmit pattern is therefore close to the square of the fundamental transmit pattern, and the echo is received by the array at \(2f_0\):
- \(p_2\)
- local second-harmonic source strength
- \(P_{\mathrm{tx}},\ P_{\mathrm{rx}}\)
- transmit and receive lateral (focal-plane) patterns
- \(\lambda_0\)
- wavelength at \(f_0\), mm
- \(u\)
- normalized lateral coordinate, dimensionless
- \(x\)
- lateral position in the focal plane, mm
- \(D,\ F\)
- as in (15.10)
- \(f_0,\ 2f_0\)
- fundamental and second-harmonic frequencies, MHz
- \(\operatorname{sinc}\)
- as in (15.10)
Envelopes are Gaussian-beam −6 dB half-widths for a 19.2 mm aperture focused at 50 mm, 3 MHz (source 1/e half-width 0.4D); the harmonic transmit envelope is the fundamental one divided by \(\sqrt{2}\) (the square of a Gaussian), and its build-up with depth (shading) is drawn schematically. With \(\lambda_0 F/D\) = 1.34 mm the focal −6 dB widths are: \(f_0\) one-way 1.207 → 1.61 mm, harmonic transmit (\(\operatorname{sinc}^2\)) 0.886 → 1.18 mm, fundamental two-way 0.886 → 1.18 mm, harmonic two-way 0.511 → 0.68 mm. The near-field body wall sees a weak harmonic source, which is why its reverberations add little \(2f_0\).
Why less clutter. Three mechanisms, all from the \(p^2\) dependence: (1) reverberation and off-axis energy are weak, so the harmonic they generate is weaker by twice as many decibels (−20 dB clutter becomes −40 dB); (2) the harmonic is not present at the aperture and builds up with depth, so multiple reflections in the body wall, which involve the strong near field, generate comparatively little \(2f_0\); (3) aberrating layers near the skin degrade the fundamental, but the harmonic is generated deeper, after much of that path. Sidelobes and grating lobes of the transmit beam are squared as well.
What it costs. The harmonic is 15–25 dB below the fundamental at the depths of interest (Demo 15.4), so SNR and penetration fall; the receive band at \(2f_0\) suffers twice the attenuation in dB; and if the harmonic is separated by filtering, transmit bandwidth must be limited so that the fundamental spectrum does not leak into the harmonic band (15.7). On receive at \(2f_0\) an array designed for \(f_0\) has its pitch doubled relative to λ, so its receive grating lobes move inward; the squared transmit pattern suppresses them, as Demo 15.5 shows.
Fundamental versus second-harmonic beam of a linear array
Approx. modelCW far-field array factor × element factor; harmonic source = (transmit pattern)², quasi-linear, no build-up along the pathSound-speed estimators and aberration-correction metrics (coherence, focusing quality) behave differently on harmonic data: the harmonic is generated after part of the aberrating path, so phase screens estimated from harmonic channel data are not the same as fundamental ones. ULM and CEUS rely on the bubble's own nonlinearity (Module 28); tissue harmonics are then the clutter that PI and AM must also suppress.
15.7Pulse inversion, amplitude modulation, bandwidth and frequency compounding
Write the echo as a Volterra series in the transmit amplitude \(a\): \(e(a) = a e_1 + a^2 e_2 + a^3 e_3 + \dots\), where \(e_k\) is the \(k\)-th order response (for tissue, the propagation distortion; for a bubble, its oscillation). Multi-pulse schemes combine echoes so that chosen orders cancel exactly, independent of bandwidth:
- \(a\)
- transmit amplitude (relative)
- \(e_k\)
- k-th order echo response
- \(\delta\)
- time shift between the two echoes, s
- \(v\)
- axial tissue velocity, m/s
- \(\mathrm{PRF}\)
- pulse repetition frequency, Hz
- \(e(a)\)
- echo (received signal) for a transmit of amplitude \(a\)
- \(f_0\)
- transmit centre frequency, Hz
- \(c\)
- sound speed, m/s
- \(\sin\)
- sine (argument in rad)
Waveforms: 3 MHz, 50 % Gaussian pulse distorted by the lossless plane-wave solution at σ = 0.35 (as in Demo 15.6); the sum is drawn three times larger. Odd orders change sign with the transmit and cancel; even orders do not and add, so the \(2f_0\) band gains 6 dB and a difference-frequency (near-DC) term remains. Motion between the two transmits shifts the second echo by \(\delta = 2v/(c \cdot \mathrm{PRF})\): 2.6 ns at 10 mm/s and 5 kHz, which leaves a fundamental residual \(2 \lvert \sin(\pi f_0 \delta) \rvert\) = −26 dB at 3 MHz. Pulser asymmetry sets a −30 to −40 dB floor.
Filtering instead of cancelling. A single pulse plus a band-pass filter at \(2f_0\) needs separate bands. For Gaussian spectra the fundamental half-width at \(L\) dB is \((B/2) f_0 \sqrt{L/6}\), and the harmonic spectrum (the square of the pulse) is \(\sqrt{2}\) wider in hertz, so the two meet at the \(L\) dB level when
- \(B\)
- fractional (−6 dB) transmit bandwidth
- \(L\)
- level below the peak, in dB, at which the \(f_0\) and \(2f_0\) spectra meet
Frequency compounding splits the receive band into \(N\) sub-bands, envelope-detects each and averages. Speckle from sub-bands that do not overlap much is nearly uncorrelated, so the speckle SNR (mean/std of the envelope, 1.91 for fully developed speckle) rises toward \(1.91\sqrt{N}\), while each sub-band's narrower bandwidth lengthens the pulse by \(N\). Combining fundamental and harmonic images is a special case with two bands.
Pulse inversion and amplitude modulation on tissue and on a nonlinear scatterer
Approx. modeltissue echo = transmit pulse distorted by the lossless plane-wave solution at fixed σ; polynomial scatterer; rigid motion between pulsesPI assumes the inverted pulse is an exact negative of the first. Pulser asymmetry (unipolar rise and fall times, Module 20) and transducer nonlinearity leave a residual fundamental at the −30 to −40 dB level that no processing removes; AM needs the half-amplitude pulse to be an exact scaled copy, which is why systems often realise it by firing alternate elements rather than lowering the voltage.
15.8Visual summary
Fifteen pictures that carry the module. Each card is a question to answer in five seconds, the answer with its number, and a figure computed in the page; the badge on each card says whether it is a closed form, a simulation or an approximate model (c = 1540 m/s unless stated).
15.9How experts think about it
An expert keeps three small parameters in view and asks which one is not small. Impedance contrast \(\Delta Z/Z\) sets what reflects and how much; \(ka\) sets how it scatters; the Mach number \(\varepsilon\), multiplied by \(kx\) and \(\beta\), sets whether the wave is still linear (\(\sigma = \beta\varepsilon k x\)). Everything else is a ratio of lengths: the path relative to \(1/\alpha\) (attenuation), to \(a^2/\lambda\) (diffraction) and to \(\bar{x}\) (nonlinearity), and \(\Gamma = 1/(\alpha\bar{x})\) says whether absorption or nonlinearity wins. Harmonic imaging is the \(p^2\) law applied to beams: anything weak gets weaker by twice as many decibels.
Eliminating \(\rho'\) between \(\partial\rho'/\partial t + \rho_0 \nabla \cdot \mathbf{u} = 0\), \(\rho_0\, \partial\mathbf{u}/\partial t = -\nabla p\) and \(p = c_0^2 \rho'\) gives the wave equation, whose 1D solutions are any two shapes moving in opposite directions at \(c_0\). Sound speed is stiffness over inertia: water's adiabatic compressibility \(4.5 \times 10^{-10}\) Pa⁻¹ and density 998 kg/m³ give 1490 m/s. The neglected terms are of relative order \(\varepsilon = u_0/c_0 = p_0/(\rho_0 c_0^2)\), \(4 \times 10^{-4}\) at 1 MPa in tissue.
For an outgoing spherical wave \(u = (p/\rho c)(1 + 1/jkr)\), so the impedance is resistive only for \(kr \gg 1\). At 3 MHz \(kr = 1\) is 0.08 mm from a point source: element near fields are reactive, which is why Rayleigh-integral codes need care close to the face. In the plane-wave region intensity is \(p^2/(2Z)\): 1 MPa in tissue carries 31 W/cm² during the pulse, the number behind \(I_{\mathrm{SPPA}}\) (Module 22).
Soft-tissue impedances lie within ±10 % of 1.6 MRayl, so \(\lvert R \rvert \le 0.1\). Fat → muscle (1.38 → 1.66 MRayl): R = 0.093, −20.7 dB; liver → muscle −48 dB. Soft tissue → skull: R = 0.54 (29 % of the energy). Tissue → air: −0.9995, which is why coupling gel exists and lung and bowel gas hide what lies behind them. A negative R flips the pulse polarity.
Continuity of pressure gives \(1 + R = T\). Entering a stiffer medium the pressure rises (\(T\) up to 2 for a rigid wall) but intensity is \(p^2/2Z\), so \(T_I = (Z_1/Z_2) T^2\). Tissue → skull: T = 1.54, \(T_I\) = 0.71; PZT (33 MRayl) → tissue: T = 0.09 and \(T_I\) = 0.18, which is the matching-layer problem of Module 17. \(T_I\) is symmetric in \(Z_1\) and \(Z_2\): the energy loss is the same in both directions.
The trace velocity along the boundary \(c/\sin\theta\) must match on both sides. Into faster media the ray bends away from the normal and stops transmitting at \(\theta_c\), beyond which \(\lvert R \rvert = 1\) and the transmitted field is evanescent. Small speed contrasts matter at oblique incidence: 1450 → 1580 m/s turns a 40° ray into 44.5°. Into slower media (muscle → fat) there is no critical angle.
A fluid–solid boundary has three conditions (\(u_z\), \(\sigma_{zz}\) continuous, \(\sigma_{xz} = 0\)), so one incident wave makes three. With \(c_L\) = 2820, \(c_S\) = 1500 m/s and ρ = 1900 kg/m³ (skull, 1 MHz), the exact solution gives 29 % reflected at normal incidence, total longitudinal cut-off at 33.1°, a reflection spike to almost 100 % at the cut-off, and 93–97 % of the energy carried by shear between 40° and 70°. Shear attenuation in bone is several times the longitudinal one.
The scanner converts time to depth with 1540 m/s; fat (1450 m/s) takes longer, so everything below it is displayed deeper by \(d(1540/1450 - 1) = 0.062d\). A fat wedge with a 20° exit face in muscle refracts the beam by \(\arcsin(1.09 \sin 20^\circ) - 20^\circ = 1.88^\circ\), a 2.0 mm lateral shift at 6 cm, larger than the 0.5–1 mm lateral resolution: the classic duplicated image below the rectus muscles. Delay errors across the aperture also defocus.
A scatterer much smaller than λ radiates as a monopole (compressibility contrast) plus a dipole (density contrast) driven by the incident field; both amplitudes scale with volume × \(k^2\), so power scales as \(k^4 a^6\). Finite size adds a form factor; with the Gaussian one used in QUS the local exponent falls as \(4 - 1.654 (k a_{\mathrm{eff}})^2\), reaching 2 at \(ka = 1.10\) (54 µm at 5 MHz). Blood is close to Rayleigh; liver shows exponents of order 1–3.
Soft tissue attenuates roughly linearly in frequency (\(y \approx 1\)–1.3), so the round-trip loss is \(2\alpha_0 f z\) in dB. At 0.5 dB/cm/MHz a 60 dB budget gives \(z = 60/(2 \times 0.5 \times f)\): 20, 12 and 6 cm at 3, 5 and 10 MHz. Harmonic imaging receives at \(2f_0\), so the return path costs twice as much: a 3 MHz harmonic image loses about as much as a 4.5 MHz fundamental image.
Causality makes the attenuation and the phase speed a Hilbert-transform pair (Kramers–Kronig). For \(\alpha = \alpha_1 \lvert \omega \rvert\) the nearly local form gives \(\Delta c \approx c_0^2 (2/\pi) \alpha_1 \ln(\omega/\omega_0)\): with \(\alpha_0\) = 0.5 dB/cm/MHz (\(\alpha_1 = 9.2 \times 10^{-7}\) s/m) that is 1.38 m/s per neper, 3.2 m/s from 1 to 10 MHz; 1 dB/cm/MHz doubles it. It matters when comparing sound speeds measured at different frequencies, and in time-domain simulators that model power-law loss.
O'Neil's on-axis solution gives \(\lvert p(F) \rvert/\rho c v_0 = kh\), with \(h = F - \sqrt{F^2 - a^2}\) the depth of the bowl: the path difference between the centre and the rim, in radians. The maximum moves toward the transducer when \(G\) is only about 10 (here 10.8 at 54.5 mm instead of 10.3 at 60 mm). Lateral −6 dB width: \(1.41 \lambda F/D\) for a disc, \(1.21 \lambda F/D\) for a line aperture; −17.6 and −13.3 dB first sidelobes.
Expanding the adiabatic equation of state to second order, \(p' = As + (B/2)s^2\), gives a pressure-dependent sound speed \(c \approx c_0 + (B/2A)u\). The medium also moves with velocity \(u\), so a point of the waveform travels at \(c_0 + \beta u\). Water 4.96 at 20 °C, blood 6.1, liver 6.5–7.6, muscle 7–8, fat 9.6–11.3: a fatty liver has a higher B/A, which is the basis of proposed B/A imaging.
The zero crossing of a sine moves at \(c_0\) and the peak at \(c_0 + \beta u_0\); the slope there becomes vertical when the accumulated lag \(\beta u_0 x/c_0^2\) equals \(1/\omega\), i.e. at \(\bar{x} = c_0^2/(\beta\omega u_0)\). With \(u_0 = p_0/\rho c\): water at 3 MHz gives 98.5, 49.2 and 24.6 mm for 0.5, 1 and 2 MPa; liver 49.1 mm and fat 25.6 mm at 1 MPa. Diagnostic in-situ pressures make \(\bar{x}\) a few centimetres: harmonics are unavoidable.
Fubini gives \(B_2 = J_2(2\sigma)/\sigma \approx \sigma/2\) for small \(\sigma\): −26 dB at σ = 0.1, −12.5 dB re the fundamental at σ = 0.5. With absorption \(\alpha \propto f\) (coupled-harmonic solution) the peak of \(B_2\) is −10.2 dB for \(\Gamma = 10\), −13.7 dB for \(\Gamma = 3\) and −21.1 dB at \(\sigma \approx 0.47\) for \(\Gamma = 1\). Liver at 3 MHz, 1 MPa has \(\Gamma = 1.06\), water \(\Gamma \approx 90\): tissue harmonics never get near shock in practice, water tank harmonics do.
In the quasi-linear approximation the \(2f_0\) source density is proportional to \(p_1^2\), so the harmonic transmit profile is the square of the fundamental one. For a line aperture the −6 dB width falls from 1.207 to 0.886 \(\lambda_0 F/D\) (× 0.734; × 0.73 for a disc, \(1/\sqrt{2}\) for a Gaussian). Received at \(2f_0\) the two-way width is 0.511 \(\lambda_0 F/D\), 0.58 times the fundamental two-way width and close to the 0.443 of a probe driven at \(2f_0\).
Every source of clutter in the fundamental image is a weaker copy of the main beam: sidelobes, grating lobes, reverberation between layers of the body wall. The harmonic generated by a field of relative level \(L_1\) dB is \(2L_1\) dB. Near the aperture of a beam with focal gain \(G = 10\), the local harmonic generation rate is \((1/G)^2\) = −40 dB below its focal value, so reverberations in the body wall generate little \(2f_0\). This, more than resolution, is why THI is the default in difficult abdominal and cardiac windows.
Write the echo as a Volterra series in the transmit amplitude: odd orders flip sign with the pulse, even orders do not. PI therefore removes the fundamental at any bandwidth and gains 6 dB on the harmonic. A shift \(\delta\) between the two echoes leaves \(\lvert 1 - e^{-j2\pi f_0 \delta} \rvert = 2 \lvert \sin(\pi f_0 \delta) \rvert\): \(\delta = 2v/(c \cdot \mathrm{PRF})\) = 2.6 ns for 10 mm/s at 5 kHz, −26 dB at 3 MHz, comparable to the harmonic itself.
For Gaussian spectra the fundamental's half-width at \(L\) dB is \((B/2) f_0 \sqrt{L/6}\) and the harmonic spectrum, that of the squared pulse, is \(\sqrt{2}\) wider in hertz. The skirts meet at \(f_0 + (B/2) f_0 \sqrt{L/6}\) \(= 2f_0 - (\sqrt{2}B/2) f_0 \sqrt{L/6}\), i.e. \(B = 2/[(1 + \sqrt{2})\sqrt{L/6}]\): 83 % at −6 dB, 45 % at −20 dB, 37 % at −30 dB. Narrower transmit means longer pulses: the axial-resolution price that PI and AM avoid.
15.10Cheat sheet
| Concept | Formula | Ultrasound use |
|---|---|---|
| Linear wave equation | \(\nabla^2 p - c^{-2} \partial^2 p/\partial t^2 = 0\), \(c^2 = 1/(\rho\kappa_s)\) | Basis of DAS delays and linear simulators |
| Impedance, intensity | \(Z = \rho c\); \(I = p^2/(2Z)\) | Reflection, \(I_{\mathrm{SPPA}}\) |
| Spherical-wave impedance | \(\rho c \cdot jkr/(1 + jkr)\) | Near-field reactive energy |
| Normal incidence | \(R = (Z_2 - Z_1)/(Z_2 + Z_1)\), \(T = 1 + R\), \(T_I = 4Z_1 Z_2/(Z_1 + Z_2)^2\) | Echo amplitudes, matching |
| Snell, critical angle | \(\sin\theta_1/c_1 = \sin\theta_2/c_2\); \(\theta_c = \arcsin(c_1/c_2)\) | Refraction, transcranial windows |
| Oblique fluid–fluid R | \((Z_2\cos\theta_1 - Z_1\cos\theta_2)/(Z_2\cos\theta_1 + Z_1\cos\theta_2)\) | Angle-dependent echoes |
| Depth error of a layer | \(\Delta z = d(c_0/c_L - 1)\) | Fat-layer bias, sound-speed estimation |
| Rayleigh scattering | \(\sigma \propto k^4 a^6\); \(\mathrm{BSC} \propto f^4 \exp(-0.827 k^2 a_{\mathrm{eff}}^2)\) | Speckle, QUS scatterer size |
| Power-law attenuation | \(\alpha = \alpha_0 f^y\); round trip \(2\alpha_0 f z\) dB | Penetration, TGC |
| Kramers–Kronig dispersion | \(y = 1\): \(\Delta(1/c) = -(2/\pi)\alpha_1 \ln(\omega/\omega_0)\) | Frequency-dependent c |
| Gaussian downshift | \(f_c = f_0 - \sigma_f^2 \alpha_0' z\) | Spectral-shift attenuation estimation |
| Focused piston | \(G = kh \approx ka^2/2F\); −6 dB width \(1.41 \lambda F/D\) (disc), \(1.21 \lambda F/D\) (line) | Focal pressure, resolution |
| Nonlinearity | \(B/A = 2\rho c\, \partial c/\partial p\); \(\beta = 1 + B/2A\) | Harmonic generation, B/A imaging |
| Shock distance | \(\bar{x} = \rho c^3/(\beta\omega p_0) = 1/(\beta\varepsilon k)\) | When harmonics matter |
| Fubini | \(B_n = 2J_n(n\sigma)/(n\sigma)\); \(B_2 \approx \sigma/2\) | Harmonic levels before shock |
| Gol'dberg number | \(\Gamma = 1/(\alpha\bar{x})\) | Shock forms (\(\Gamma \gg 1\)) or not (\(\Gamma \lesssim 1\)) |
| Harmonic beam | \(P_{\mathrm{tx}}(f_0)^2 \cdot P_{\mathrm{rx}}(2f_0)\); \(\operatorname{sinc}^2(u) \operatorname{sinc}(2u)\) | THI resolution and clutter |
| Pulse inversion, AM | \(e(s) + e(-s)\); \(e(s) - 2e(s/2)\) | THI, contrast imaging |
| Motion residual | \(2 \lvert \sin(\pi f_0 \delta) \rvert\), \(\delta = 2v/(c \cdot \mathrm{PRF})\) | Multi-pulse sensitivity to motion |
| Band separation | \(B = 2/[(1 + \sqrt{2})\sqrt{L/6}]\) | Transmit bandwidth for filter THI |
15.11Interview and qualifying-exam questions
I1Derive the linear acoustic wave equation. Which terms does linearization drop, and how big are they? · screen
Linearized mass (\(\partial\rho'/\partial t + \rho_0 \nabla \cdot \mathbf{u} = 0\)), momentum (\(\rho_0\, \partial\mathbf{u}/\partial t = -\nabla p\)) and state (\(p = c_0^2 \rho'\)); take \(\partial/\partial t\) of the first, the divergence of the second and eliminate: \(\nabla^2 p = c_0^{-2} \partial^2 p/\partial t^2\). Dropped: \(\nabla \cdot (\rho' \mathbf{u})\), \(\rho_0 (\mathbf{u} \cdot \nabla) \mathbf{u}\), \(\rho'\, \partial \mathbf{u}/\partial t\) and \((B/2) s^2\), all of relative order \(\varepsilon = p_0/(\rho_0 c_0^2)\), about \(4 \times 10^{-4}\) at 1 MPa. Follow-up: "Then why do harmonics matter?" Because the error accumulates with distance: the relevant parameter is \(\sigma = \beta\varepsilon k x\), which reaches 0.5 in 2–3 cm at diagnostic pressures.
I2Why is soft-tissue contrast weak in B-mode, and what amplitude does a fat–muscle boundary return? · screen
Soft-tissue impedances are all within about 10 % of 1.6 MRayl. Fat → muscle (1.38 → 1.66 MRayl): R = 0.093, −20.7 dB; liver → muscle about −48 dB. Most of the image is diffuse scattering from sub-resolution structure, 40–60 dB below a specular reflector, displayed after log compression. Follow-up: "And air?" R = −0.9995, the polarity inverts and 0.1 % of the energy crosses: gel, and acoustic shadows behind gas.
I3A beam hits the skull at 45°. What happens to its energy? · onsite
The longitudinal critical angle is \(\arcsin(1540/2820)\) = 33.1°, so no longitudinal wave enters. The boundary still transmits by mode conversion: solving the three boundary conditions gives about 93 % of the energy as a shear wave and 7 % reflected (\(c_S\) = 1500 m/s, ρ = 1900 kg/m³). The shear wave is refracted toward the normal (\(c_S < c_1\)) and attenuates strongly in bone; at the inner table it converts back to longitudinal. Follow-up: "Why do transcranial studies avoid this regime?" Shear attenuation and the extra mode conversions; normal incidence keeps 71 % in the longitudinal wave.
I4How does a subcutaneous fat layer bias an image and a sound-speed estimate, and how would you correct it? · research
Axially, \(d(c_0/c_f - 1)\): 2 cm of fat at 1450 m/s puts everything 1.24 mm deeper. Laterally, oblique fat–muscle boundaries refract (a 20° wedge deviates 1.9°, 2 mm at 6 cm) and duplicate structures. Across the aperture, path lengths in fat differ, so delays are wrong and the focus loses coherence. A global sound-speed estimator returns a path-averaged speed biased by the layer; local estimators (CUTE-style phase-shift tomography, layered inversion) model the layer explicitly, and aberration correction applies the residual delays. Follow-up: "What does the FDTD/k-Wave check add?" Reflections and mode conversion that ray models miss.
I5Rayleigh scattering goes as \(f^4\). Why are measured backscatter exponents in tissue usually below 4? · onsite
\(f^4\) holds for \(ka \ll 1\). Real scatterers have finite size and correlated structure; the form factor rolls the BSC off. With the Gaussian form factor \(\exp(-0.827 k^2 a_{\mathrm{eff}}^2)\) the local exponent is \(4 - 1.654 (k a_{\mathrm{eff}})^2\), equal to 2 at \(ka = 1.10\) (54 µm at 5 MHz). Fitting that exponent is how QUS estimates effective scatterer size (Module 27). Follow-up: "What else biases the slope?" Uncorrected attenuation and diffraction, and gating, which is why reference-phantom normalization is used.
I6Why must frequency-dependent attenuation come with dispersion? Estimate it for liver. · research
Causality makes the complex wavenumber analytic in the upper half-plane, so its real (phase) and imaginary (loss) parts are a Kramers–Kronig pair. For \(\alpha = \alpha_1 \lvert \omega \rvert\) the nearly local result is \(\Delta(1/c) = -(2/\pi)\alpha_1 \ln(\omega/\omega_0)\). With 0.5 dB/cm/MHz, c rises 1.38 m/s per neper of ln f, 3.2 m/s from 1 to 10 MHz (3.6 m/s for y = 1.1). Follow-up: "Where does this matter?" Comparing sound speeds measured at different frequencies, and time-domain simulators (fractional Laplacian terms in k-Wave) that must include it to be causal.
I7Define B/A and β, and compute the shock distance in liver at 2 MHz, 1 MPa. · onsite
\(B/A = 2\rho_0 c_0 (\partial c/\partial p)_s\), the second-order coefficient of the equation of state relative to the first; \(\beta = 1 + B/2A\) adds convection. Liver: B/A ≈ 7, β = 4.5, ρ = 1060 kg/m³, c = 1578 m/s: \(\bar{x} = \rho c^3/(\beta\omega p_0)\) \(= 1060 \times 1578^3/(4.5 \times 2\pi \times 2 \times 10^6 \times 10^6)\) = 73.7 mm (29.5 mm at 5 MHz). Follow-up: "Will it shock?" No: α at 2 MHz ≈ 12.4 Np/m gives \(\Gamma \approx 1.1\), so absorption balances nonlinearity and the harmonic saturates near \(\sigma \approx 0.5\).
I8Why is the tissue-harmonic beam narrower, with lower sidelobes? Give numbers. · onsite
The harmonic source density is \(\propto p_1^2\), so the transmit profile is squared: for a line aperture the −6 dB width goes from 1.207 to 0.886 \(\lambda_0 F/D\) and the first sidelobe from −13.3 to −26.5 dB. Received at \(2f_0\) the two-way pattern is \(\operatorname{sinc}^2(u) \operatorname{sinc}(2u)\): 0.511 \(\lambda_0 F/D\) (0.58 × the fundamental two-way) with −27.9 dB first sidelobe. Grating lobes of the \(2f_0\) receive pattern are suppressed by the squared transmit. Follow-up: "Why not just transmit at \(2f_0\)?" Attenuation doubles in dB on the way down, and the \(f_0\)-designed array would have transmit grating lobes at \(2f_0\).
I9Why does THI reduce clutter in difficult patients? · screen
\(p^2\) dependence: clutter at −20 dB (reverberation, sidelobes, off-axis scatter) produces harmonic at −40 dB. The harmonic is absent at the skin and builds up with depth, so near-field reverberations in the body wall contribute little, and the harmonic is generated after part of the aberrating path. Follow-up: "Cost?" 15–25 dB less signal, twice the receive attenuation in dB, narrower usable bandwidth with filtering, or half the frame rate with PI.
I10Compare pulse inversion and amplitude modulation. What limits each in vivo? · onsite
With \(e(a) = \sum a^k e_k\): PI, \(e(a) + e(-a)\), keeps even orders (+6 dB on \(2f_0\)) and removes the fundamental at full bandwidth; AM, \(e(a) - 2e(a/2)\), removes the linear term but keeps ½ of the quadratic and ¾ of the cubic terms, including the nonlinear fundamental, useful for bubbles. Both need two transmits (half frame rate) and identical pulses; motion leaves \(2 \lvert \sin(\pi f_0 \delta) \rvert\): −26 dB at 10 mm/s, 5 kHz, 3 MHz. Follow-up: "How do you reduce the motion residual?" Higher PRF, motion compensation, or three-pulse sequences that cancel the linear residual to higher order.
I11How would you simulate harmonic imaging for a new probe, and what would you check first? · research
Linear codes (Field II) cannot make harmonics. For a homogeneous focused beam, a KZK solver (axisymmetric or 3D) with tissue power-law absorption and B/A; for heterogeneous media and aberration, a nonlinear full-wave code (k-Wave with β and power-law absorption). First checks: plane-wave limit against Fubini (\(\sigma \le 1\)) and the Gol'dberg behaviour, the on-axis fundamental against O'Neil, grid convergence with at least the third or fourth harmonic resolved (PPW counted at the highest harmonic). Then compare the simulated \(2f_0\) focal width with the \(p^2\) prediction. Follow-up: "Measurement?" Hydrophone with bandwidth to 3–5 \(f_0\) (Module 21).
15.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.
m15_wave_fdtd_interface.m1D staggered FDTD at an impedance step and through a λ/4 layer, measured R, T and energy versus theory; exact tissue–skull energy partition with shear · change media, layer, \(f_0\) · runtime ≈ 2 s
%% m15_wave_fdtd_interface.m
% Purpose : 1D linear acoustic FDTD (staggered pressure / particle velocity, leapfrog)
% launched at an impedance step and through a quarter-wave layer.
% Measured reflected / transmitted ENERGY fractions are compared with
% R = (Z2-Z1)/(Z2+Z1) and 1 - R^2 (band-averaged for the layer case).
% A second cell computes oblique-incidence energy partition at a
% soft-tissue / skull-bone interface, including mode conversion to shear.
% Change : the cases table (c, rho of each medium, layer), f0, FBW, PPW.
% Expect : fat->muscle R^2 = 0.0086 (R = 0.093, -20.7 dB)
% tissue->skull R^2 = 0.288 ; tissue->air-like R^2 = 0.997
% PZT (30 MRayl)->tissue R^2 = 0.81 bare, 0.18 band-averaged with a lambda/4 layer of
% sqrt(Z1 Z2) (zero at f0 only; 60 % pulse)
% skull: critical angle 33.1 deg, > 90 % of the energy enters as shear at 40-70 deg
% Runtime : about 3 s in Octave.
clear; close all; rng(1);
%% Parameters
f0 = 3e6; % centre frequency (Hz)
FBW = 0.6; % -6 dB fractional bandwidth of the Gaussian pulse
PPW = 24; % points per wavelength at f0 in the slowest medium
sf = FBW*f0/(2*sqrt(2*log(2))); % spectral std (Hz)
st = 1/(2*pi*sf); % envelope std (s)
pulse = @(t) exp(-t.^2/(2*st^2)).*sin(2*pi*f0*t);
% name, c1, rho1, c2, rho2, layer thickness (m), c_layer, rho_layer
cases = { 'fat -> muscle', 1450, 950, 1580, 1050, 0, 0, 0;
'soft tissue -> skull', 1540, 1050, 2820, 1900, 0, 0, 0;
'soft tissue -> air-like', 1540, 1050, 1000, 1.2, 0, 0, 0;
'PZT -> tissue, bare', 4000, 7500, 1540, 1050, 0, 0, 0;
'PZT -> tissue, lambda/4', 4000, 7500, 1540, 1050, 2500/(4*f0), 2500, NaN };
Z1Z2 = 4000*7500*1540*1050; cases{5,8} = sqrt(Z1Z2)/2500; % layer impedance sqrt(Z1 Z2)
fprintf('%-26s %8s %8s %8s %8s %9s %9s\n', 'case', 'R th', 'R meas', 'T th', 'T meas', 'Er th', 'Er meas');
snap = {};
for ic = 1:size(cases, 1)
c1 = cases{ic,2}; r1 = cases{ic,3}; c2 = cases{ic,4}; r2 = cases{ic,5};
dL = cases{ic,6}; cL = cases{ic,7}; rL = cases{ic,8};
cmin = min([c1 c2]); cmax = max([c1 c2]); if dL > 0, cmin = min(cmin, cL); cmax = max(cmax, cL); end
dx = cmin/f0/PPW; if dL > 0, dx = dL/ceil(dL/dx); end % layer = whole number of cells
dt = 0.95*dx/cmax;
xI = (round(15e-3/dx) - 0.5)*dx; % interface position (m), midway between p nodes
x0 = xI - 9e-3; % initial pulse centre
xA = xI - 4e-3; xB = xI + dL + 2e-3; % receivers in medium 1 and medium 2
tEnd = (xA - x0 + 8e-3)/c1 + 3e-6; % reflected pulse (and layer ring-down) past receiver A
xEnd = xB + c2*tEnd + 2e-3;
x = (0:dx:xEnd)'; nx = numel(x); xh = x + dx/2; % p at x, u at x + dx/2
c = c2*ones(nx,1); rho = r2*ones(nx,1);
c(x < xI) = c1; rho(x < xI) = r1;
if dL > 0, in = (x >= xI) & (x < xI + dL); c(in) = cL; rho(in) = rL; end
K = rho.*c.^2; % bulk modulus at p nodes
rh = rho; rh(1:end-1) = 0.5*(rho(1:end-1) + rho(2:end)); % density at u nodes
% initial right-going pulse: p(x,0) = s(-(x-x0)/c1); u = p/Z1 half a time step later
p = pulse(-(x - x0)/c1); p(x >= xI) = 0;
u = pulse(-(xh - x0)/c1 + dt/2)/(r1*c1); u(xh >= xI) = 0; % u lives at t = +dt/2 (leapfrog)
nt = ceil(tEnd/dt); iA = round(xA/dx) + 1; iB = round(xB/dx) + 1;
pA = zeros(nt,1); pB = zeros(nt,1);
for n = 1:nt
p(2:end) = p(2:end) - dt*K(2:end).*(u(2:end) - u(1:end-1))/dx; % dp/dt = -K du/dx
u(1:end-1) = u(1:end-1) - dt./rh(1:end-1).*(p(2:end) - p(1:end-1))/dx; % du/dt = -(1/rho) dp/dx
pA(n) = p(iA); pB(n) = p(iB);
if n == round((xI - x0 + 3e-3)/c1/dt), snap{ic} = [x p]; end %#ok<SAGROW>
end
t = (1:nt)'*dt; tm = (xA - x0 + 4e-3)/c1; % split incident / reflected at receiver A
inc = pA.*(t < tm); ref = pA.*(t >= tm);
% pressure coefficients by projection onto the incident waveform (shifted to each arrival)
shiftTo = @(sig, d) interp1(t, sig, t - d, 'linear', 0);
incR = shiftTo(inc, 8e-3/c1); % incident shape at the reflected arrival
incT = shiftTo(inc, (xI - xA)/c1 + dL*(dL > 0)/max(cL,1) + (xB - xI - dL)/c2);
% allow a small residual shift (the material jump sits between grid nodes): best-aligned projection
proj = @(sig, ref0) max(arrayfun(@(d) abs(sum(sig.*shiftTo(ref0, d))), (-40:40)*dt/4)) / sum(ref0.^2);
Rm = sign(sum(ref.*incR))*proj(ref, incR); Tm = proj(pB, incT);
Erm = sum(ref.^2)/sum(inc.^2); % reflected energy flux ratio (same medium)
Rth = (r2*c2 - r1*c1)/(r2*c2 + r1*c1); Tth = 1 + Rth;
if dL == 0
Erth = Rth^2;
else % band-averaged energy reflection of the layer, weighted by the pulse power spectrum
f = linspace(f0 - 4*sf, f0 + 4*sf, 801); f = f(f > 0); w = exp(-(f - f0).^2/sf^2);
Za = r1*c1; Zb = r2*c2; Zl = rL*cL; kd = 2*pi*f*dL/cL;
Zin = Zl*(Zb + 1i*Zl*tan(kd))./(Zl + 1i*Zb*tan(kd)); % input impedance seen from medium 1
Rf = (Zin - Za)./(Zin + Za); Erth = sum(w.*abs(Rf).^2)/sum(w);
Rth = NaN; Tth = NaN; Rm = NaN; Tm = NaN; % waveform changes: compare energy only
end
fprintf('%-26s %8.4f %8.4f %8.4f %8.4f %9.4f %9.4f\n', cases{ic,1}, Rth, Rm, Tth, Tm, Erth, Erm);
end
fprintf('(T = 1 + R is a pressure ratio and can exceed 1; the energy fractions are R^2 and 1 - R^2.)\n');
%% Figure: snapshots
figure('Position', [50 50 900 640]);
for ic = 1:size(cases, 1)
subplot(size(cases,1), 1, ic); s = snap{ic};
plot(s(:,1)*1e3, s(:,2), 'b'); hold on; yl = [-1.6 1.6]; ylim(yl);
plot([15 15], yl, 'k--'); if cases{ic,6} > 0, plot([15 15]+cases{ic,6}*1e3, yl, 'k:'); end
xlim([0 35]); ylabel('p / p_{inc}'); title(cases{ic,1});
end
xlabel('x (mm)');
%% Oblique incidence: fluid (tissue) -> isotropic solid (skull), energy partition
% Potentials: fluid phi1 = e^{i(kx x + kz1 z)} + R e^{i(kx x - kz1 z)};
% solid phi = A e^{i(kx x + kzL z)}, psi = B e^{i(kx x + kzS z)}. Boundary conditions at z = 0:
% u_z continuous, sigma_zz = -p, sigma_xz = 0.
r1 = 1050; c1 = 1540; r2 = 1900; cLb = 2820; cSb = 1500; % White, Clement & Hynynen 2006 speeds (1 MHz)
lam = r2*(cLb^2 - 2*cSb^2); mu = r2*cSb^2; w = 1;
th = (0:1:89)*pi/180; ER = zeros(size(th)); EL = ER; ES = ER;
for i = 1:numel(th)
k1 = w/c1; kL = w/cLb; kS = w/cSb; kx = k1*sin(th(i));
kz1 = sqrt(k1^2 - kx^2); kzL = sqrt(kL^2 - kx^2 + 0i); kzS = sqrt(kS^2 - kx^2 + 0i);
if imag(kzL) < 0, kzL = -kzL; end
if imag(kzS) < 0, kzS = -kzS; end
M = [1i*kz1, 1i*kzL, 1i*kx;
r1*w^2, -lam*kL^2 - 2*mu*kzL^2, -2*mu*kx*kzS;
0, -2*kx*kzL, kzS^2 - kx^2];
v = M \ [1i*kz1; -r1*w^2; 0];
ER(i) = abs(v(1))^2;
EL(i) = r2*cLb*kL^2*real(kzL/kL)/(r1*c1*k1^2*cos(th(i)))*abs(v(2))^2;
ES(i) = r2*cSb*kS^2*real(kzS/kS)/(r1*c1*k1^2*cos(th(i)))*abs(v(3))^2;
end
fprintf('\nTissue -> skull (cL %d, cS %d m/s): longitudinal critical angle %.1f deg\n', cLb, cSb, asind(c1/cLb));
fprintf(' angle E_refl E_long E_shear sum\n');
for a = [0 20 30 40 50 60 70 80]
i = a + 1; fprintf('%5d %6.3f %6.3f %6.3f %6.4f\n', a, ER(i), EL(i), ES(i), ER(i) + EL(i) + ES(i));
end
figure('Position', [80 80 640 360]);
plot(th*180/pi, ER, 'k', th*180/pi, EL, 'b', th*180/pi, ES, 'r', 'LineWidth', 1.4);
xlabel('incidence angle (deg)'); ylabel('energy fraction'); grid on;
legend('reflected', 'longitudinal in bone', 'shear in bone', 'Location', 'east');
title('Soft tissue -> skull: mode conversion');
What to look for: measured pressure coefficients agree with \((Z_2 - Z_1)/(Z_2 + Z_1)\) to about 0.003 (fat → muscle 0.094 vs 0.093, skull 0.537 vs 0.536, air-like −1.00, PZT −0.899 vs −0.898) and the reflected energy fraction to about 1 %; the λ/4 layer (\(\sqrt{Z_1 Z_2}\)) cuts the reflected energy of a 60 % pulse from 0.81 to 0.185 (band-averaged theory 0.184; zero at \(f_0\) only). The skull table conserves energy to 10⁻⁴: 29 % reflected at 0°, cut-off at 33.1°, 93–97 % shear between 40° and 70°.
m15_attenuation_dispersion.mPower-law attenuation, Kramers–Kronig phase speed, Gaussian downshift and the dispersed pulse · change \(\alpha_0\), y, z, \(f_0\) · runtime ≈ 1 s
%% m15_attenuation_dispersion.m
% Purpose : power-law attenuation alpha(f) = alpha0 f^y, the dispersion that causality
% (Kramers-Kronig, nearly local form) attaches to it, the downshift of a
% Gaussian pulse, and the pulse after propagation (FFT model).
% Change : alpha0 (dB/cm/MHz), y, depth z, f0, FBW.
% Expect : y = 1, alpha0 = 0.5: c(10 MHz) - c(1 MHz) = 3.19 m/s (1.38 m/s per neper of ln f)
% y = 1.1: 3.56 m/s ; y = 1.5: 4.71 m/s
% 5 MHz, 60 % pulse, 0.5 dB/cm/MHz: centroid shift 0.467 MHz per 5 cm one way
% (sigma_f^2 * alpha0' * z), 0.93 MHz for a 5 cm round trip
% Runtime : under 1 s.
clear; close all; rng(1);
%% Dispersion from Kramers-Kronig (Szabo 1994 / Waters et al. 2000 nearly local form)
c0 = 1540; % phase speed at the reference frequency f_ref (m/s)
fref = 1e6; % reference frequency (Hz)
f = linspace(0.5e6, 15e6, 600);
dBperNp = 20*log10(exp(1)); % 8.686 dB per neper
cKK = @(a0dB, y, fq) 1./( 1/c0 + ...
(abs(y-1) < 1e-6) .* ( -2/pi*(a0dB/dBperNp*100/(2*pi*1e6)^y) .* log(fq/fref) ) + ...
(abs(y-1) >= 1e-6) .* ( (a0dB/dBperNp*100/(2*pi*1e6)^y) .* tan(pi*y/2) .* ((2*pi*fq).^(y-1) - (2*pi*fref).^(y-1)) ) );
cases = [0.5 1.0; 0.5 1.1; 0.5 1.5; 1.0 1.0; 0.5 1.0001];
fprintf('alpha0 (dB/cm/MHz) y c(5)-c(1) c(10)-c(1) (m/s)\n');
for i = 1:size(cases,1)
a0 = cases(i,1); y = cases(i,2);
fprintf(' %5.2f %6.4f %7.2f %7.2f\n', a0, y, cKK(a0,y,5e6) - c0, cKK(a0,y,10e6) - c0);
end
fprintf('y -> 1 limit check: the y = 1.0001 row must equal the y = 1 row.\n');
%% Gaussian pulse downshift: amplitude spectrum exp(-(f-f0)^2/(2 sf^2)) * exp(-alpha0' f z)
f0 = 5e6; FBW = 0.6; sf = FBW*f0/(2*sqrt(2*log(2))); % sf = 1.274 MHz
a0 = 0.5; a0p = a0/dBperNp*100/1e6; % Np/(m*Hz)
fg = linspace(0, 15e6, 3001);
fprintf('\n5 MHz, 60 %% pulse, alpha0 = 0.5 dB/cm/MHz, y = 1 (one-way):\n');
fprintf(' z (cm) centroid (MHz) theory f0 - sf^2 a0 z (MHz) loss at f0 (dB)\n');
for zc = [0 2.5 5 10]
z = zc/100; S = exp(-(fg - f0).^2/(2*sf^2)).*exp(-a0p*fg*z);
fcen = sum(fg.*S)/sum(S);
fprintf(' %5.1f %6.3f %6.3f %5.1f\n', zc, fcen/1e6, (f0 - sf^2*a0p*z)/1e6, a0*f0/1e6*zc);
end
fprintf('Round trip to 5 cm (10 cm path): shift %.2f MHz.\n', sf^2*a0p*0.10/1e6);
%% Pulse after propagation (time domain via FFT), y = 1.1 for a visible dispersion
y = 1.1; a0 = 0.5; zc = 8; z = zc/100;
fs = 100e6; N = 4096; t = ((0:N-1) - N/2)/fs;
st = 1/(2*pi*sf); s = exp(-t.^2/(2*st^2)).*cos(2*pi*f0*t);
F = fft(ifftshift(s)); fk = (0:N-1)*fs/N; fk(fk > fs/2) = fk(fk > fs/2) - fs;
af = abs(fk)/1e6; alpha = a0/dBperNp*100*af.^y; % Np/m
cf = cKK(a0, y, max(abs(fk), 1e3)); cref = cKK(a0, y, f0);
ph = -2*pi*fk*z.*(1./cf - 1/cref); % phase relative to a frame moving at c(f0)
G = F.*exp(-alpha*z).*exp(1i*ph);
r = fftshift(real(ifft(G)));
% centroid and envelope peak
R = abs(fft(ifftshift(r))); half = fk > 0;
fprintf('\nAfter %d cm with y = %.1f: spectral centroid %.2f MHz, peak amplitude %.3f of input\n', zc, y, ...
sum(fk(half).*R(half).^1)/sum(R(half))/1e6, max(abs(r)));
figure('Position', [60 60 900 600]);
subplot(2,2,1); plot(f/1e6, cKK(0.5,1,f) - c0, 'b', f/1e6, cKK(0.5,1.1,f) - c0, 'r', f/1e6, cKK(1,1,f) - c0, 'k', 'LineWidth', 1.3);
xlabel('f (MHz)'); ylabel('c(f) - c(1 MHz) (m/s)'); grid on; legend('0.5, y=1', '0.5, y=1.1', '1.0, y=1', 'Location', 'southeast');
title('Kramers-Kronig dispersion');
subplot(2,2,2); hold on;
for zc2 = [0 5 10]
S = exp(-(fg - f0).^2/(2*sf^2)).*exp(-a0p*fg*zc2/100); plot(fg/1e6, S, 'LineWidth', 1.3);
end
xlabel('f (MHz)'); ylabel('amplitude'); legend('0 cm', '5 cm', '10 cm'); grid on; title('Downshift, 0.5 dB/cm/MHz');
subplot(2,1,2); plot(t*1e6, s, 'Color', [0.6 0.6 0.6]); hold on; plot(t*1e6, r/max(abs(r)), 'b', 'LineWidth', 1.3);
xlim([-1.2 1.2]); xlabel('t - z/c(f_0) (\mus)'); ylabel('normalized p');
legend('input', sprintf('after %d cm (normalized)', zc)); grid on; title('Attenuated, dispersed pulse');
What to look for: c(10 MHz) − c(1 MHz) = 3.19 m/s for 0.5 dB/cm/MHz, y = 1 (the y = 1.0001 row is identical), 3.56 for y = 1.1 and 6.40 for 1 dB/cm/MHz; the numerical centroid of the 5 MHz, 60 % pulse falls to 4.534 MHz after 5 cm against 4.533 MHz from \(f_0 - \sigma_f^2 \alpha_0' z\).
m15_fubini_harmonics.mShock distance and Gol'dberg number for five media, Fubini versus the coupled-harmonic Burgers solution, liver with power-law absorption, waveform steepening · change medium, \(p_0\), \(f_0\), N · runtime ≈ 2 s
%% m15_fubini_harmonics.m
% Purpose : plane-wave nonlinear propagation. Shock distance xbar = rho c^3/(beta omega p0),
% Fubini harmonics B_n = 2 J_n(n sigma)/(n sigma), and a coupled-harmonic solution of
% the Burgers equation with power-law absorption (Haran & Cook style):
% dB_n/dsigma = (n/4) sum_{k=1}^{n-1} B_k B_{n-k} - (n/2) sum_{k>=1} B_k B_{k+n} - alpha_n xbar B_n
% where p/p0 = sum B_n sin(n omega tau), sigma = x/xbar.
% Change : medium table, p0, f0, number of harmonics N.
% Expect : water (B/A 5.0) 3 MHz 1 MPa: xbar = 49.2 mm; liver (B/A 7.0) 49.1 mm; fat (B/A 10) 25.6 mm
% Fubini at sigma = 0.5: B2 = 0.230 (B2/B1 = -12.5 dB); ODE lossless matches to 1e-4
% liver with absorption (Gamma = 1.06): B2 peaks near 24 mm (23.6) at -20.9 dB re p0
% Runtime : about 3 s.
clear; close all; rng(1);
%% Media: rho (kg/m^3), c (m/s), alpha0 (dB/cm/MHz^y), y, B/A
names = {'water 20 C', 'blood', 'liver', 'muscle', 'fat'};
M = [ 998 1482 0.0022 2.0 5.0;
1060 1584 0.15 1.2 6.1;
1060 1578 0.5 1.1 7.0;
1050 1580 1.0 1.1 7.4;
950 1450 0.6 1.0 10.0];
f0 = 3e6; p0 = 1e6; dBperNp = 20*log10(exp(1));
fprintf('%-11s beta xbar(mm) Mach eps alpha(f0) Np/m Gamma = 1/(alpha xbar)\n', 'medium');
for i = 1:numel(names)
rho = M(i,1); c = M(i,2); beta = 1 + M(i,5)/2;
xbar = rho*c^3/(beta*2*pi*f0*p0);
alpha = M(i,3)*(f0/1e6)^M(i,4)/dBperNp*100;
fprintf('%-11s %4.2f %6.1f %.2e %7.2f %6.2f\n', names{i}, beta, xbar*1e3, p0/(rho*c)/c, alpha, 1/(alpha*xbar));
end
%% Fubini versus the coupled-harmonic ODE (lossless), RK4
N = 40; % harmonics kept
nn = (1:N)';
fub = @(n, s) 2*besselj(n, n*s)./(n*s);
s1 = @(cc) [0; cc(1:N-1)]; % sum_{k=1}^{n-1} B_k B_{n-k} from conv(B,B)
s2 = @(r) [r(N-1:-1:1); 0]; % sum_k B_k B_{k+n} from conv(B,flipud(B))
dBds = @(B, att) (nn/4).*s1(conv(B, B)) - (nn/2).*s2(conv(B, flipud(B))) - att.*B;
B = [1; zeros(N-1,1)]; h = 0.0025; att0 = zeros(N,1); sig = 0;
for k = 1:round(0.9/h)
k1 = dBds(B, att0); k2 = dBds(B + h/2*k1, att0); k3 = dBds(B + h/2*k2, att0); k4 = dBds(B + h*k3, att0);
B = B + h/6*(k1 + 2*k2 + 2*k3 + k4); sig = sig + h;
if abs(sig - 0.5) < h/2, B05 = B; end
end
fprintf('\nLossless check (N = %d): B1 B2 B3\n', N);
fprintf(' Fubini sigma = 0.5 %.4f %.4f %.4f\n', fub(1,0.5), fub(2,0.5), fub(3,0.5));
fprintf(' ODE sigma = 0.5 %.4f %.4f %.4f\n', B05(1), B05(2), B05(3));
fprintf(' Fubini sigma = 0.9 %.4f %.4f %.4f\n', fub(1,0.9), fub(2,0.9), fub(3,0.9));
fprintf(' ODE sigma = 0.9 %.4f %.4f %.4f\n', B(1), B(2), B(3));
fprintf(' small sigma: B2 ~ sigma/2 ; at sigma = 0.1: Fubini %.4f\n', fub(2, 0.1));
%% Liver with power-law absorption: split step (exact absorption, RK4 nonlinearity)
N = 60; nn = (1:N)';
s1 = @(cc) [0; cc(1:N-1)]; s2 = @(r) [r(N-1:-1:1); 0];
dBnl = @(B) (nn/4).*s1(conv(B, B)) - (nn/2).*s2(conv(B, flipud(B)));
rho = 1060; c = 1578; a0 = 0.5; y = 1.1; beta = 1 + 7.0/2;
xbar = rho*c^3/(beta*2*pi*f0*p0);
alphan = a0*(nn*f0/1e6).^y/dBperNp*100; % Np/m for each harmonic
xmax = 0.12; h = 0.005; ns = round(xmax/xbar/h); hx = xmax/ns; hs = hx/xbar;
E = exp(-alphan*hx/2); % half-step absorption factor
B = [1; zeros(N-1,1)]; X = (0:ns)*hx; H = zeros(4, ns+1); H(:,1) = B(1:4);
for k = 1:ns
B = E.*B;
k1 = dBnl(B); k2 = dBnl(B + hs/2*k1); k3 = dBnl(B + hs/2*k2); k4 = dBnl(B + hs*k3);
B = B + hs/6*(k1 + 2*k2 + 2*k3 + k4);
B = E.*B; H(:,k+1) = B(1:4);
end
[b2max, im] = max(abs(H(2,:)));
fprintf('\nLiver, 3 MHz, 1 MPa: xbar = %.1f mm, Gamma = %.2f\n', xbar*1e3, 1/(a0*3^y/dBperNp*100*xbar));
fprintf(' x (mm) B1 (dB re p0) B2 (dB re p0) B2/B1 (dB)\n');
for xm = [10 25 50 75 100]
[~, j] = min(abs(X - xm/1e3));
fprintf(' %5.0f %6.1f %6.1f %6.1f\n', xm, 20*log10(abs(H(1,j))), 20*log10(abs(H(2,j))), 20*log10(abs(H(2,j)/H(1,j))));
end
fprintf(' B2 maximum %.1f dB re p0 at x = %.1f mm\n', 20*log10(b2max), X(im)*1e3);
%% Figures
figure('Position', [60 60 900 600]);
subplot(2,2,1); ss = linspace(1e-3, 1, 200); hold on;
for n = 1:4, plot(ss, fub(n, ss), 'LineWidth', 1.3); end
xlabel('\sigma = x / xbar'); ylabel('B_n'); legend('n=1','n=2','n=3','n=4'); grid on; title('Fubini (lossless)');
subplot(2,2,2); plot(X*1e3, 20*log10(abs(H')), 'LineWidth', 1.3); ylim([-60 0]);
xlabel('x (mm)'); ylabel('dB re p_0'); legend('f_0','2f_0','3f_0','4f_0'); grid on; title('Liver, 3 MHz, 1 MPa, with absorption');
subplot(2,1,2); th = linspace(0, 4*pi, 800); hold on;
for sg = [0 0.5 0.95]
% implicit Poisson solution P = sin(theta + sigma P), by fixed-point iteration (converges for sigma < 1)
P = sin(th); for it = 1:200, P = sin(th + sg*P); end
plot(th/(2*pi), P, 'LineWidth', 1.3);
end
xlabel('\omega\tau / 2\pi (periods)'); ylabel('p / p_0'); legend('\sigma = 0', '0.5', '0.95 (near shock)'); grid on;
title('Waveform steepening (lossless, implicit solution)');
What to look for: \(\bar{x}\) = 49.2 mm (water), 49.1 (liver), 25.6 (fat) at 3 MHz, 1 MPa; \(\Gamma\) from 0.55 (muscle) to 89 (water); the lossless ODE reproduces Fubini to four decimals at σ = 0.5 and 0.9; in liver the second harmonic peaks at −20.9 dB re \(p_0\) at 23.6 mm and is −16.6 dB re the fundamental at 25 mm.
m15_harmonic_beam.mContinuous-aperture widths and sidelobes of fundamental and harmonic beams; steered array with the \(2f_0\) receive grating lobe · change \(f_0\), elements, pitch, steering, apodization · runtime < 1 s
%% m15_harmonic_beam.m
% Purpose : why tissue-harmonic beams are narrower and cleaner. Quasi-linear focal-plane model:
% the second-harmonic source is proportional to the square of the fundamental
% transmit pattern, and it is received at 2 f0 by the same array.
% fundamental two-way : [E_f0 AF_f0]_tx * [E_f0 AF_f0]_rx
% harmonic two-way : [E_f0 AF_f0]_tx^2 * [E_2f0 AF_2f0]_rx
% linear at 2 f0 : [E_2f0 AF_2f0]^2 (same probe driven at 2 f0)
% Change : f0, number of elements, pitch, steering angle, apodization.
% Expect : continuous apertures (u = x D / (lambda0 F)): -6 dB full widths
% sinc 1.207, sinc^2 0.886 (x 0.734), sinc^2(u) sinc(2u) 0.511, sinc^2(2u) 0.443;
% first sidelobes -13.3, -26.5, -27.9, -26.5 dB.
% Array, 3 MHz, 64 elements, pitch 0.3 mm, steered 30 deg: the 2 f0 receive pattern has a
% grating lobe near -20.8 deg; in the harmonic two-way pattern it is suppressed by the
% low transmit level there (see printed levels).
% Runtime : under 1 s.
clear; close all; rng(1);
%% Continuous aperture: widths and sidelobes
u = linspace(0, 6, 600001);
sincf = @(x) (abs(x) < 1e-12) + (abs(x) >= 1e-12).*sin(pi*x)./(pi*x + (abs(x) < 1e-12));
pats = {sincf(u), sincf(u).^2, sincf(u).^2.*sincf(2*u), sincf(2*u).^2};
lab = {'fundamental one-way sinc', 'fundamental two-way / harmonic tx', 'harmonic two-way', 'linear at 2f0 two-way'};
fprintf('%-36s -6 dB FW (lambda0 F/D) peak sidelobe (dB)\n', 'pattern');
for i = 1:4
a = abs(pats{i}); i6 = find(a < 0.5, 1); d = diff(a); i0 = find(d(1:end-1) < 0 & d(2:end) >= 0, 1) + 1;
fprintf('%-36s %6.3f %7.2f\n', lab{i}, 2*u(i6), 20*log10(max(a(i0:end))));
end
%% Linear array in the focal plane (far-field array factor in sin(theta))
c = 1540; f0 = 3e6; Nel = 64; pitch = 0.3e-3; kerf = 0.03e-3; th0 = 30; apod = 'rect';
w = pitch - kerf; xn = ((0:Nel-1) - (Nel-1)/2)*pitch;
if strcmp(apod, 'hann'), wn = 0.5 - 0.5*cos(2*pi*((0:Nel-1) + 1)/(Nel + 1)); else, wn = ones(1, Nel); end
th = linspace(-90, 90, 3601); s = sind(th); s0 = sind(th0);
AF = @(f) abs(exp(1i*2*pi*f/c*(s(:) - s0)*xn)*wn(:)).'/sum(wn);
EF = @(f) abs(sincf(w*f/c*s)); % rigid-baffle element factor
P1 = EF(f0).*AF(f0); P2 = EF(2*f0).*AF(2*f0);
fund = P1.^2; harm = P1.^2.*P2; lin2 = P2.^2;
ipk = find(abs(th - th0) < 2); % normalize to the steered main lobe
dBn = @(p) 20*log10(p/max(p(ipk)) + 1e-12);
thg1 = asind(max(-1, min(1, s0 - c/f0/pitch))); thg2 = asind(s0 - c/(2*f0)/pitch);
fprintf('\nArray: %d el, pitch %.2f mm, steer %d deg, f0 %.1f MHz\n', Nel, pitch*1e3, th0, f0/1e6);
if abs(s0 - c/f0/pitch) <= 1, g1 = sprintf('%.1f deg', thg1); else, g1 = 'none (|sin| > 1)'; end
fprintf(' predicted grating lobe: tx/rx at f0 %s ; rx at 2f0 %.1f deg\n', g1, thg2);
win = abs(th - thg2) < 3;
names = {'fundamental two-way', 'harmonic two-way', 'linear 2f0 two-way', 'rx only at 2f0'}; P = {fund, harm, lin2, P2};
fprintf(' %-22s -6 dB width (deg) level at the 2f0 grating lobe (dB)\n', 'pattern');
for i = 1:4
d = dBn(P{i}); [~, k0] = min(abs(th - th0)); a = k0; b = k0; % contiguous -6 dB region around th0
while a > 1 && d(a-1) >= -6, a = a - 1; end
while b < numel(th) && d(b+1) >= -6, b = b + 1; end
fprintf(' %-22s %6.2f %7.1f\n', names{i}, th(b) - th(a), max(d(win)));
end
figure('Position', [60 60 900 420]);
plot(th, dBn(fund), 'b', th, dBn(harm), 'r', th, dBn(lin2), 'k--', 'LineWidth', 1.3);
ylim([-80 0]); xlim([-90 90]); grid on; xlabel('angle (deg)'); ylabel('two-way level (dB)');
legend('fundamental', 'harmonic (tx^2 x rx at 2f_0)', 'linear at 2f_0', 'Location', 'southwest');
title(sprintf('Two-way beam, %d elements, pitch %.2f mm, steered %d deg', Nel, pitch*1e3, th0));
What to look for: −6 dB widths 1.207, 0.886, 0.511 and 0.443 \(\lambda_0 F/D\) with sidelobes −13.3, −26.5, −27.9 and −26.5 dB; for 64 elements at 0.3 mm pitch steered 30° the \(2f_0\) receive grating lobe appears at −20.8° (stronger than the main lobe because of the element factor), the linear \(2f_0\) two-way pattern shows it at +4.6 dB, the harmonic two-way pattern at −78 dB; two-way widths 1.50° (fundamental) and 0.85° (harmonic).
m15_pulse_inversion.mPI and AM on a nonlinearly propagated tissue echo and on a polynomial scatterer, motion residual, band-separation rule · change σ, bandwidth, \(a_2\), \(a_3\), velocity · runtime < 1 s
%% m15_pulse_inversion.m
% Purpose : pulse inversion (PI) and amplitude modulation (AM) as Volterra-order filters.
% Tissue: the transmitted pulse distorts by lossless plane-wave propagation (simple-wave
% solution, each sample of the waveform travels at c0 + beta u), then scatters linearly.
% "Bubble-like": a memoryless polynomial echo y = x + a2 x^2 + a3 x^3 (illustrative only).
% PI : e(+s) + e(-s) -> odd orders cancel, even orders double
% AM : e(s) - 2 e(s/2) -> linear cancels, quadratic x 1/2, cubic x 3/4
% Motion between pulses leaves 2|sin(pi f0 delta)| of the fundamental, delta = 2 v / (c PRF).
% Change : f0, FBW, sigma (distortion = x / xbar), a2, a3, velocity and PRF.
% Expect : tissue, sigma = 0.3: single echo 2f0/f0 band ratio about -18 dB; PI removes the fundamental
% band to the level of the even-order spill (< -30 dB re single), 2f0 band +5.8 dB (ideal +6.0);
% motion residual -26.2 dB at 10 mm/s, PRF 5 kHz, 3 MHz (formula and simulation agree).
% Band separation: Gaussian f0 and 2f0 spectra meet at -20 dB when FBW = 45 %.
% Runtime : under 1 s.
clear; close all; rng(1);
%% Pulse and helpers
c = 1540; f0 = 3e6; FBW = 0.5; fs = 200e6; N = 4096;
t = ((0:N-1) - N/2)/fs; sf = FBW*f0/(2*sqrt(2*log(2))); st = 1/(2*pi*sf);
s = exp(-t.^2/(2*st^2)).*sin(2*pi*f0*t); % unit-amplitude transmit pulse
fk = (0:N-1)*fs/N;
bandE = @(x, f1, f2) sum(abs(fft(x)).^2 .* (fk >= f1 & fk < f2));
Ef = @(x) bandE(x, 0.5*f0, 1.5*f0); Eh = @(x) bandE(x, 1.5*f0, 2.5*f0);
dB10 = @(r) 10*log10(r);
% lossless simple-wave distortion: a sample of value A*s(t) arrives at t - sigma*A*s(t)/(2 pi f0)
% (sigma is defined for amplitude 1; amplitude A scales the distortion by A). Valid before the shock.
prop = @(A, sig) interp1(t - sig*A*s/(2*pi*f0), A*s, t, 'linear', 0);
%% Tissue: PI and AM
sig = 0.3;
eP = prop(1, sig); eN = prop(-1, sig); eH = prop(0.5, sig);
pi_out = eP + eN; am_out = eP - 2*eH;
fprintf('Tissue, f0 = %.1f MHz, FBW = %.0f %%, sigma = %.2f\n', f0/1e6, FBW*100, sig);
fprintf(' single echo: 2f0 band re f0 band %6.1f dB\n', dB10(Eh(eP)/Ef(eP)));
fprintf(' PI : f0 band re single f0 band %6.1f dB\n', dB10(Ef(pi_out)/Ef(eP)));
fprintf(' PI : 2f0 band re single 2f0 band %6.1f dB (ideal +6.0)\n', dB10(Eh(pi_out)/Eh(eP)));
fprintf(' AM : f0 band re single f0 band %6.1f dB\n', dB10(Ef(am_out)/Ef(eP)));
fprintf(' AM : 2f0 band re single 2f0 band %6.1f dB (quadratic retained x 1/2: -6.0)\n', dB10(Eh(am_out)/Eh(eP)));
%% Bubble-like polynomial echo
a2 = 0.3; a3 = 0.2; ech = @(x) x + a2*x.^2 + a3*x.^3;
bP = ech(s); bN = ech(-s); bH = ech(0.5*s);
fprintf('\nPolynomial echo (a2 = %.1f, a3 = %.1f): PI keeps even orders, AM also keeps cubic terms\n', a2, a3);
fprintf(' PI : f0 band re single f0 band %6.1f dB\n', dB10(Ef(bP + bN)/Ef(bP)));
fprintf(' AM : f0 band re single f0 band %6.1f dB (nonlinear fundamental from x^3)\n', dB10(Ef(bP - 2*bH)/Ef(bP)));
fprintf(' AM : expected cubic-fundamental level %6.1f dB\n', dB10(Ef(0.75*a3*s.^3)/Ef(bP)));
%% Motion between pulses
fprintf('\nMotion residual of the fundamental after PI (linear medium), f0 = %.1f MHz\n', f0/1e6);
fprintf(' v (mm/s) PRF (kHz) delta (ns) formula (dB) simulated (dB)\n');
for vv = [1 10 50]
for prf = [5e3]
d = 2*vv*1e-3/c/prf; s2 = -interp1(t, s, t - d, 'linear', 0);
fprintf(' %6.0f %5.1f %7.2f %7.1f %7.1f\n', vv, prf/1e3, d*1e9, ...
20*log10(2*abs(sin(pi*f0*d))), dB10(Ef(s + s2)/Ef(s)));
end
end
%% Band separation for filter-based harmonic imaging (Gaussian spectra)
% fundamental half-width at L dB: (B/2) f0 sqrt(L/6); the 2f0 spectrum of s^2 is sqrt(2) wider in Hz
for L = [6 20 30]
fprintf('f0 and 2f0 spectra meet at -%2d dB when FBW = %.0f %%\n', L, 100*2/((1 + sqrt(2))*sqrt(L/6)));
end
%% Figure
figure('Position', [60 60 900 600]);
win = abs(t) < 1.2e-6;
subplot(2,2,1); plot(t(win)*1e6, eP(win), 'b', t(win)*1e6, eN(win), 'r'); grid on;
xlabel('t (\mus)'); ylabel('echo'); legend('+s', '-s'); title(sprintf('Tissue echoes, \\sigma = %.1f', sig));
subplot(2,2,2); plot(t(win)*1e6, pi_out(win), 'k', t(win)*1e6, am_out(win), 'm'); grid on;
xlabel('t (\mus)'); legend('PI sum', 'AM: e(s) - 2e(s/2)'); title('Combined outputs');
subplot(2,1,2); half = fk < 12e6; ref = max(abs(fft(eP)));
S1 = 20*log10(abs(fft(eP))/ref + 1e-9); S2 = 20*log10(abs(fft(pi_out))/ref + 1e-9); S3 = 20*log10(abs(fft(am_out))/ref + 1e-9);
plot(fk(half)/1e6, S1(half), 'b', fk(half)/1e6, S2(half), 'k', fk(half)/1e6, S3(half), 'm', 'LineWidth', 1.2);
ylim([-80 5]); grid on; xlabel('f (MHz)'); ylabel('dB re single-echo peak');
legend('single echo', 'PI sum', 'AM'); title('Spectra: PI removes f_0 and doubles 2f_0');
What to look for: at σ = 0.3 and 50 % bandwidth the single echo's \(2f_0\) band is −17.9 dB re its \(f_0\) band; PI leaves −32.9 dB in the \(f_0\) band (even-order spill) and gains +5.8 dB at \(2f_0\); AM keeps the \(2f_0\) band at −6.5 dB; on the polynomial scatterer AM keeps −22.4 dB of nonlinear fundamental (cubic term predicted −22.5 dB); motion residuals −46, −26 and −12 dB at 1, 10 and 50 mm/s match \(2 \lvert \sin(\pi f_0 \delta) \rvert\); the band-separation rule prints 83, 45 and 37 %.
15.13Self-check
Q1Fat (950 kg/m³, 1450 m/s) meets liver (1060 kg/m³, 1578 m/s). Give R in amplitude and dB, and the transmitted energy fraction.
\(Z\) = 1.378 and 1.673 MRayl; \(R = 0.295/3.051 = 0.097\), −20.3 dB; \(T_I = 1 - R^2 = 0.991\).
Q2What is the longitudinal critical angle from soft tissue (1540 m/s) into skull (2820 m/s), and is there one for the shear wave (1500 m/s)?
\(\arcsin(1540/2820)\) = 33.1°. No shear critical angle: \(c_S < c_1\), so \(\sin\theta_S = (1500/1540) \sin\theta_1 < 1\) for every angle.
Q3A 2 cm fat layer (1450 m/s) is imaged at 1540 m/s. How much deeper does the liver capsule below it appear?
Displayed thickness 20 × 1540/1450 = 21.24 mm, so 1.24 mm deeper (0.62 mm per cm of fat).
Q4Round-trip attenuation at 5 MHz to 8 cm depth with 0.5 dB/cm/MHz? And the one-way centroid shift of a 60 % pulse over the 16 cm path?
2 × 0.5 × 5 × 8 = 40 dB. \(\sigma_f\) = 1.274 MHz, \(\alpha_0'\) = 5.76 Np/(m·MHz): shift = \(1.274^2 \times 5.76 \times 0.16\) = 1.50 MHz, so the echo is centred near 3.5 MHz.
Q5Shock distance in water (998 kg/m³, 1482 m/s, B/A = 5) at 5 MHz and 1 MPa?
\(\beta = 3.5\); \(\bar{x} = 998 \times 1482^3/(3.5 \times 2\pi \times 5 \times 10^6 \times 10^6)\) = 29.5 mm.
Q6By Fubini, how far below the fundamental is the second harmonic at σ = 0.5?
\(B_1 = 2J_1(0.5)/0.5 = 0.969\), \(B_2 = J_2(1)/0.5 = 0.230\): \(20 \log_{10}(0.230/0.969)\) = −12.5 dB (\(\sigma/2 = 0.25\) is the small-\(\sigma\) estimate).
Q7A line aperture has a sinc focal profile. By what factor does squaring narrow the −6 dB width, and what is the harmonic two-way width?
\(\operatorname{sinc}\): 1.207 \(\lambda F/D\); \(\operatorname{sinc}^2\): 0.886, a factor 0.734. Harmonic two-way \(\operatorname{sinc}^2(u) \operatorname{sinc}(2u)\): 0.511 \(\lambda_0 F/D\).
Q8Pulse inversion at 3 MHz, PRF 5 kHz, tissue moving at 10 mm/s: what fundamental residual remains?
\(\delta = 2 \times 0.01/(1540 \times 5000)\) = 2.6 ns; \(2 \sin(\pi \times 3 \times 10^6 \times 2.6 \times 10^{-9})\) = 0.049, −26.2 dB.
15.14Figures from the literature
Published figures that put real benchmarks and anatomically realistic full-wave results next to the idealized curves of this module. Links only (no images reproduced). Figure numbers were checked against the cited version.
Nonlinear benchmark: Burgers (Mendousse) harmonics against a full-wave solver
Figs. 3 and 4 compare the harmonic amplitudes of the Mendousse solution (Burgers equation with thermoviscous absorption) with a nonlinear k-space pseudospectral model as a function of distance, and plot the error against CFL number and shock parameter. This is the same plane-wave check the coupled-harmonic solver of Demo 15.4 passes against Fubini; the figures show how time step and shock parameter control the accuracy of \(2f_0\) and higher harmonics. Fig. 2 plots the reflection and transmission coefficients and errors at a 10 % step in both sound speed and density versus grid density (k-space, first- and fourth-order FD), the discretization issue behind Demo 15.1. Fig. 6 shows beam patterns of a clinical linear array in homogeneous and CT-derived heterogeneous media.
B. E. Treeby, J. Jaros, A. P. Rendell and B. T. Cox, "Modeling nonlinear ultrasound propagation in heterogeneous media with power law absorption using a k-space pseudospectral method," J. Acoust. Soc. Am. 131(6), 4324–4336 (2012). doi:10.1121/1.4712021
Harmonic beam build-up through a human abdominal wall (3D full-wave)
Fig. 6 shows lateral and elevation intensity maps at \(f_0\) and \(2f_0\): the harmonic beam is fully developed by about 20 mm depth, the build-up drawn schematically in Figure 15.B. Fig. 7 compares lateral and elevation beamplots at the 65 mm focus, where the harmonic beam is narrower; the text reports lesion CNR of 0.67 (fundamental) and 0.79 (harmonic), and Fig. 9 shows harmonic B-mode images with and without ribs. These are simulations through a digitized human body wall, not measurements, but they include the heterogeneity that the quasi-linear \(p^2\) argument of Section 15.6 ignores.
G. Pinton, "Ultrasound imaging of the human body with three dimensional full-wave nonlinear acoustics. Part 1: simulations methods," arXiv:2003.06934 (2020). arXiv:2003.06934
Where harmonic imaging removes clutter, and where it does not
Figs. 8 and 9 show clutter point-spread functions at \(f_0\) and \(2f_0\) for intercostal imaging with no ribs, anatomical ribs and augmented ribs; Fig. 6 shows the elevation beamplots at the 65 mm focus. Compare the clutter levels with the "\(L_2 = 2L_1\) dB" rule (rule card 16): reverberation from the body wall is suppressed at \(2f_0\), but rib obstruction and aberration still degrade both images.
G. Pinton, "Ultrasound imaging with three dimensional full-wave nonlinear acoustic simulations. Part 2: sources of image degradation in intercostal imaging," arXiv:2003.06927 (2020). arXiv:2003.06927
Skull benchmark: how far do different wave solvers agree?
Figs. 5–7 of the preprint (the figure numbering of the journal version may differ) summarize differences between independent simulation codes on benchmark problems that include skull layers: full-field L∞ and L2 differences (Fig. 5), focal pressure and focal position (Fig. 6) and focal size (Fig. 7). Full-field differences are much larger than focal ones for the skull cases. Read this before trusting a single simulator for the mode-conversion and aberration problems of Section 15.2; the benchmark models compressional waves only, so the shear conversion of Demo 15.2 is outside it.
J.-F. Aubry et al., "Benchmark problems for transcranial ultrasound simulation: Intercomparison of compressional wave models," J. Acoust. Soc. Am. 152(2), 1003–1019 (2022); preprint arXiv:2202.04552. doi:10.1121/10.0013426
15.15Go deeper
- L. E. Kinsler, A. R. Frey, A. B. Coppens and J. V. Sanders, Fundamentals of Acoustics, 4th ed., Wiley (2000). Wave equation, impedance, reflection and transmission, radiation.
- M. F. Hamilton and D. T. Blackstock (eds.), Nonlinear Acoustics, Academic Press (1998). B/A, Fubini, Burgers and KZK equations, Gol'dberg number.
- F. A. Duck, Physical Properties of Tissue: A Comprehensive Reference Book, Academic Press (1990). Tissue speeds, attenuation, B/A.
- T. L. Szabo, Diagnostic Ultrasound Imaging: Inside Out, 2nd ed., Academic Press (2014). Attenuation, dispersion, nonlinear propagation and harmonic imaging.
- T. L. Szabo, "Time domain wave equations for lossy media obeying a frequency power law," J. Acoust. Soc. Am. 96, 491–500 (1994).
- M. O'Donnell, E. T. Jaynes and J. G. Miller, "Kramers–Kronig relationship between ultrasonic attenuation and phase velocity," J. Acoust. Soc. Am. 69, 696–701 (1981).
- H. T. O'Neil, "Theory of focusing radiators," J. Acoust. Soc. Am. 21, 516–526 (1949).
- M. E. Haran and B. D. Cook, "Distortion of finite amplitude ultrasound in lossy media," J. Acoust. Soc. Am. 73, 774–779 (1983).
- F. A. Duck, "Nonlinear acoustics in diagnostic ultrasound," Ultrasound Med. Biol. 28, 1–18 (2002).
- M. F. Insana, R. F. Wagner, D. G. Brown and T. J. Hall, "Describing small-scale structure in random media using pulse-echo ultrasound," J. Acoust. Soc. Am. 87, 179–192 (1990).
- D. Hope Simpson, C. T. Chin and P. N. Burns, "Pulse inversion Doppler: a new method for detecting nonlinear echoes from microbubble contrast agents," IEEE Trans. Ultrason. Ferroelectr. Freq. Control 46, 372–382 (1999).
- P. G. White, G. T. Clement and K. Hynynen, "Longitudinal and shear mode ultrasound propagation in human skull bone," Ultrasound Med. Biol. 32, 1085–1096 (2006).
- M. A. Averkiou, D. N. Roundhill and J. E. Powers, "A new imaging technique based on the nonlinear properties of tissues," Proc. IEEE Ultrasonics Symposium, 1561–1566 (1997). The original tissue harmonic imaging paper.
- T. S. Ward, A. Baker and V. F. Humphrey, "Nonlinear propagation applied to the improvement of resolution in diagnostic medical ultrasound," J. Acoust. Soc. Am. 101, 143–154 (1997).
- G. F. Pinton, G. E. Trahey and J. J. Dahl, "Sources of image degradation in fundamental and harmonic ultrasound imaging using nonlinear, full-wave simulations," IEEE Trans. Ultrason. Ferroelectr. Freq. Control 58(4), 754–765 (2011), doi:10.1109/tuffc.2011.1868. Reverberation versus aberration as clutter sources at \(f_0\) and \(2f_0\).
- C. B. Burckhardt, "Speckle in ultrasound B-mode scans," IEEE Trans. Sonics Ultrason. 25, 1–6 (1978). Speckle SNR 1.91 and compounding.