6554
Comment:

← Revision 4 as of 20130307 21:23:05 ⇥
6568
converted to 1.6 markup

Deletions are marked like this.  Additions are marked like this. 
Line 2:  Line 2: 
To attain the glittering heights of becoming an ''SPM power user'', you will need to learn some matlab programming. SPM is written in [http://www.mathworks.com matlab], which is a high level programming language based on matrices. One of the the virtues of SPM is that the authors give out the source code, which is mainly in the matlab programming language. This means that, if you can program in matlab, you will be able to read the code to see what SPM is doing (it is quite often the only way to work this out). You can also change the behaviour of SPM by changing the code, or write code that works with SPM to do analyses that SPM does not do, or pull data out of SPM to analyse with other packages.  To attain the glittering heights of becoming an ''SPM power user'', you will need to learn some matlab programming. SPM is written in [[http://www.mathworks.commatlab]], which is a high level programming language based on matrices. One of the the virtues of SPM is that the authors give out the source code, which is mainly in the matlab programming language. This means that, if you can program in matlab, you will be able to read the code to see what SPM is doing (it is quite often the only way to work this out). You can also change the behaviour of SPM by changing the code, or write code that works with SPM to do analyses that SPM does not do, or pull data out of SPM to analyse with other packages. 
Line 71:  Line 71: 
There are a large number of matlab tutorials on the web. A good place to start is the [http://www.indiana.edu/~statmath/math/matlab/ Indiana University Matlab page], which contains a basic tutorial and lots of links to other tutorials.  There are a large number of matlab tutorials on the web. A good place to start is the [[http://www.indiana.edu/~statmath/math/matlab/Indiana University Matlab page]], which contains a basic tutorial and lots of links to other tutorials. 
Line 75:  Line 75: 
* [http://www.math.utah.edu/lab/ms/matlab/matlab.shtml tutorial from the maths department at Utah] * [http://www.math.mtu.edu/~msgocken/intro/intro.html Mark Gockenbach's matlab tutorial] and the same [http://www.math.mtu.edu/~msgocken/intro/intro.ps tutorial in postscript]. * [http://spicerack.sr.unh.edu/~mathadm/tutorial/software/matlab/index.shtml University of New Hampshire's tutorial] * [http://web.mit.edu/answers/matlab/index.shtml MIT FAQ about matlab], with quite a number of answers that are specific to their setup. * [http://cimarron.sie.arizona.edu/math.html Maths and matlab links], including tutorials. * [http://www.engin.umich.edu/group/ctm/basic/basic.html Basic section of the University of Michigan matlab control tutorial]. * [http://wings.buffalo.edu/computing/sc/mat.html Links to some more tutorials] etc. 
* [[http://www.math.utah.edu/lab/ms/matlab/matlab.shtmltutorial from the maths department at Utah]] * [[http://www.math.mtu.edu/~msgocken/intro/intro.htmlMark Gockenbach's matlab tutorial]] and the same [[http://www.math.mtu.edu/~msgocken/intro/intro.pstutorial in postscript]]. * [[http://spicerack.sr.unh.edu/~mathadm/tutorial/software/matlab/index.shtmlUniversity of New Hampshire's tutorial]] * [[http://web.mit.edu/answers/matlab/index.shtmlMIT FAQ about matlab]], with quite a number of answers that are specific to their setup. * [[http://cimarron.sie.arizona.edu/math.htmlMaths and matlab links]], including tutorials. * [[http://www.engin.umich.edu/group/ctm/basic/basic.htmlBasic section of the University of Michigan matlab control tutorial]]. * [[http://wings.buffalo.edu/computing/sc/mat.htmlLinks to some more tutorials]] etc. 
Line 134:  Line 134: 
So, you now have a basic grounding in matlab. Using matlab with SPM is broadly pretty simple, but, as with SPM generally, it is very important to understand the underlying concepts. To get started, the first thing to do is to understand the image format used by SPM. This is a modified version of Analyze 7 format; you can find details in our [wiki:FormatAnalyze Analyze format web page]. Next you could try my [wiki:PrinciplesStatistics SPM statistics tutorial], and in particular the associated matlab code, http://imaging.mrccbu.cam.ac.uk/scripts/statstalk.m. This code takes you through getting data out of image files, doing some basic adjustments to the data, plotting it, saving it to file etc. It might be useful to work through this code with the tutorial to get a feel for programming with matlab and SPM. If you want to write programs using the SPM interface, have a look at the spm_get routine (SPM2) or the spm_select routine (SPM5), in the SPM distribution, and the spm_input routine. Basic help is available via:  So, you now have a basic grounding in matlab. Using matlab with SPM is broadly pretty simple, but, as with SPM generally, it is very important to understand the underlying concepts. To get started, the first thing to do is to understand the image format used by SPM. This is a modified version of Analyze 7 format; you can find details in our [[FormatAnalyzeAnalyze format web page]]. Next you could try my [[PrinciplesStatisticsSPM statistics tutorial]], and in particular the associated matlab code, http://imaging.mrccbu.cam.ac.uk/scripts/statstalk.m. This code takes you through getting data out of image files, doing some basic adjustments to the data, plotting it, saving it to file etc. It might be useful to work through this code with the tutorial to get a feel for programming with matlab and SPM. If you want to write programs using the SPM interface, have a look at the spm_get routine (SPM2) or the spm_select routine (SPM5), in the SPM distribution, and the spm_input routine. Basic help is available via: 
matlab for SPM
To attain the glittering heights of becoming an SPM power user, you will need to learn some matlab programming. SPM is written in matlab, which is a high level programming language based on matrices. One of the the virtues of SPM is that the authors give out the source code, which is mainly in the matlab programming language. This means that, if you can program in matlab, you will be able to read the code to see what SPM is doing (it is quite often the only way to work this out). You can also change the behaviour of SPM by changing the code, or write code that works with SPM to do analyses that SPM does not do, or pull data out of SPM to analyse with other packages.
Versions of matlab and SPM
There are two basic versions of SPM in current use: SPM2 and SPM5. SPM2 will run on matlab 5.3 or greater. I have used it with matlab 7 at least. SPM5 is recorded as needing matlab 6.5 to 7.1
Starting matlab
This may depend on your local system. On the MRCCBU system, we start matlab in Unix, by typing, simply,
matlab
at the unix prompt. This brings up the matlab window, which is a text input window, with a prompt that looks like this:
>>
To run matlab programs, you can type the names of matlab scripts or functions at this prompt. For example, to get the SPM2 file selection dialog box, you could type:
spm_get
at the matlab prompt.
The equivalent for SPM5 is
spm_select
Matlab very basics
With the matlab window, you have access to a very powerful mathematical system. At its most basic, you can use it as a calculator. For example, if you type:
36*67
at the >> prompt, and press return, you will get the following output in the matlab window:
ans = 2412
Like other programming languages, matlab uses variables. For example, to set the variable A to equal 36:
A=36
which will give us the output:
A = 36
if we then set B thus:
B = 67
then, as you would expect, you can type:
A * B
and get the output:
ans = 2412
That was very basic, wasn't it? So, now would be a good time to have a look at some matlab tutorials. Below are some links to matlab information on the web. There is a good tutorial accessible via the Getting started link in the matlab HTML help system. You can get the HTML help system by typing "helpdesk" at the matlab prompt. You can get another version of the same tutorial by typing "tour" at the matlab prompt. See below for other help options within matlab.
Matlab tutorials
There are a large number of matlab tutorials on the web. A good place to start is the Indiana University Matlab page, which contains a basic tutorial and lots of links to other tutorials.
Below is an unsorted list of other matlab links that are mainly basic tutorials:
Mark Gockenbach's matlab tutorial and the same tutorial in postscript.
MIT FAQ about matlab, with quite a number of answers that are specific to their setup.
Maths and matlab links, including tutorials.
Basic section of the University of Michigan matlab control tutorial.
Getting help from within matlab
The following commands may be useful to get help within matlab. To use them, type the commands at the matlab prompt.
help
lists the topics for which help is available.
help
followed by a matlab function name, such as, for example, spm_get  the SPM2 file selection function, prints out the help available for that function in the matlab window.
intro
starts an introduction to matlab.
doc
starts the matlab HTML help system.
xplang
starts an introduction to programming in matlab.
lookfor
followed by some word of interest, searches all the directories matlab knows about for functions with the word in the first line of help for that function. Try:
help lookfor
for more detail. There are a couple of very useful additions to the help documentation. Firstly, the
doc
function, that can also be reached by the command
helpdesk
As I mentioned above, there is a useful tutorial attached to the "getting started" link on the start page of this help system. There is also another help system, rather simpler in design than the HTML help, reached with the command
helpwin
Printed manuals
Don't forget these. I found the introductory user guide for 4.2 helpful, all that time ago. I haven't looked at the equivalent manuals for later versions of matlab.
Using matlab with SPM
So, you now have a basic grounding in matlab. Using matlab with SPM is broadly pretty simple, but, as with SPM generally, it is very important to understand the underlying concepts. To get started, the first thing to do is to understand the image format used by SPM. This is a modified version of Analyze 7 format; you can find details in our Analyze format web page. Next you could try my SPM statistics tutorial, and in particular the associated matlab code, http://imaging.mrccbu.cam.ac.uk/scripts/statstalk.m. This code takes you through getting data out of image files, doing some basic adjustments to the data, plotting it, saving it to file etc. It might be useful to work through this code with the tutorial to get a feel for programming with matlab and SPM. If you want to write programs using the SPM interface, have a look at the spm_get routine (SPM2) or the spm_select routine (SPM5), in the SPM distribution, and the spm_input routine. Basic help is available via:
help spm_get help spm_select help spm_input
The code itself contains more comprehensive help; try looking at spm_get.m / spm_select.m and spm_input.m in your favourite text editor.