%
% Rectangular Transducer Example 1.
%

% $Revision: 565 $ $Date: 2009-09-17 22:24:06 +0200 (Thu, 17 Sep 2009) $ $LastChangedBy: dream $

Fs = 10;   % Sampling freq. in MHz.
Ts = 1/Fs;

%
% Observation point(s).
%
z = 10; % [mm]

% 1 : one point, 0 : 50 points along x-axis.
if 0
  % One point.
  xo = 0;
  yo = 0;
  zo = z;
  ro = [xo yo zo];
  Ro = ro;
  disp(['Observation point (x,y,z) = ' num2str(Ro)])
else
  %  Points along x-axis.
  d  = 1; 				% [mm]
  xo = (0:d:50); 			% 0-50 mm.
  yo = zeros(length(xo),1);
  zo = z*ones(length(xo),1);
  Ro = [xo(:) yo(:) zo(:)];
end

% Descretization parameters.
dx = 0.03; 				% [mm].
dy = 0.03; 				% [mm]
dt = Ts; 				% [us].
nt = 400;   				% Length of spatial impulse response vector.
s_par = [dx dy dt nt];

% Material parameters.
v     = 1.0; 				% Normal velocity.
cp    = 1500; 				% Sound speed.
alfa  = 0; 				% Absorbtion [dB/(cm MHz)].
m_par = [v cp alfa];

% Delay.
t_z = z*1e3/cp;
%delay = 0; 				% Start at 0 [us].
delay = t_z; 				% Start at t_z [us].

% Geometrical parameters.
a = 10;					% x-size [mm].
b = 15;					% y-size [mm].
geom_par = [a b];

H = dreamrect(Ro,geom_par,s_par,delay,m_par,'stop');


figure(1)
clf

t = 0:Ts:Ts*(nt-1);

if size(H,2)>1
  mesh(xo,t,H);
  xlabel('x [mm]')
  ylabel('t [\mus]')
  axis tight
  view([135 32])
else
  plot(t,H);
  axis tight
  ax = axis;
  %axis([0 50 ax(3) ax(4)])
  xlabel('t [\mus]')
  grid
end
title('Spatial Impulse Response for a Rectangular Transducer')