<?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: synthetic transmit aperture</title>
		<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Tue, 12 May 2026 23:39:32 +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/synthetic-transmit-aperture" rel="self" type="application/rss+xml" />

		<item>
			<title>sepand on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5113</link>
			<pubDate>Tue, 30 Jun 2015 09:47:47 +0000</pubDate>
			<dc:creator>sepand</dc:creator>
			<guid isPermaLink="false">5113@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Anthony&#60;/p&#62;
&#60;p&#62;Thank you so much for your answers. They were really helpful for my simulations and I sure that you are a qualified person in this field. as you suggested, I will get help from other members too.&#60;br /&#62;
thank you so much&#60;br /&#62;
good luck&#60;br /&#62;
best regards&#60;br /&#62;
Sepand
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Anthony on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5112</link>
			<pubDate>Mon, 29 Jun 2015 16:53:15 +0000</pubDate>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="false">5112@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Sepand,&#60;/p&#62;
&#60;p&#62;I hope someone more qualified than me will have a look at your questions ^^. However, according to my limited knowledge, what I can say is that k-waves directly computes the pressure field at each point of the domain by solving the mass conservation, momentum conservation etc. &#60;/p&#62;
&#60;p&#62;For your sensor, I would say that you need to convert the pressure into voltage yourself, provided you know the behavior of your &#34;real world&#34; sensor :-)&#60;br /&#62;
If your question about &#34;convolution by an impulse response&#34; is related to the source transducer, what you need to set as source term is definitely the acoustic source term, which means, what will effectively be generated by your transducer and not the electric signal you send to your transducer. Starting from the input electric signal, you will have to take into account your transducer's efficiency, frequency response... and set the resulting acoustic signal as k-wave source term.&#60;/p&#62;
&#60;p&#62;Hope it helps!&#60;br /&#62;
Anthony
&#60;/p&#62;</description>
		</item>
		<item>
			<title>sepand on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5109</link>
			<pubDate>Sat, 27 Jun 2015 13:22:47 +0000</pubDate>
			<dc:creator>sepand</dc:creator>
			<guid isPermaLink="false">5109@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Dear Anthony&#60;br /&#62;
I am really sorry for my long questions and I am really thankful for your complete answers.&#60;br /&#62;
but I have some problems in Image reconstruction.&#60;br /&#62;
I am using source and sensor class in 2D (at the same place and with the same geometry as transmitter and receiver) for ultrasound synthetic aperture imaging. I want to use dynamic focusing in transmit and receive for image reconstruction from sensor_data.  I mean that according to the delay times for transmit and receive for all transmission and reception I could find the samples of sensor_data corresponding to each pixels (Conventional beam forming for calculation of image values in each pixel of image).but my reconstructed image is not true for point target.&#60;br /&#62;
- But I am not sure that if I can calculate the image values directly from samples of sensor_data?  Because  sensor_data is pressure not voltage.&#60;br /&#62;
- Is the sensor_data, echo signal from the defined medium and sensed by defined sensor or not?&#60;/p&#62;
&#60;p&#62;another questions:&#60;/p&#62;
&#60;p&#62;- K-wave toolbox does not assign impulse response for transducers. Is it necessary to convolve the output data by an impulse response?&#60;br /&#62;
- What is the difference between photo acoustic simulation and ultrasound simulation? Is it true to use source and sensor class for ultrasound imaging? Does it need any additional commands for using source and sensors in ultrasound simulation?&#60;/p&#62;
&#60;p&#62;Thank you in advanced&#60;br /&#62;
Best Regards&#60;br /&#62;
Sepand
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Anthony on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5102</link>
			<pubDate>Tue, 09 Jun 2015 10:36:01 +0000</pubDate>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="false">5102@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;About question 3.:&#60;br /&#62;
You can define a sensor mask, exactly as you did for your source mask.&#60;br /&#62;
If I understand properly, you have several &#34;physical&#34; sensor which are bigger than one voxel. For each &#34;physical&#34; sensor you can simply take the mean of the signals recorded for all the voxels of your physical sensor. There are probably better functions than simply taking the mean but it should do the job...&#60;/p&#62;
&#60;p&#62;About question 4.&#60;br /&#62;
No, you don't have to set all properties : if you have an initial pressure distribution, set source.p0, if it is a time-varying pressure source, then set source.p etc... If you don't have a velocity source, for example, you don't need to set the variable source.u_mask for example.&#60;/p&#62;
&#60;p&#62;Best regards,&#60;br /&#62;
Anthony
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Anthony on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5100</link>
			<pubDate>Tue, 09 Jun 2015 10:06:43 +0000</pubDate>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="false">5100@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Sepand,&#60;/p&#62;
&#60;p&#62;I am sorry, I don't have time to answer all your questions today but I wrote you a little example. Just change the value of the variable called FOCUSED to see how I manage steering.&#60;/p&#62;
&#60;p&#62;Hope it helps :-)&#60;br /&#62;
Anthony&#60;/p&#62;
&#60;pre&#62;&#60;code&#62;clear all
close all
clc

% Play with this parameter
FOCUSED = true;

% create the computational grid
Nx = 128-40;
Ny = 128-40;
dx = 0.1e-3;
dy = 0.1e-3;
kgrid = makeGrid(Nx, dx, Ny, dy);

% define the properties of the propagation medium
medium.sound_speed = 1500;
medium.density = 1000;

% create time array
kgrid.t_array = makeTime(kgrid, medium.sound_speed);

% create source
distFromBorder = 5;
source.p_mask = zeros(Nx, Ny);
xc = round(Nx/2);
yc = round(Ny/2);
xgrid = (1:Nx)-xc;
source.p_mask(abs(xgrid)&#38;lt;0.4*Nx,distFromBorder) = 1;
source.p_mode = &#38;#39;dirichlet&#38;#39;;

% define source
source_mag = 0.1e6;
source_f0 = 3e6;
if ~FOCUSED
    source.p = source_mag*cos(2 * pi * kgrid.t_array * source_f0);
else
    distToFocus = sqrt( (dx*(abs(xgrid(abs(xgrid)&#38;lt;0.4*Nx)))).^2 + (dy*(yc-distFromBorder)).^2 );
    distDiff = distToFocus - (dy*(yc-distFromBorder)); % phase difference = 0 in the middle
    lambda = medium.sound_speed/source_f0;
    Phase = 2*pi*distDiff/lambda;
    source.p = source_mag*cos(bsxfun(@plus, 2 * pi * kgrid.t_array * source_f0, Phase&#38;#39;));
end

% define sensor
sensor.mask = ones(Nx, Ny);
sensor.record = {&#38;#39;p&#38;#39;, &#38;#39;u_non_staggered&#38;#39;};

% run the simulation
sensor_data = kspaceFirstOrder2D(kgrid, medium, source, sensor,...
    &#38;#39;DisplayMask&#38;#39;, &#38;#39;off&#38;#39;, &#38;#39;PlotScale&#38;#39;, [-0.5, 0.5]*source_mag,&#38;#39;PMLInside&#38;#39;,false,&#38;#39;PlotPML&#38;#39;,false);&#60;/code&#62;&#60;/pre&#62;</description>
		</item>
		<item>
			<title>sepand on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5098</link>
			<pubDate>Fri, 05 Jun 2015 06:39:40 +0000</pubDate>
			<dc:creator>sepand</dc:creator>
			<guid isPermaLink="false">5098@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Dear Anthony&#60;br /&#62;
Thank you so much for your kind help.&#60;br /&#62;
I have used your suggestions about working in source and sensor classes instead of transducer class. I have defined a mask for source and sensor classes that matches on my transducer geometry. Then I have defined source.uy as a sine wave. My transducer has 64 elements with 0.1 mm element width (1 grid point) and 0.1mm height. So, I want to have 4 active elements for each transmission. Each of 4 elements (16th , 31th ,46th , 61 th  ) should be excited by  coded versions of sine wave. For example:&#60;br /&#62;
 For a one transmission: excitations for 4 mentioned elements respectively are: sine waves with phases(pi/2 0 pi/2 0)  These 4 elements should excited and transmitted simultaneously without any steering and focusing.  I have written the following codes that are a part of Hadamard encoding technique.&#60;br /&#62;
source.u_mask = zeros(Nx, Ny, Nz);&#60;br /&#62;
source.u_mask(1,16,(Nz/2)) = 1;&#60;br /&#62;
source.u_mask(1,31,(Nz/2)) = 1;&#60;br /&#62;
source.u_mask(1,46,(Nz/2)) = 1;&#60;br /&#62;
source.u_mask(1,61,(Nz/2)) = 1;&#60;/p&#62;
&#60;p&#62;phase=[pi/2 0 pi/2 0]';&#60;/p&#62;
&#60;p&#62;k=1;&#60;br /&#62;
for j=16:15:61&#60;br /&#62;
source.uy(j,:)=sin(2*pi*source_freq*kgrid.t_array+phase(k,:));&#60;br /&#62;
k=k+1;&#60;br /&#62;
end&#60;br /&#62;
input_args = {'PlotLayout', true, 'PlotPML', false, ...&#60;br /&#62;
    'DataCast', 'single', 'CartInterp', 'nearest'};&#60;br /&#62;
sensor_data = kspaceFirstOrder3D(kgrid, medium, source, sensor,input_args{:});&#60;/p&#62;
&#60;p&#62; but in using the ‘kspaceFirstOrder3D’ I faced to these errors:&#60;br /&#62;
“Error using ==&#38;gt; kspaceFirstOrder_inputChecking at 540&#60;br /&#62;
The number of time series in source.ux (etc) must match the number of source elements in source.u_mask&#60;br /&#62;
Error in ==&#38;gt; kspaceFirstOrder3D at 495&#60;br /&#62;
kspaceFirstOrder_inputChecking;&#60;br /&#62;
Error in ==&#38;gt; SA_hadamard_source at 94&#60;br /&#62;
sensor_data = kspaceFirstOrder3D(kgrid, medium, source, sensor,input_args{:}); “&#60;/p&#62;
&#60;p&#62;My problems in using source and sensor are:&#60;br /&#62;
1-	Why matlab gives me this error? How should set these phase shifts for source.uy? from the mentioned error, I think that source.uy should be just a one dimensional wave and it’s not possible to be size (Ny, Nt).&#60;br /&#62;
2-	could you please give me some examples about using these techniques. It really critical point for me to know that if kwave has this property(I mean setting different excitations for specific elements and excite them simultaneously). &#60;/p&#62;
&#60;p&#62;3-	At the following codes I used elements just in size of dx, dy, dz, but If I want to have a specific size for transducer, with grid size 0.1 mm, I have to set each 5 grid points as a transducer width. But in receive phase, all grid points that I set them as sensor (receiver) will give me the sensor data. And it is not true because each 5 grid points are one element of transducer (in z, y plane). I mean that, the size of sensor data is the size of active grid points instead of number of elements of transducer. So, how can I solve this problem? &#60;/p&#62;
&#60;p&#62;4-	Another problem is about other properties of source and sensor that has been mentioned in user’s manual. Is it necessary to set inputs for all these properties such as (source.p0, source.u_mask, source.u_mode, source.ux, source.uz, sensor.record, sensor.record_start_index, sensor.time_reversal_boundary_data, sensor.frequency_response, sensor.directivity_size, …)?&#60;/p&#62;
&#60;p&#62;5-	In user’s manual all ultrasound examples are in transducer class, because of this I am not really familiar with using source and sensor, so could you please give me some examples?&#60;br /&#62;
It is really critical for me to know the answers as soon as possible, please help me to run my simulations.&#60;br /&#62;
Thank you in advanced for your help.&#60;br /&#62;
Best regards&#60;br /&#62;
Sepand
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Anthony on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5089</link>
			<pubDate>Tue, 26 May 2015 15:05:30 +0000</pubDate>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="false">5089@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Sepand,&#60;/p&#62;
&#60;p&#62;Actually, I am always using &#34;source&#34; in my codes, so I am not familiar with the possibilities of the &#34;transducer&#34; class. I can still try to answer some of your question...&#60;/p&#62;
&#60;p&#62;3) From what I understand, with a transducer class, your can set the apodization window, focusing depth etc. and it is automatically applied to every source point. If you define your source without the transducer class, you will have to change the amplitude and phase of your signal manually for each source point.&#60;br /&#62;
From your question, I guess that your excitation signal &#34;input_signal1&#34; is the same for each source point (except for those which are set to &#34;input_signal2&#34; of course). Instead, you have to set a different input signal at each of your source point, calculating the phase yourself in order to have the focusing depth and steering angle that you want and the amplitude which corresponds to the apodization you want. It is fully manual.&#60;br /&#62;
It could result in something like that:&#60;/p&#62;
&#60;p&#62;&#60;code&#62;for i = 1:N_source_points&#60;/code&#62;&#60;br /&#62;
   &#60;code&#62;source.uy(i,:) = source_mag(i) * sin(2*pi*source_freq*kgrid.t_array + phase(i));&#60;/code&#62;&#60;br /&#62;
&#60;code&#62;end&#60;/code&#62;&#60;br /&#62;
with source_mag and phase which are spatially varying.&#60;/p&#62;
&#60;p&#62;The fields &#60;code&#62;focus_distance&#60;/code&#62;, 'elevation_focus_distance&#60;code&#62;,&#60;/code&#62;steering_angle` etc. should therefore not exist at all: they won't be used as you are not using the transducer class.&#60;/p&#62;
&#60;p&#62;4) Your definition of the binary masks seems correct to me... &#60;/p&#62;
&#60;p&#62;I am not sure to be clear but... hope it helps !&#60;br /&#62;
Anthony&#60;/p&#62;
&#60;p&#62;PS: when you read this post, mentally add something like &#34;from what I know&#34; at the beginning of each sentence. I am not 100% sure of what I say, it is just the way I use it ;-)
&#60;/p&#62;</description>
		</item>
		<item>
			<title>sepand on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5087</link>
			<pubDate>Wed, 20 May 2015 08:58:24 +0000</pubDate>
			<dc:creator>sepand</dc:creator>
			<guid isPermaLink="false">5087@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi&#60;br /&#62;
I am trying to define a binary mask for transducer. After making the transducer the command “ make transducer” gives me the binary mask of all and active elements automatically.  But it is not possible for me to define a binary mask for input signal using transducer.input_signal_mask. Is any way to define a binary mask for input signal of transducer?&#60;br /&#62;
Because of this drawback, I was forced to use “source” definition instead of  “ transducer”.   I want to have a 32 element transducer at the middle of z, y plane, so, I assume a binary mask for source term.  The elements width is in y direction and the height is in z direction.&#60;br /&#62;
I have used the following commands for using 2 types of input signal for excitation of 2 elements simultaneously. But I faced to error using “kspaceFirstOrder3D” .&#60;br /&#62;
My commands are:&#60;/p&#62;
&#60;p&#62;source1.mask = zeros(Nx, Ny, Nz);&#60;br /&#62;
source1.mask(1, (Ny/2-16):(Ny/2+15),(Nz/2-6):(Nz/2+5)) = 1;&#60;br /&#62;
source1.u_mask=zeros(Nx,Ny,Nz);&#60;br /&#62;
source1.u_mask(1,(Ny/2-16):(Ny/2+15),(Nz/2-6):(Nz/2+5))=1;&#60;br /&#62;
for i=1:2:31&#60;br /&#62;
source1.uy(i,:)=input_signal1;&#60;br /&#62;
end&#60;br /&#62;
for j=2:2:32&#60;br /&#62;
 source1.uy(j,:)=input_signal2;&#60;br /&#62;
end&#60;br /&#62;
source1.focus_distance = 20e-3;          % focus distance [m]&#60;br /&#62;
source1.elevation_focus_distance = 19e-3;&#60;br /&#62;
source1.steering_angle = 0;              % steering angle [degrees]&#60;br /&#62;
% apodization&#60;br /&#62;
source1.transmit_apodization = 'Rectangular';&#60;br /&#62;
source1.receive_apodization = 'Rectangular';&#60;br /&#62;
display_mask = source1.mask;&#60;br /&#62;
voxelPlot(source1.mask);&#60;br /&#62;
%---multielement synthetic aperture----&#60;br /&#62;
sensor_data=cell(8,1);&#60;br /&#62;
j=1;&#60;br /&#62;
number_subaperture=2;&#60;br /&#62;
number_elements=32;&#60;br /&#62;
for i=0:number_subaperture:( number_elements-number_subaperture+1)&#60;br /&#62;
    source1.mask(1,(Ny/2-number_elements/2):(Ny/2+number_elements/2-1),(Nz/2-6):(Nz/2+5))=0;&#60;br /&#62;
    source1.mask(:,(Ny/2-number_elements/2+i):(Ny/2-number_elements/2+i+1),:)=1;&#60;br /&#62;
%  source1.uy((Ny/2-number_elements/2+i),:)=input_signal1;&#60;br /&#62;
%  source1.uy((Ny/2-number_elements/2+i+1),:)=input_signal2;&#60;br /&#62;
sensor_data{j,1} = kspaceFirstOrder3D (kgrid, medium, source1, transducer);&#60;br /&#62;
j=j+1;&#60;br /&#62;
end&#60;/p&#62;
&#60;p&#62;So, my questions will be :&#60;/p&#62;
&#60;p&#62;1)	it is not possible for me to define a binary mask for input signal using transducer.input_signal_mask. Is any way to define a binary mask for input signal of “transducer” instead of source?&#60;/p&#62;
&#60;p&#62;2)	The big drawback for me is about using “source.uy”, is it possible to give an example for me? Is the above definition in commands is true? &#60;/p&#62;
&#60;p&#62;3)	Another problem in using “source” is about “apodization” and “focusing”. I think that these inputs are just for “transducer”  term, not “source” term. How can I define these inputs for source term?&#60;/p&#62;
&#60;p&#62;4)	Are the defining a binary mask for source term and source.u_mask true in my commands?  &#60;/p&#62;
&#60;p&#62;Regards&#60;br /&#62;
Sepand
&#60;/p&#62;</description>
		</item>
		<item>
			<title>sepand on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5062</link>
			<pubDate>Thu, 30 Apr 2015 14:11:45 +0000</pubDate>
			<dc:creator>sepand</dc:creator>
			<guid isPermaLink="false">5062@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Dear Anthony&#60;br /&#62;
thanks for your help.&#60;br /&#62;
Sepand
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Anthony on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5048</link>
			<pubDate>Tue, 21 Apr 2015 13:50:31 +0000</pubDate>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="false">5048@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Sepand,&#60;/p&#62;
&#60;p&#62;If I understand your question properly, it is possible to do it (see user manual for more details):&#60;br /&#62;
1) define your transducer as a binary mask&#60;br /&#62;
2) Let N denote the number of voxels representing your transducer and Nt be the number of time steps. You can define your source term as a N*Nt matrix containing the excitation signal at each voxel of your transducer.&#60;/p&#62;
&#60;p&#62;Maybe the development team has a more straightforward solution but this should work. &#60;/p&#62;
&#60;p&#62;Best regards,&#60;br /&#62;
Anthony&#60;/p&#62;
&#60;p&#62;PS : by the way, I suggest you to take the time to entirely read the user manual, it has many helpful information on source terms (f.e. you probably want to set it as Dirichlet boundary condition...).
&#60;/p&#62;</description>
		</item>
		<item>
			<title>sepand on "synthetic transmit aperture"</title>
			<link>http://www.k-wave.org/forum/topic/synthetic-transmit-aperture#post-5046</link>
			<pubDate>Fri, 17 Apr 2015 06:53:37 +0000</pubDate>
			<dc:creator>sepand</dc:creator>
			<guid isPermaLink="false">5046@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi&#60;br /&#62;
I am trying to simulate Synthetic transmit aperture (STA) method using spatial encoding and coded excitations. It is a big challenge for me. Because I want to use K-wave for my simulations but in papers that I have read, most of authors used commercial ultrasound equipment to test the excitation methods. So, I want to know that, is it possible to simulate STA with coded excitations and spatial encoding using K-wave?  Is it possible in K-wave to excite each transducer elements by different excitation signals simultaneously?&#60;br /&#62;
thank you in advanced for your help&#60;br /&#62;
Sepand
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
