<?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: Absorption coeff. of the target</title>
		<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Tue, 12 May 2026 22:34:34 +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/absorption-coeff-of-the-target" rel="self" type="application/rss+xml" />

		<item>
			<title>Bradley Treeby on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-8200</link>
			<pubDate>Wed, 09 Jun 2021 08:57:26 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">8200@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;If you don't specify the absorption, the simulation will be lossless. If you have already specified the medium properties, you can remove it by:&#60;/p&#62;
&#60;pre&#62;&#60;code&#62;medium = rmfield(medium, &#38;#39;alpha_coeff&#38;#39;);
medium = rmfield(medium, &#38;#39;alpha_power&#38;#39;);&#60;/code&#62;&#60;/pre&#62;</description>
		</item>
		<item>
			<title>zengqw2021 on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-8197</link>
			<pubDate>Wed, 09 Jun 2021 08:17:44 +0000</pubDate>
			<dc:creator>zengqw2021</dc:creator>
			<guid isPermaLink="false">8197@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Brad,&#60;br /&#62;
   Ok, I see. Is there a way for me to turn absorption off during reconstruction?&#60;/p&#62;
&#60;p&#62;    Zeng
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-8196</link>
			<pubDate>Tue, 08 Jun 2021 17:39:26 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">8196@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Zeng,&#60;/p&#62;
&#60;p&#62;The second simulation is run on a different sized grid (to avoid the inverse crime). So you will either need to use the same grid, or redefine &#60;code&#62;medium.alpha_coeff&#60;/code&#62; to be Nx by Ny. &#60;/p&#62;
&#60;p&#62;Note though, you probably want to turn absorption off anyway for the reconstruction (or invert it as described in the attenuation compensation examples).&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>zengqw2021 on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-8171</link>
			<pubDate>Mon, 07 Jun 2021 16:06:11 +0000</pubDate>
			<dc:creator>zengqw2021</dc:creator>
			<guid isPermaLink="false">8171@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Dear treeby,&#60;br /&#62;
   I’m a new user of k-Wave toolbox. It is great. Now, I'm trying to run a simulation with different absorption coeff. The alfa_coeff is change to a matrix, the simulation encounter the following error:&#60;br /&#62;
Matrix dimensions must agree.&#60;br /&#62;
Error in kspaceFirstOrder2D (line 864)&#60;br /&#62;
                   (rhox + rhoy) ...&#60;br /&#62;
Error in PAT_Heterogeneous (line 93)&#60;br /&#62;
p0_recon = kspaceFirstOrder2D(kgrid_recon, medium, source, sensor, input_args{:});&#60;/p&#62;
&#60;p&#62;%%The code is as follows:&#60;/p&#62;
&#60;p&#62;clearvars;clear;close all;clc;&#60;/p&#62;
&#60;p&#62;% =========================================================================&#60;br /&#62;
% SIMULATION&#60;br /&#62;
% =========================================================================&#60;/p&#62;
&#60;p&#62;% assign the grid size and create the computational grid&#60;br /&#62;
PML_size = 20;              % size of the PML in grid points&#60;br /&#62;
Nx = 256 - 2 * PML_size;    % number of grid points in the x direction&#60;br /&#62;
Ny = 256 - 2 * PML_size;    % number of grid points in the y direction&#60;br /&#62;
x = 20e-3;                  % total grid size [m]&#60;br /&#62;
y = 20e-3;                  % total grid size [m]&#60;br /&#62;
dx = x / Nx;                % grid point spacing in the x direction [m]&#60;br /&#62;
dy = y / Ny;                % grid point spacing in the y direction [m]&#60;br /&#62;
kgrid = kWaveGrid(Nx, dx, Ny, dy);&#60;/p&#62;
&#60;p&#62;% create initial pressure distribution&#60;br /&#62;
medium.sound_speed = 330;   % [m/s]&#60;br /&#62;
medium.alpha_coeff = ones(kgrid.Nx,kgrid.Ny)*0.75;  % [dB/(MHz^y cm)] %ones(kgrid.Nx,kgrid.Ny)*&#60;br /&#62;
medium.alpha_power = 1.5;&#60;br /&#62;
medium.alpha_mode = 'no_dispersion';&#60;/p&#62;
&#60;p&#62;Cp_heat_cap = 1.002;       % the specific heat capacity at constant pressure&#60;br /&#62;
Heat_beta   = 1/273.15;    % the coefficient of the thermal expansion&#60;/p&#62;
&#60;p&#62;disc_H0    = 30;               % [kJ/m3]&#60;br /&#62;
disc_x_pos = floor(Nx/2);             % [grid points]&#60;br /&#62;
disc_y_pos = floor(Ny/2);  	       % [grid points]&#60;br /&#62;
disc_radius = 4/2/sqrt(log(2));    % [grid points]&#60;br /&#62;
disc_1 = Heat_beta*medium.sound_speed^2/Cp_heat_cap*disc_H0*makeDisc(Nx, Ny, disc_x_pos, disc_y_pos, disc_radius); % Heat_beta*medium.sound_speed^2/Cp_heat_cap*&#60;/p&#62;
&#60;p&#62;p0 = disc_1 ;&#60;br /&#62;
% imagesc(p0);&#60;br /&#62;
source.p0 = disc_1 ;&#60;br /&#62;
init_p0  = source.p0; %for output&#60;/p&#62;
&#60;p&#62;% smooth the initial pressure distribution and restore the magnitude&#60;br /&#62;
source.p0 = smooth(source.p0, true);&#60;/p&#62;
&#60;p&#62;% define a centered Cartesian circular sensor&#60;br /&#62;
sensor_radius = 2e-3;      % [m]&#60;br /&#62;
sensor_angle = 2*pi ;      % [rad]&#60;br /&#62;
sensor_pos = [0, 0];       % [m]&#60;br /&#62;
num_sensor_points = 30;&#60;br /&#62;
cart_sensor_mask = makeCartCircle(sensor_radius, num_sensor_points, sensor_pos, sensor_angle);&#60;/p&#62;
&#60;p&#62;% assign to sensor structure&#60;br /&#62;
sensor.mask = cart_sensor_mask;&#60;/p&#62;
&#60;p&#62;% create the time array&#60;br /&#62;
t1=kgrid.makeTime(medium.sound_speed);&#60;/p&#62;
&#60;p&#62;% set the input arguements: force the PML to be outside the computational&#60;br /&#62;
% grid; switch off p0 smoothing within kspaceFirstOrder2D&#60;br /&#62;
input_args1 = {'PMLInside', false, 'PMLSize', PML_size, 'PlotPML', false, 'Smooth', false};&#60;/p&#62;
&#60;p&#62;% %% save the simulation animations as a movie&#60;br /&#62;
% input_args2 = {'RecordMovie', true, 'MovieName', 'example_movie'};&#60;br /&#62;
% input_args = [input_args1 input_args2];&#60;br /&#62;
input_args = input_args1;&#60;/p&#62;
&#60;p&#62;% run the simulation&#60;br /&#62;
sensor_data = kspaceFirstOrder2D(kgrid, medium, source, sensor, input_args{:});&#60;/p&#62;
&#60;p&#62;% add noise to the recorded sensor data&#60;br /&#62;
signal_to_noise_ratio = 40;	% [dB]&#60;br /&#62;
sensor_data = addNoise(sensor_data, signal_to_noise_ratio, 'peak');&#60;/p&#62;
&#60;p&#62;% create a second computation grid for the reconstruction to avoid the&#60;br /&#62;
% inverse crime&#60;br /&#62;
Nx = 300;           % number of grid points in the x direction&#60;br /&#62;
Ny = 300;           % number of grid points in the y direction&#60;br /&#62;
dx = x/Nx;          % grid point spacing in the x direction [m]&#60;br /&#62;
dy = y/Ny;          % grid point spacing in the y direction [m]&#60;br /&#62;
kgrid_recon = kWaveGrid(Nx, dx, Ny, dy);&#60;/p&#62;
&#60;p&#62;% use the same time array for the reconstruction&#60;br /&#62;
kgrid_recon.setTime(kgrid.Nt, kgrid.dt);&#60;/p&#62;
&#60;p&#62;% reset the initial pressure&#60;br /&#62;
source.p0 = 0;&#60;/p&#62;
&#60;p&#62;% assign the time reversal data&#60;br /&#62;
sensor.time_reversal_boundary_data = sensor_data;&#60;/p&#62;
&#60;p&#62;% run the time-reversal reconstruction&#60;br /&#62;
p0_recon = kspaceFirstOrder2D(kgrid_recon, medium, source, sensor, input_args{:});&#60;/p&#62;
&#60;p&#62;Could you give me some advice?&#60;br /&#62;
I appreciate any help in this regard.&#60;br /&#62;
   Zeng
&#60;/p&#62;</description>
		</item>
		<item>
			<title>DuuMushishi on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-3883</link>
			<pubDate>Mon, 26 Aug 2013 21:00:21 +0000</pubDate>
			<dc:creator>DuuMushishi</dc:creator>
			<guid isPermaLink="false">3883@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hello Brad,&#60;/p&#62;
&#60;p&#62;I followed your instructions and it seems the simulation is now running without problems. Thank you for your quick reply. I really appreciate your help.&#60;/p&#62;
&#60;p&#62;Thanks again&#60;br /&#62;
Andre
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-3882</link>
			<pubDate>Mon, 26 Aug 2013 17:10:00 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">3882@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Andre,&#60;/p&#62;
&#60;p&#62;This particular simulation works by assigning larger heterogenous maps of sound and density, and then assigning a portion of these to &#60;code&#62;medium.sound_speed&#60;/code&#62; and &#60;code&#62;medium.density&#60;/code&#62; for the simulation of each scan line. &#60;/p&#62;
&#60;p&#62;If you want to follow the same format for the absorption, you should define an additional absorption coefficient variable that is Nx_tot by Ny_tot by Nz_tot, and then for the simulation of each scan line, assign the appropriate portion of this to &#60;code&#62;medium.alpha_coeff&#60;/code&#62;. You can see how this is done for the sound speed and density at line 235/236.&#60;/p&#62;
&#60;p&#62;Hope that helps,&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>DuuMushishi on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-3880</link>
			<pubDate>Mon, 26 Aug 2013 16:27:11 +0000</pubDate>
			<dc:creator>DuuMushishi</dc:creator>
			<guid isPermaLink="false">3880@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;OK, I've just corrected that typo and I got this error:&#60;/p&#62;
&#60;p&#62;....medium.alpha_coeff = ones(kgrid.Nx,kgrid.Ny,kgrid.Nz)*0.2; 	% [dB/(MHz^y cm)]&#60;br /&#62;
    medium.alpha_power = 1.0;&#60;br /&#62;
    medium.alpha_mode = 'no_dispersion';.....&#60;/p&#62;
&#60;p&#62;??? Attempt to grow array along ambiguous dimension.&#60;/p&#62;
&#60;p&#62;Error in ==&#38;gt; example_us_bmode_linear_transducer at 189&#60;br /&#62;
medium.alpha_coeff(scattering_region1==1)=0.6;&#60;/p&#62;
&#60;p&#62;So I assumed that it was because the scattering_region1 had different size than kgrid (Ny_tot = Ny + number_scan_lines*transducer.element_width;) thus, I changed the dimension of the alpha_coeff matrix to:&#60;/p&#62;
&#60;p&#62;medium.alpha_coeff = ones(Nx_tot,Ny_tot,Nz_tot)*0.2;&#60;/p&#62;
&#60;p&#62;but then this error comes out:&#60;/p&#62;
&#60;p&#62;??? Array dimensions must match for binary array op.&#60;/p&#62;
&#60;p&#62;Error in ==&#38;gt; kspaceFirstOrder_createAbsorptionVariables at 40&#60;br /&#62;
        absorb_tau = -2*medium.alpha_coeff.*c.^(medium.alpha_power -&#60;br /&#62;
        1);&#60;/p&#62;
&#60;p&#62;Error in ==&#38;gt; kspaceFirstOrder3D at 705&#60;br /&#62;
kspaceFirstOrder_createAbsorptionVariables;&#60;/p&#62;
&#60;p&#62;Error in ==&#38;gt; example_us_bmode_linear_transducer at 247&#60;br /&#62;
        sensor_data = kspaceFirstOrder3D(kgrid, medium, transducer,&#60;br /&#62;
        transducer, input_args{:});&#60;/p&#62;
&#60;p&#62;Am I missing something?&#60;br /&#62;
Thanks,&#60;br /&#62;
Andre
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-3876</link>
			<pubDate>Sat, 24 Aug 2013 09:41:44 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">3876@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;The problem is just a small typo: &#60;code&#62;alfa_coeff&#60;/code&#62; must be spelt &#60;code&#62;alpha_coeff&#60;/code&#62;.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>DuuMushishi on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-3875</link>
			<pubDate>Fri, 23 Aug 2013 22:02:39 +0000</pubDate>
			<dc:creator>DuuMushishi</dc:creator>
			<guid isPermaLink="false">3875@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Oh, I'm sorry, I didn´t copy the entire error message&#60;/p&#62;
&#60;p&#62;??? Error using ==&#38;gt; checkFieldNames at 51&#60;br /&#62;
alfa_coeff is not a valid field for the structure medium
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-3874</link>
			<pubDate>Fri, 23 Aug 2013 18:31:27 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">3874@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Andre,&#60;/p&#62;
&#60;p&#62;Is there an error message above where it says &#34;Error in ...&#34; ?&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>DuuMushishi on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-3873</link>
			<pubDate>Fri, 23 Aug 2013 16:47:48 +0000</pubDate>
			<dc:creator>DuuMushishi</dc:creator>
			<guid isPermaLink="false">3873@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hello Dr.Cox&#60;br /&#62;
I'm trying to run a simulation whit different absorption coeff. in the medium (i.e 0.75,0.5) and I'm using the B-mode image example file. However, when the alfa_coeff is change to a matrix, the simulation encounter the following error:&#60;/p&#62;
&#60;p&#62;Error in ==&#38;gt; kspaceFirstOrder_inputChecking at 83&#60;br /&#62;
checkFieldNames(medium, {'sound_speed', 'sound_speed_ref', 'density', 'alpha_coeff', 'alpha_power',&#60;br /&#62;
'alpha_mode', 'alpha_filter', 'alpha_sign', 'BonA'});&#60;/p&#62;
&#60;p&#62;Error in ==&#38;gt; kspaceFirstOrder3D at 495&#60;br /&#62;
kspaceFirstOrder_inputChecking;&#60;/p&#62;
&#60;p&#62;Error in ==&#38;gt; simulation at 135&#60;br /&#62;
        sensor_data = kspaceFirstOrder3D(kgrid, medium, transducer, transducer, input_args{:});&#60;/p&#62;
&#60;p&#62;Is there any other value that I must set/correct in order to properly simulate a medium with two different absorption properties?&#60;/p&#62;
&#60;p&#62;Andre
&#60;/p&#62;</description>
		</item>
		<item>
			<title>bencox on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-324</link>
			<pubDate>Wed, 22 Feb 2012 10:38:31 +0000</pubDate>
			<dc:creator>bencox</dc:creator>
			<guid isPermaLink="false">324@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;That's right, yes. &#60;/p&#62;
&#60;p&#62;Hope you get it working!&#60;/p&#62;
&#60;p&#62;Ben
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Tim Wang on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-320</link>
			<pubDate>Wed, 22 Feb 2012 00:47:54 +0000</pubDate>
			<dc:creator>Tim Wang</dc:creator>
			<guid isPermaLink="false">320@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Thanks Dr. Cox. This is what I was trying to do.&#60;/p&#62;
&#60;p&#62;So originally, if alpha_coeff =0.75, that means both disc source and the background meduim has the same absorption coeff.? (All pixels coeff = 0.75?)&#60;/p&#62;
&#60;p&#62;Tim
&#60;/p&#62;</description>
		</item>
		<item>
			<title>bencox on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-319</link>
			<pubDate>Tue, 21 Feb 2012 23:27:10 +0000</pubDate>
			<dc:creator>bencox</dc:creator>
			<guid isPermaLink="false">319@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Tim,&#60;/p&#62;
&#60;p&#62;Instead of being a single number, alpha_coeff can be a matrix the same size as your image, so alpha_coeff takes a different value for each pixel (in 2D) or voxel (in 3D). If you want just two values - one or the background and one for an object  - you have to define values for all pixels. Here's an example for a disc with higher absorption:&#60;br /&#62;
&#60;code&#62;&#60;br /&#62;
object = makeDisc(kgrid.Nx, kgrid.Ny, kgrid.Nx/2, kgrid.Ny/2, 5);&#60;br /&#62;
medium.alpha_coeff = ones(kgrid.Nx,kgrid.Ny)*0.75;&#60;br /&#62;
medium.alpha_coeff(object==1) = 2;&#60;br /&#62;
&#60;/code&#62;&#60;/p&#62;
&#60;p&#62;Is something like this what you're trying to do?&#60;/p&#62;
&#60;p&#62;Ben
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Tim Wang on "Absorption coeff. of the target"</title>
			<link>http://www.k-wave.org/forum/topic/absorption-coeff-of-the-target#post-318</link>
			<pubDate>Tue, 21 Feb 2012 18:55:19 +0000</pubDate>
			<dc:creator>Tim Wang</dc:creator>
			<guid isPermaLink="false">318@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hello Dr. Cox, &#60;/p&#62;
&#60;p&#62;The alpha_coeff in the code now is set to 0.75, it is the propagation medium absorption, right? Where can I find the target source absorption coefficient right now?&#60;/p&#62;
&#60;p&#62;Thanks,&#60;br /&#62;
Tim
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
