Gradient waveform design is an important component
of pulse sequence design in MRI. Frequently, there
are situations where it is desirable to design waveforms
that meet certain constraints in a minimum time.
For some situations, the solution is obvious. However,
in other cases, analytic solutions may not even exist.
The design methods described on this page are particularly
useful for design problems that do not have analytic
solutions.

The tar file includes numerous .m scripts, some of
which are used in the main .m files described below.
There is also one .mex function that is compiled
for linux, described below. For any .m file, you
can obtain information by typing "help "

tutorial.m Script showing how to use the following
functions, and some examples of what they can do.

mintimegrad.m Solves minimum-time, multi-dimensional
gradient design problems subject to constraints on gradient
and slew rate magnitude, or (similarly) constraints on
voltage and current limits.

socp.m / socp_mex.mexglx
Second-Order Cone Programming and supporting MEX function compiled
for linux. This code can be obtained via
Stephen Boyd's Research Site. Please observe
the copyrights and licensing terms of that site. Note that
I made some small changes to socp_mex.c so that it would compile
with the newer Matlab Mex interface. You can download my
updated version here Modified socp_mex.c

vmsocpgrad.m SOCP formulation of constrained gradient
design subject to voltage/current limits.

socpgrad.m Wrapper code for SOCP forumulation of
constrained gradient design subject to amplitude/slew-rate limits.

vds.m Variable-density spiral design, used in an
example. This code is included only
for the tutorial example. You are welcome to use
it, but I can't guarantee any support of it here.

Download Instructions

Save the tar file, mintgrad.tar.gz
to your computer. To extract the files, execute "tar -xzvf mintgrad.tar.gz"
from the directory where you have saved the file.

Run Matlab from this directory, and type "tutorial"
to begin.

Comments

Please drop me an email
(Brian Hargreaves)
if you use this with comments as to
whether it is working, and any changes that could make it easier
for you to use.
I will try to respond quickly to questions.
Also, please report bugs with this code to
Brian Hargreaves.