<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="bbPress/1.0.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>k-Wave User Forum &#187; Topic: matching impedance between two surfaces in heterogeneous medium</title>
		<link>http://www.k-wave.org/forum/topic/matching-impedance-between-two-surfaces-in-heterogeneous-medium</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Wed, 13 May 2026 01:50:29 +0000</pubDate>
		<generator>http://bbpress.org/?v=1.0.2</generator>
		<textInput>
			<title><![CDATA[Search]]></title>
			<description><![CDATA[Search all topics from these forums.]]></description>
			<name>q</name>
			<link>http://www.k-wave.org/forum/search.php</link>
		</textInput>
		<atom:link href="http://www.k-wave.org/forum/rss/topic/matching-impedance-between-two-surfaces-in-heterogeneous-medium" rel="self" type="application/rss+xml" />

		<item>
			<title>Bradley Treeby on "matching impedance between two surfaces in heterogeneous medium"</title>
			<link>http://www.k-wave.org/forum/topic/matching-impedance-between-two-surfaces-in-heterogeneous-medium#post-5092</link>
			<pubDate>Tue, 02 Jun 2015 15:05:18 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">5092@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Camille,&#60;/p&#62;
&#60;p&#62;In what way does your signal change that you don't expect? &#60;/p&#62;
&#60;p&#62;If the impedance remains identical, the plane wave reflection coefficient won't change. However, for non-normal incidence, the direction of the wave will change due to refraction (which depends specifically on the sound speed, not the impedance). If you have a non-plane wave, the shape of the field will thus change when you change the properties of the layer.&#60;/p&#62;
&#60;p&#62;Hope that helps,&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>camille on "matching impedance between two surfaces in heterogeneous medium"</title>
			<link>http://www.k-wave.org/forum/topic/matching-impedance-between-two-surfaces-in-heterogeneous-medium#post-5065</link>
			<pubDate>Mon, 04 May 2015 16:42:18 +0000</pubDate>
			<dc:creator>camille</dc:creator>
			<guid isPermaLink="false">5065@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi,&#60;br /&#62;
 I’m trying to model a transducer which is composed of a ceramic layer and a matching layer and two others mediums (tissues +bone). I would like to change the matching layer impedance to see if there are less reflections if we adapt the matching layer for bone ( Z matching layer = sqrt(Z ceramic*Z bone)  ).&#60;br /&#62;
I also change the characteristics of the matching layer impedance (Z = rho*c). Indeed, I increase the sound speed and I decrease the density to keep the same impedance, so normally my signal shouldn’t change because reflections depend of the impedance but it changes…&#60;br /&#62;
The signal from the transducer is 2 MHz.  A sensor is located in the bone medium to capture the amplitude of the signal.&#60;/p&#62;
&#60;p&#62;The source code of the program is given below.&#60;/p&#62;
&#60;p&#62;clear all;&#60;/p&#62;
&#60;p&#62;% simulation settings&#60;br /&#62;
DATA_CAST = 'single';&#60;/p&#62;
&#60;p&#62;% =========================================================================&#60;br /&#62;
% DEFINE THE K-WAVE GRID&#60;br /&#62;
% =========================================================================&#60;/p&#62;
&#60;p&#62;% set the size of the perfectly matched layer (PML)&#60;br /&#62;
PML_X_SIZE = 20;            % [grid points]&#60;br /&#62;
PML_Y_SIZE = 10;            % [grid points]&#60;br /&#62;
PML_Z_SIZE = 10;            % [grid points]&#60;/p&#62;
&#60;p&#62;% set total number of grid points not including the PML&#60;br /&#62;
Nx = 128 - 2*PML_X_SIZE;    % [grid points]&#60;br /&#62;
Ny = 128 - 2*PML_Y_SIZE;    % [grid points]&#60;br /&#62;
Nz = 64 - 2*PML_Z_SIZE;     % [grid points]&#60;/p&#62;
&#60;p&#62;% set desired grid size in the x-direction not including the PML&#60;br /&#62;
x = 20e-3;                  % [m]&#60;/p&#62;
&#60;p&#62;% calculate the spacing between the grid points&#60;br /&#62;
dx = x/Nx;                  % [m]&#60;br /&#62;
dy = dx;                    % [m]&#60;br /&#62;
dz = dx;                    % [m]&#60;/p&#62;
&#60;p&#62;% create the k-space grid&#60;br /&#62;
kgrid = makeGrid(Nx, dx, Ny, dy, Nz, dz);&#60;/p&#62;
&#60;p&#62;% =========================================================================&#60;br /&#62;
% DEFINE THE MEDIUM PARAMETERS&#60;br /&#62;
% =========================================================================&#60;/p&#62;
&#60;p&#62;% define the properties of the propagation medium&#60;br /&#62;
v_ceramique = 3947;  %% speed of sound in the ceramic [m/s]&#60;br /&#62;
v_water = 1500;     % speed of sound in water [m/s]&#60;br /&#62;
v_bone = 2850;     % speed of sound in bone [m/s]&#60;br /&#62;
v_ML = 2600;    % speed of sound in the matching layer [m/s]&#60;br /&#62;
v_tissue = 1540;    % speed of sound in tissue [m/s]&#60;br /&#62;
den_ceramique = 7600;   % density of ceramic [kg/m^3]&#60;br /&#62;
den_water = 1000;     % density of water [kg/m^3]&#60;br /&#62;
den_bone = 2596;     % density of steel [kg/m^3]&#60;br /&#62;
den_ML = 5730;  % density of matching layer [kg/m^3]&#60;br /&#62;
den_tissue = 1052;  % density of tissue [kg/m^3]&#60;br /&#62;
medium.sound_speed = v_ceramique*ones(Nx,Ny,Nz);    % [m/s]&#60;br /&#62;
medium.sound_speed(2:3,:,:) = v_ML;&#60;br /&#62;
medium.sound_speed(3:12,:,:) = v_tissue;&#60;br /&#62;
medium.sound_speed(12:40,:,:) = v_bone;    %[m/s]&#60;br /&#62;
medium.sound_speed(40:60,:,:) = v_bone;  %[m/s]&#60;br /&#62;
medium.sound_speed(60:end,:,:) = v_water;&#60;br /&#62;
medium.density = den_ceramique*ones(Nx,Ny,Nz);    % [m/s]&#60;br /&#62;
medium.density(2:3,:,:) = den_ML;&#60;br /&#62;
medium.density(2:12,:,:) = den_tissue;&#60;br /&#62;
medium.density(12:40,:,:) = den_bone;    %[m/s]&#60;br /&#62;
medium.density(40:60,:,:) = den_bone;  %[m/s]&#60;br /&#62;
medium.density(60:end,:,:) = den_water;&#60;br /&#62;
% create the time array&#60;br /&#62;
t_end = 40e-6;                  % [s]&#60;br /&#62;
kgrid.t_array = makeTime(kgrid, 3947, [], t_end);&#60;/p&#62;
&#60;p&#62;% =========================================================================&#60;br /&#62;
% DEFINE THE INPUT SIGNAL&#60;br /&#62;
% =========================================================================&#60;/p&#62;
&#60;p&#62;% define properties of the input signal&#60;br /&#62;
source_strength = 1e6;          % [Pa]&#60;br /&#62;
tone_burst_freq = 2e6;        % [Hz]&#60;br /&#62;
tone_burst_cycles = 4.5;&#60;/p&#62;
&#60;p&#62;% create the input signal using toneBurst&#60;br /&#62;
input_signal = toneBurst(1/kgrid.dt, tone_burst_freq, tone_burst_cycles);&#60;/p&#62;
&#60;p&#62;% scale the source magnitude by the source_strength divided by the&#60;br /&#62;
% impedance (the source is assigned to the particle velocity)&#60;br /&#62;
input_signal = (source_strength./(1500*1000)).*input_signal;&#60;/p&#62;
&#60;p&#62;% =========================================================================&#60;br /&#62;
% DEFINE THE ULTRASOUND TRANSDUCER&#60;br /&#62;
% =========================================================================&#60;/p&#62;
&#60;p&#62;% physical properties of the transducer&#60;br /&#62;
transducer.number_elements = 64;    % total number of transducer elements&#60;br /&#62;
transducer.element_width =1.155;       % width of each element [grid points]&#60;br /&#62;
transducer.element_length = 20;     % length of each element [grid points]&#60;br /&#62;
transducer.element_spacing =0;     % spacing (kerf width) between the elements [grid points]&#60;br /&#62;
transducer.radius = inf;            % radius of curvature of the transducer [m]&#60;/p&#62;
&#60;p&#62;% calculate the width of the transducer in grid points&#60;br /&#62;
transducer_width = transducer.number_elements*transducer.element_width ...&#60;br /&#62;
    + (transducer.number_elements - 1)*transducer.element_spacing;&#60;/p&#62;
&#60;p&#62;% use this to position the transducer in the middle of the computational grid&#60;br /&#62;
transducer.position = round([1, Ny/2 - transducer_width/2, Nz/2 - transducer.element_length/2]);&#60;/p&#62;
&#60;p&#62;% properties used to derive the beamforming delays&#60;br /&#62;
transducer.sound_speed = 1540;              % sound speed [m/s]&#60;/p&#62;
&#60;p&#62;% apodization&#60;br /&#62;
transducer.transmit_apodization = 'Rectangular';&#60;br /&#62;
transducer.receive_apodization = 'Rectangular';&#60;/p&#62;
&#60;p&#62;% define the transducer elements that are currently active&#60;br /&#62;
transducer.active_elements = zeros(transducer.number_elements, 1);&#60;br /&#62;
transducer.active_elements(30:30) = 1;&#60;/p&#62;
&#60;p&#62;% append input signal used to drive the transducer&#60;br /&#62;
transducer.input_signal = input_signal;&#60;/p&#62;
&#60;p&#62;% create the transducer using the defined settings&#60;br /&#62;
transducer = makeTransducer(kgrid, transducer);&#60;/p&#62;
&#60;p&#62;% print out transducer properties&#60;br /&#62;
transducer.properties;&#60;/p&#62;
&#60;p&#62;% =========================================================================&#60;br /&#62;
% DEFINE SENSOR MASK&#60;br /&#62;
% =========================================================================&#60;/p&#62;
&#60;p&#62;% create a Sensor &#60;/p&#62;
&#60;p&#62;sensor.mask = zeros(Nx, Ny, Nz);&#60;br /&#62;
sensor.mask(40, 40, 20) = 1;&#60;br /&#62;
% =========================================================================&#60;br /&#62;
% RUN THE SIMULATION&#60;br /&#62;
% =========================================================================&#60;/p&#62;
&#60;p&#62;% set the input settings&#60;br /&#62;
input_args = {'PlotLayout', true,'DisplayMask', sensor.mask, ...&#60;br /&#62;
    'PMLInside', true, 'PlotPML', false, 'PMLSize', [PML_X_SIZE, PML_Y_SIZE, PML_Z_SIZE], ...&#60;br /&#62;
    'PMLInside', false, 'DataCast', DATA_CAST, 'PlotScale', [-source_strength/2, source_strength/2]};&#60;/p&#62;
&#60;p&#62;% run the simulation&#60;br /&#62;
sensor_data = kspaceFirstOrder3D(kgrid, medium, transducer, sensor, input_args{:});&#60;/p&#62;
&#60;p&#62;% extract a single scan line from the sensor data using the current&#60;br /&#62;
% beamforming settings&#60;br /&#62;
scan_line = transducer.scan_line(sensor_data);&#60;/p&#62;
&#60;p&#62;%p_xyz = kspacePlaneRecon(sensor_data_rs, kgrid.dy, kgrid.dz, dt, medium.sound_speed,...&#60;br /&#62;
 %   'DataOrder', 'yzt', 'PosCond', true, 'Plot', true);&#60;/p&#62;
&#60;p&#62;% =========================================================================&#60;br /&#62;
% VISUALISATION&#60;br /&#62;
% =========================================================================&#60;/p&#62;
&#60;p&#62;figure;&#60;br /&#62;
plot(kgrid.t_array*1e6, sensor_data, 'k-');&#60;br /&#62;
xlabel('Time [\mus]');&#60;br /&#62;
ylabel('Pressure [au]');&#60;br /&#62;
title('Scan Line After Beamforming');
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "matching impedance between two surfaces in heterogeneous medium"</title>
			<link>http://www.k-wave.org/forum/topic/matching-impedance-between-two-surfaces-in-heterogeneous-medium#post-4294</link>
			<pubDate>Thu, 30 Jan 2014 22:34:19 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">4294@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi unifi,&#60;/p&#62;
&#60;p&#62;Using the simple 1D example below, I can see the same behaviour that you describe when the rescaling factor R is very large. In this case, the spurious reflection is due to frequency content of the incident wave not being supported on the grid with the much lower sound speed. You can calculate the maximum supported frequency in each part of the domain using &#60;code&#62;f_max = c_0/(2*dx)&#60;/code&#62;. What happens if you change your source frequency (or grid spacing) so that it is supported in both the air and solid media?&#60;/p&#62;
&#60;p&#62;Hope that helps,&#60;/p&#62;
&#60;p&#62;Brad.&#60;/p&#62;
&#60;p&#62;--&#60;/p&#62;
&#60;pre&#62;&#60;code&#62;% create the computational grid
Nx = 512;       % number of grid points in the x (row) direction
dx = 0.05e-3;   % grid point spacing in the x direction [m]
kgrid = makeGrid(Nx, dx);

% define the properties of the propagation medium
R    = 10;
c1   = 1500;
rho1 = 1000;
c2   = c1/R;
rho2 = rho1*R;

% create medium
medium.sound_speed         = c1*ones(Nx, 1);
medium.sound_speed(1:Nx/2) = c2;
medium.density             = rho1*ones(Nx, 1);
medium.density(1:Nx/2)     = rho2;

% create initial pressure distribution using a smoothly shaped sinusoid
x_pos = 320;    % [grid points]
width = 50;     % [grid points]
height = 1;     % [pa]
in = (0:pi/(width/2):2*pi).&#38;#39;;
source.p0 = [zeros(x_pos, 1); ((height/2)*sin(in-pi/2)+(height/2)); zeros(Nx - x_pos  - width - 1, 1)];

% run the simulation
sensor_data = kspaceFirstOrder1D(kgrid, medium, source, []);&#60;/code&#62;&#60;/pre&#62;</description>
		</item>
		<item>
			<title>unifi on "matching impedance between two surfaces in heterogeneous medium"</title>
			<link>http://www.k-wave.org/forum/topic/matching-impedance-between-two-surfaces-in-heterogeneous-medium#post-4289</link>
			<pubDate>Wed, 22 Jan 2014 16:27:23 +0000</pubDate>
			<dc:creator>unifi</dc:creator>
			<guid isPermaLink="false">4289@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi, I'm trying to model an interface between two mediums (air and some solid) and construct a matched impedance surface.&#60;br /&#62;
If the characteristic impedance is Z=rho*c, I try to increase the density of the second medium while reducing by the same factor the sound speed, so that the values of Z in both mediums are identical.&#60;br /&#62;
I would expect that if the two impedances match, there would be no reflection. Nevertheless I see a lot of reflection. If the rescaling factor R is big enough (c/R, rho*R) almost all the wave is reflected.&#60;/p&#62;
&#60;p&#62;I'm testing it with a sine signal&#60;/p&#62;
&#60;p&#62;I guess the answer is really simple but still I can't figure it.&#60;br /&#62;
Can you please explain me why?&#60;/p&#62;
&#60;p&#62;Thanks
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
