TXDELAY3 Transmit delays for a matrix array

TXDELAY returns the transmit time delays for focused, plane or diverging beam patterns with a matrix array.

Contents



Syntax

DELAYS = TXDELAY3(X0,Y0,Z0,PARAM) returns the transmit time delays for a pressure field focused at the point (x0,y0,z0). If z0 is negative, then the point (x0,y0,z0) is a virtual source. The properties of the medium and array must be given in the structure PARAM (see below).

DELAYS = TXDELAY3([X01 X02],[Y01 Y02],[Z01 Z02],PARAM) returns the transmit time delays for a pressure field focused at the line specified by the two points (x01,y01,z01) and (x02,y02,z02).

DELAYS = TXDELAY3(PARAM,TILTx,TILTy) returns the transmit time delays for a tilted plane wave. TILTx is the tilt angle about the X-axis. TILTy is the tilt angle about the Y-axis. If TILTx = TILTy = 0, then the delays are 0.

DELAYS = TXDELAY3(PARAM,TILTx,TILTy,OMEGA) yields the transmit time delays for a diverging wave. The sector is characterized by the angular tilts and the solid angle OMEGA subtented by the rectangular aperture of the transducer. TILTx is the tilt angle about the X-axis. TILTy is the tilt angle about the Y-axis. OMEGA sets the amount of the field of view (in [0 2pi]). This syntax is for matrix arrays only, i.e. the element positions must form a plaid grid.

[DELAYS,PARAM] = TXDELAY3(...) updates the PARAM structure parameters including the default values. PARAM will also include PARAM.TXdelay, which is equal to DELAYS (in s).

[...] = TXDELAY3 (no input parameter) simulates a focused pressure field generated by a 3-MHz 32x32 matrix array (1st example below).

Units: X0, Y0 and Z0 must be in m; TILTx and TILTy must be in rad. OMEGA is in sr (steradian). DELAYS are in s.



The structure PARAM

PARAM is a structure that must contain the following fields:

  1. PARAM.elements: x- and y-coordinates of the element centers (in m, required). It MUST be a two-row matrix, with the 1st and 2nd rows containing the x and y coordinates, respectively.
  2. PARAM.width: element width, in the x-direction (in m, required)
  3. PARAM.height: element height, in the y-direction (in m, required)
  4. PARAM.c: longitudinal velocity (in m/s, default = 1540 m/s)



Notes

For a linear array, the X-axis is PARALLEL to the transducer and points from the first (leftmost) element to the last (rightmost) element (X = 0 at the CENTER of the transducer).

The Z-axis is PERPENDICULAR to the transducer and points downward (Z = 0 at the level of the transducer, Z increases as depth increases). See the figure below.

The Y-axis is is such that the coordinates are right-handed.


TILTx and TILTy (in radians) describe the tilt angles in the trigonometric direction.


For a diverging wave with a matrix array, OMEGA describes the solid angle subtented by the rectangular aperture of the transducer.



Example #1: 3-D focused pressure field with a matrix-array transducer

This example shows how to generate a three-dimensional focused pressure field with a matrix-array transducer.

Create a 3-MHz matrix array with 32x32 elements.

param = [];
param.fc = 3e6;
param.bandwidth = 70;
param.width = 250e-6;
param.height = 250e-6;

Specify the x- and y-coordinates of the elements.

pitch = 300e-6; % pitch (in m)
[xe,ye] = meshgrid(((1:32)-16.5)*pitch);
param.elements = [xe(:).'; ye(:).'];

Choose a focus point at xf = 0 mm, yf = -2 mm, zf = 30 mm.

xf = 0; yf = -2e-3; zf = 30e-3; % focus position (in m)

Obtain the corresponding transmit time delays with TXDELAY3.

txdel = txdelay3(xf,yf,zf,param); % in s

Check the elements and the delays with VIEWXDCR

p = viewxdcr(param);
p.FaceVertexCData = txdel(:)*1e9;
c = colorbar('SouthOutside');
c.Label.String = 'TX delays (ns)';
colormap([1-hot;hot])
title('32\times32-element matrix array')

Simulate the pressure field by using PFIELD3.

First define a volume grid.

n = 32;
x = linspace(-5e-3,5e-3,n); % (in m)
y = linspace(-5e-3,5e-3,n); % (in m)
z = linspace(0,6e-2,4*n); % (in m)
[x,y,z] = meshgrid(x,y,z);

The function PFIELD3 yields the root-mean-square (RMS) pressure field.

RP = pfield3(x,y,z,txdel,param);

Display the acoustic pressure field and the element centers.

RPdB = 20*log10(RP/max(RP(:))); % convert to dB
slice(x*1e2,y*1e2,z*1e2,RPdB,xf*1e2,yf*1e2,zf*1e2)
shading flat
colormap(hot), caxis([-20 0])
set(gca,'zdir','reverse'), axis equal
alpha color % some transparency
c = colorbar;
c.YTickLabel{end} = '0 dB';
zlabel('[cm]')
title('Focused wave - RMS pressure field')
view(-80,40)
hold on
plot3(xe*1e2,ye*1e2,xe*0,'b.')
hold off



Example #2: 3-D diverging wave with a matrix array

This example shows how to generate a diverging pressure field with a matrix transducer.

Create a 3-MHz matrix array with 32x32 elements.

param = [];
param.fc = 3e6;
param.bandwidth = 70;
param.width = 250e-6;
param.height = 250e-6;

Specify the x- and y-coordinates of the elements.

pitch = 300e-6; % pitch (in m)
[xe,ye] = meshgrid(((1:32)-16.5)*pitch);
param.elements = [xe(:).'; ye(:).'];

Define a transmit apodization.

h = cos(linspace(-pi/4,pi/4,32));
h = h'*h;
param.TXapodization = h(:);

Generate the transmit time delays for a diverging wave with TXDELAY3.

tiltX = 10/180*pi; % tilt angle about the X-axis (in rad)
tiltY = 10/180*pi; % tilt angle about the Y-axis (in rad)
omega = 30/180*pi; % solid angle (in sr)
txdel = txdelay3(param,tiltX,tiltY,omega); % in s

Check the elements and the delays with VIEWXDCR

delete(gcf); % delete the current figure
p = viewxdcr(param);
p.FaceVertexCData = txdel(:)*1e6;
c = colorbar('SouthOutside');
c.Label.String = 'TX delays (ms)';
colormap([1-hot;hot])
title('32\times32-element matrix array')

Simulate the pressure field by using PFIELD3.

First define the x-, y-, z-coordinates of the ROI:

x = linspace(-4e-2,4e-2,200);
y = x;
z = linspace(0,10e-2,200);

Obtain the RMS pressure field on the azimuthal plane:

[xaz,zaz] = meshgrid(x,z);
yaz = zeros(size(xaz));
Paz = pfield3(xaz,yaz,zaz,txdel,param);

Obtain the RMS pressure field on the elevation plane:

[yel,zel] = meshgrid(y,z);
xel = zeros(size(yel));
Pel = pfield3(xel,yel,zel,txdel,param);

Obtain the RMS pressure field on some parallel planes:

[xfo,yfo] = meshgrid(x,y);
zfo1 = ones(size(xfo))*3e-2;
zfo2 = ones(size(xfo))*5e-2;
zfo3 = ones(size(xfo))*7e-2;
Pfo1 = pfield3(xfo,yfo,zfo1,txdel,param);
Pfo2 = pfield3(xfo,yfo,zfo2,txdel,param);
Pfo3 = pfield3(xfo,yfo,zfo3,txdel,param);

Display the acoustic pressure field.

Pmax = max(max(Paz(:)),max(Pel(:)));
surf(xaz*1e2,yaz*1e2,zaz*1e2,20*log10(Paz/Pmax)), shading flat
hold on
surf(xel*1e2,yel*1e2,zel*1e2,20*log10(Pel/Pmax)), shading flat
surf(xfo*1e2,yfo*1e2,zfo1*1e2,20*log10(Pfo1/Pmax)), shading flat
surf(xfo*1e2,yfo*1e2,zfo2*1e2,20*log10(Pfo2/Pmax)), shading flat
surf(xfo*1e2,yfo*1e2,zfo3*1e2,20*log10(Pfo3/Pmax)), shading flat
% Display the elements
plot3(xe*1e2,ye*1e2,xe*0,'k.')
hold off
% Fine-tune the figure:
axis equal
zlabel('[cm]')
set(gca,'ZDir','reverse')
title('3-D diverging wave ([-20,0] dB)')
caxis([-20 0])
alpha color
colormap(flipud([hot;1-hot]))
xlabel('x')
ylabel('y')
view(-25,20)



See also

das3, pfield3, simus3, txdelay, viewxdcr



About the author

Damien Garcia, Eng., Ph.D.
INSERM researcher
Creatis, University of Lyon, France

websites: BioméCardio, MUST



Date modified