<?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: Phased Array Imaging</title>
		<link>http://www.k-wave.org/forum/topic/phased-array-imaging</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Wed, 03 Jun 2026 02:19:03 +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/phased-array-imaging" rel="self" type="application/rss+xml" />

		<item>
			<title>CharlesLoh on "Phased Array Imaging"</title>
			<link>http://www.k-wave.org/forum/topic/phased-array-imaging#post-5723</link>
			<pubDate>Thu, 27 Oct 2016 08:56:48 +0000</pubDate>
			<dc:creator>CharlesLoh</dc:creator>
			<guid isPermaLink="false">5723@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Brad,&#60;br /&#62;
I'm attempting to simulate a phased array transducer with the specific details:&#60;br /&#62;
Number of elements = 64&#60;br /&#62;
Element Width = 0.53mm&#60;br /&#62;
Element Pitch = 0.63mm&#60;br /&#62;
Centre frequency = 5MHz&#60;br /&#62;
Bandwidth(-6dB) = 50%&#60;/p&#62;
&#60;p&#62;The sampling frequency is supposed to be 100MHz.&#60;/p&#62;
&#60;p&#62;I noticed a few issues:&#60;br /&#62;
1)The waves are propagating from both the bottom and top at the start and just bounces back at the 0 mark.&#60;br /&#62;
2)I can't change the element width.&#60;br /&#62;
3)When I changed the tone burst frequency to 5MHz, the waves started out with an irregular shape.&#60;/p&#62;
&#60;p&#62;What are the problems causing this?&#60;/p&#62;
&#60;p&#62;What I'd like to know is:&#60;br /&#62;
4)Is my current method of simulating Aluminum(with velocity of sound 6300ms^-1, and density of 2700kg/m^3) correct?&#60;/p&#62;
&#60;p&#62;5)How do I input my sampling frequency of 100MHz?&#60;/p&#62;
&#60;p&#62;6)How do I define the element pitch? (I read the manual, but couldn't find the method to do so)&#60;/p&#62;
&#60;p&#62;7)The element width remains at 750micrometers no matter what value I change to. When it goes above 1, it shows an error. How do I rectify this?&#60;/p&#62;
&#60;p&#62;8)By making all 64 elements active, am I achieving &#34;full matrix capture&#34;? Whereby when 1 element TX, the others are RX.&#60;/p&#62;
&#60;p&#62;As I'm really new in MATLAB, it'll be best if things can be explained out according to my point form. I've been thrown to do a Final Year Project that invovles MATLAB(Which I am extremely bad at)&#60;/p&#62;
&#60;p&#62;Thanks Brad!&#60;/p&#62;
&#60;p&#62;Here is my code as shown below:&#60;br /&#62;
clc&#60;br /&#62;
clear all&#60;br /&#62;
close all&#60;br /&#62;
DATA_CAST='single';&#60;br /&#62;
% set the size of the perfectly matched layer (PML)&#60;br /&#62;
PML_X_SIZE = 2; % [grid points]&#60;br /&#62;
PML_Y_SIZE = 1; % [grid points]&#60;br /&#62;
PML_Z_SIZE = 1; % [grid points]&#60;/p&#62;
&#60;p&#62;% set total number of grid points not including the PML&#60;br /&#62;
Nx = 196 - 2*PML_X_SIZE; % [grid points]&#60;br /&#62;
Ny = 126 - 2*PML_Y_SIZE; % [grid points]&#60;br /&#62;
Nz = 62 - 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 = 0.75/1000; % [m]&#60;/p&#62;
&#60;p&#62;% calculate the spacing between the grid points&#60;br /&#62;
dx = x; % [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;br /&#62;
% define the properties of the propagation medium&#60;br /&#62;
medium.sound_speed = 6300*ones(Nx,Ny,Nz) ; % [m/s] 2nd&#60;br /&#62;
medium.sound_speed(1:Nx/2,:,:) = 1000 ; % [m/s] 1st 101&#60;br /&#62;
medium.density = 2700*ones(Nx,Ny,Nz); % [kg/m^3] 2nd&#60;br /&#62;
medium.density(1:round(Nx/2),:,:) = 1134 ; % [kg/m^3] 1st&#60;/p&#62;
&#60;p&#62;medium.alpha_coeff = 0.001*ones(Nx,Ny,Nz); % [dB/(MHz^y cm)] 2nd&#60;br /&#62;
medium.alpha_coeff(1:round(Nx/2),:,:)=0.01 ; % [dB/(MHz^y cm)] 1st&#60;br /&#62;
medium.alpha_power = 1.5;&#60;br /&#62;
medium.BonA = 6;&#60;/p&#62;
&#60;p&#62;% create the time array&#60;br /&#62;
t_end = 120e-6; % [s]&#60;br /&#62;
kgrid.t_array = makeTime(kgrid, medium.sound_speed, [], t_end);&#60;br /&#62;
% define properties of the input signal&#60;br /&#62;
source_strength = 10e6; % [Pa]&#60;br /&#62;
tone_burst_freq = 2.25e6; % [Hz]&#60;br /&#62;
tone_burst_cycles = 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;br /&#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./(1000*1134)).*input_signal;&#60;br /&#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; % width of each element [grid points/voxels]&#60;br /&#62;
transducer.element_length = 12*4/3; % length of each element [grid points/voxels]&#60;br /&#62;
transducer.element_spacing = 0; % spacing (kerf width) between the elements [grid points/voxels]&#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 = 1000; % sound speed [m/s]&#60;br /&#62;
transducer.focus_distance = 70/1000; % focus distance [m]&#60;br /&#62;
transducer.elevation_focus_distance = 68/1000; % focus distance in the elevation plane [m]&#60;br /&#62;
transducer.steering_angle = 0; % steering angle [degrees]&#60;br /&#62;
% apodization&#60;br /&#62;
transducer.transmit_apodization = 'Hanning';&#60;br /&#62;
transducer.receive_apodization = 'Rectangular';&#60;/p&#62;
&#60;p&#62;% define the transducer elements that are currently active&#60;br /&#62;
number_active_elements = 64;&#60;br /&#62;
transducer.active_elements = ones(transducer.number_elements, 1);&#60;br /&#62;
%transducer.active_elements = zeros(transducer.number_elements, 1);&#60;br /&#62;
%transducer.active_elements(21:52) = 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;br /&#62;
% set the input settings&#60;br /&#62;
input_args = {'DisplayMask', transducer.active_elements_mask, ...&#60;br /&#62;
'PMLInside', true, 'PlotPML', true, 'PMLSize', [PML_X_SIZE, PML_Y_SIZE, PML_Z_SIZE], ...&#60;br /&#62;
'DataCast', DATA_CAST, 'PlotScale', [-source_strength/32, source_strength/32]};&#60;/p&#62;
&#60;p&#62;% run the simulation&#60;br /&#62;
%[sensor_data] = kspaceFirstOrder3D(kgrid, medium, transducer, transducer, input_args{:});&#60;br /&#62;
[sensor_data] = kspaceFirstOrder3D(kgrid, medium, transducer, transducer, 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;br /&#62;
% plot the recorded time series&#60;br /&#62;
figure;&#60;br /&#62;
stackedPlot(kgrid.t_array*1e6, sensor_data);&#60;br /&#62;
xlabel('Time [\mus]');&#60;br /&#62;
ylabel('Transducer Element');&#60;br /&#62;
title('Recorded Pressure');&#60;/p&#62;
&#60;p&#62;% plot the scan line&#60;br /&#62;
figure;&#60;br /&#62;
plot(kgrid.t_array*1e6, scan_line, '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>CharlesLoh on "Phased Array Imaging"</title>
			<link>http://www.k-wave.org/forum/topic/phased-array-imaging#post-5719</link>
			<pubDate>Mon, 24 Oct 2016 19:01:54 +0000</pubDate>
			<dc:creator>CharlesLoh</dc:creator>
			<guid isPermaLink="false">5719@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Got it! Thanks Brad!&#60;/p&#62;
&#60;p&#62;I'm currently working on a transducer simulator now, will let you know how it goes!
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "Phased Array Imaging"</title>
			<link>http://www.k-wave.org/forum/topic/phased-array-imaging#post-5715</link>
			<pubDate>Mon, 24 Oct 2016 09:38:45 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">5715@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Charles,&#60;/p&#62;
&#60;p&#62;k-Wave is a general wave equation solver that can be used in a wide range of applications. There is some in built functionality to create linear phased arrays. It is possible to use an experimental signal. As far as image processing, that depends entirely on what you want to do. I would suggest going through some of the examples in the MATLAB help browser and reading the k-Wave manual to see what it is capable of.&#60;/p&#62;
&#60;p&#62;Hope that helps,&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>CharlesLoh on "Phased Array Imaging"</title>
			<link>http://www.k-wave.org/forum/topic/phased-array-imaging#post-5712</link>
			<pubDate>Fri, 21 Oct 2016 12:38:34 +0000</pubDate>
			<dc:creator>CharlesLoh</dc:creator>
			<guid isPermaLink="false">5712@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;Is this toolbox capable of:&#60;/p&#62;
&#60;p&#62;1)Modelling out a phased array ultrasonic transducer? Is it using Full matrix capture&#38;gt;&#60;br /&#62;
2)Using an experimental signal from an actual transducer as input signal to run the simulation?&#60;br /&#62;
3)Image post processing from the gathered data?&#60;/p&#62;
&#60;p&#62;Regards,&#60;br /&#62;
Charles
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
