# A QUICK START DEMO - simulations, demodulation, beamforming, compounding

In this quick'n easy tutorial, it is shown how to simulate an ultrasound image from the transmit of plane waves. A few scatterers will be insonified with steered planes waves to obtain a compound image. You will use the following fundamental steps:

- A transducer will be chosen with
,`GETPARAM` - Transmit delays will be designed with
`TXDELAY` - A pressure field will be calculated with
`PFIELD` - RF signals will be simulated with the function
.`SIMUS` - The RF signals will be I/Q demodulated with
,`RF2IQ` - then beamformed with
.`DAS` - A compound image will eventually be generated.

## Contents

## Scatterers

Define a few scatterers ...

xs = [1.7 1.3 0.7 0 -0.7 -1.3 -1.7 0 -1 1]*1e-2; % in m zs = [2.8 3.2 3.5 3.6 3.5 3.2 2.8 2 0.8 0.8]*1e-2; % in m

... with their reflection coefficients

RC = ones(size(xs));

## Select a transducer with `GETPARAM`

We want a 128-element linear array.

```
param = getparam('L11-5v');
```

The structure `param` contains the tranducer properties.

## Design the transmit delays with `TXDELAY`

The scatterers will be insonified with 21 plane waves steered at -10 to +10 degrees.

tilt = linspace(-10,10,21)/180*pi; % tilt angles in rad txdel = cell(21,1); % this cell will contain the transmit delays

Use `TXDELAY` to calculate the transmit delays for the 21 plane waves.

for k = 1:21 txdel{k} = txdelay(param,tilt(k)); end

## Check a pressure field with `PFIELD`

Let us visualize the 5th pressure field.

Define a 100 100 8-cm-by-8-cm grid.

[xi,zi] = meshgrid(linspace(-4e-2,4e-2,100),linspace(0,8e-2,100));

Simulate the pressure field.

P = pfield(xi,zi,txdel{5},param);

Display the 5th pressure field.

imagesc(xi(1,:)*1e2,zi(:,1)*1e2,20*log10(P/max(P(:)))) caxis([-30 0]) % dynamic range = [-30,0] dB c = colorbar; c.YTickLabel{end} = '0 dB'; colormap([1-hot; hot]) set(gca,'XColor','none','box','off') axis equal ij ylabel('[cm]') title('The 5^{th} plane wave - RMS pressure field')

## Simulate RF signals with `SIMUS`

We will now simulate 21 series of RF signals. Each series will contain 128 RF signals, as the simulated linear array contains 128 elements.

RF = cell(17,1); % this cell will contain the RF series param.fs = 4*param.fc; % sampling frequency in Hz option.WaitBar = false; % remove the progress bar of SIMUS for k = 1:21 RF{k} = simus(xs,zs,RC,txdel{k},param,option); end

This is the 64th RF signal of the 1st series:

rf = RF{1}(:,64); t = (0:numel(rf)-1)/param.fs*1e6; % time (ms) plot(t,rf) set(gca,'YColor','none','box','off') xlabel('time (\mus)') title('RF signal of the 64^{th} element (1^{st} series, tilt = -20{\circ})') axis tight

## Demodulate the RF signals with `RF2IQ`

Before beamforming, the RF signals must be I/Q demodulated.

IQ = cell(21,1); % this cell will contain the I/Q series for k = 1:21 IQ{k} = rf2iq(RF{k},param.fs,param.fc); end

This is the 64th I/Q signal of the 1st series:

iq = IQ{1}(:,64); plot(t,real(iq),t,imag(iq)) set(gca,'YColor','none','box','off') xlabel('time (\mus)') title('I/Q signal of the 64^{th} element (1^{st} series, tilt = -10{\circ})') legend({'in-phase','quadrature'}) axis tight

## Beamform the I/Q signals with `DAS`

It is recommended to use an adequate receive f-number when beamforming. Define a void f-number; it will be determined automatically by `DAS` from the element directivity.

param.fnumber = [];

Define a 200 200 4-cm-by-4-cm image grid.

[xi,zi] = meshgrid(linspace(-2e-2,2e-2,200),linspace(0,4e-2,200));

Beamform the I/Q signals using a delay-and-sum with the function `DAS`.

bIQ = zeros(200,200,21); % this array will contain the 21 I/Q images h = waitbar(0,''); for k = 1:21 waitbar(k/21,h,['DAS: I/Q series #' int2str(k) ' of 21']) bIQ(:,:,k) = das(IQ{k},xi,zi,txdel{k},param); end close(h)

## Compound ultrasound image

An ultrasound image is obtained by log-compressing the amplitude of the beamformed I/Q signals. Have a look at the images obtained when steering at -10 degrees.

I = bmode(bIQ(:,:,1),40); % log-compressed image imagesc(xi(1,:)*1e2,zi(:,1)*1e2,I) colormap gray title('PW-based echo image with a tilt angle of -10{\circ}') axis equal ij set(gca,'XColor','none','box','off') c = colorbar; c.YTick = [0 255]; c.YTickLabel = {'-40 dB','0 dB'}; ylabel('[cm]')

The individual images are of poor quality. Generate a compound image with the series of 21 diverging waves steered at different angles.

cIQ = sum(bIQ,3); % this is the compound beamformed I/Q I = bmode(cIQ,40); % log-compressed image imagesc(xi(1,:)*1e2,zi(:,1)*1e2,I) colormap gray title('Compound PW-based echo image') axis equal ij set(gca,'XColor','none','box','off') c = colorbar; c.YTick = [0 255]; c.YTickLabel = {'-40 dB','0 dB'}; ylabel('[cm]')

## See also

Another demonstration to know more about `SIMUS`: *Diverging-wave echocardiography*

## About the author

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

**websites**: **BioméCardio**, **MUST**

## Date modified