I'm actually asking this question on behalf of a sibling who's pursuing a PhD in Biology. While I'm a Mechanical Engineering student and am "computer-savvy" and experienced in learning programming languages from technical textbooks and internet forums, she is very inexperienced in programming in any form.

What textbooks would you recommend for the self-teaching of MATLAB and/or Excel for the purpose of data analysis? If she wanted a technical book, I could find one in five minutes. I'm looking for a book that can explain MATLAB to an inexperienced user with no programming background.

Also, if you learned MATLAB or a similar program with great success, what tips would you give for self teaching? Thanks!

  • 2
    Internet resources have been more accessible (physically and conceptually) than textbooks in my experience
    – rch
    Jul 31, 2014 at 19:07
  • 2
    Another vote for sticking to open-source. Matlab is pretty good at what it does, but I think the flexibility and handling that a language like Python introduces is valuable. I am not in the field of Biology, but it seems like there is a relatively strong Python community (biotnet.org/sites/biotnet.org/files/documents/25/…) (programmingforbiologists.org/why-python). I used this site (pasteur.fr/formation/infobio/python/ch01.html) to help shape my own introductory lecture that I gave.
    – cc7768
    Jul 31, 2014 at 20:45
  • 1
    Is there any room for "don't"? Depending on your specific set of tasks, there are probably better (and cheaper) alternatives.
    – Raphael
    Aug 1, 2014 at 8:34
  • 2
    I think Python would be much more suitable. Also, knowing some linux shell magic and maybe some Perl is very helpful for basic analysis and parsing.
    – Bitwise
    Aug 5, 2014 at 13:21
  • 2
    @Bitwise did you really just recommend Perl to unexperienced programmers? I agree on Python, it can solve 99% of the problems she will likely encounter, if not 100%. Aug 5, 2014 at 13:57

6 Answers 6


The best tool to learn depends on the actual job. For very basic data analysis, Excel has the lowest entry barrier, but the learning curve gets steep soon. Learning a full language will take some months, but will greatly expand the things she is capable of doing. Also, knowing programming in a field where everybody uses Excel can be a great advantage and unique feature for employment.

One important factor deciding which language is the environment she is in. Having people used to the tools and perks of a language can be very useful when learning from scratch. On the other hand, I'd only count "modern" options (some old professors are very fond of FORTRAN77 and IDL, but learning these is like learning to train dinosaurs).

She should consider not only her lab, but also ask at the Bioinformatics department, and take a look at other labs in the branch she is in. In my experience, for the most informatics side of the field, people use mostly Python, C++, and Java for some machine learning. I have encountered some MATLAB, but definitely not much.

One last note: I think in learning your first language you want the cleanest and less quirky possible. MATLAB in this respect is a mess of a language, with a crappy syntax and bad scalability. My personal choice would be Python, so here are some introductory materials:

  • Summer school on scientific programming and introduction to Python. All materials are posted.
  • The official tutorial. There is a lot of things that are not for useful for scientists, but it is very good introduction to the language.
  • Khan academy. They have everything. Very nice.
  • Coursera has a full assortment of courses. She will surely find something of interest there.
  • If it is just to analyze, do some stats, and plot data, there is no need to learn python or c++. It's true that Matlab is not strictly speaking a programming language, but it has the advantage to have a large set of ready-made functions that are tested, debugged, and reasonably idiot-proof. It's far easier to learn than writing good quality c++ code.
    – Cape Code
    Aug 1, 2014 at 11:29
  • @Jigg I definitely don't think C++ is a good entry language. But having been there, I do think that Python with the Scipy stack is easier to use and to understand than MATLAB, providing the same functionality.
    – Davidmh
    Aug 1, 2014 at 11:42
  • MATLAB is fairly complete regarding data processing, but many things are hacky (nargin) or not neatly designed (parenthesis to call functions AND access elements, lack of namespaces, all modules loaded in the workspace).
    – Davidmh
    Aug 1, 2014 at 11:45
  • It sounds like I need to check Scipy more in depth. For now I MEX stuff when I need more flexibility.
    – Cape Code
    Aug 1, 2014 at 12:05

Learning Matlab (I prefer) or R will ultimately make you a more efficient researcher: not only do both languages allow you to do advanced mathematical data processes, but also make publication quality graphics. Excel requires much more work to get data visualization publication ready, in my experience.

While your friend is a biologist, and field where my impression is that R is more heavily used that matlab, if she really wants to learn matlab, this book is great:http://www.springer.com/earth+sciences+and+geography/book/978-3-642-12761-8

While it is designed for Earth Sciences, the tools are universal. Not only does it teach you how to use matlab, but, it goes over statistics and numerical methods as well in a very easy fashion. This book was used in one of my masters classes, and most of the people in the class barely had calculus 2.

My real suggestion is to explore R, as I think in general the world outside the physical sciences is moving towards using that.

  • 5
    In Bioinformatics, I'd say the main trend is Python, MATLAB being in the corner. R is perhaps more common in the Biology part.
    – Davidmh
    Aug 1, 2014 at 10:40

If you happen to have bookmarked those resources when you used them, could you please post an answer linking to them?

A good online resource for MATLAB is found at the Introduction to Computing Resources page, put together by Andrew Török of the University of Houston. I linked to the main page as there are other resources listed in the contents menu which your sibling may find useful.

Also, if you learned MATLAB or a similar program with great success, what tips would you give for self teaching?

As with the self-teaching of other subjects, there is no good substitute for getting your "hands dirty" and playing around with what the tool has to offer. Start by learning the basics (as discussed in the online resource linked above), and progressively increase the complexity until you reach the desired level of understanding.

Edit — I'm including a few more online MATLAB resources that I know of:


(with full agreement with the people who says that online resources, including even youtube are nowadays better than textbooks)

If I were her, I first would learn statistics (that is relevant to her field). Is she an ecologist? A biochemist? Doing in silico bioinfo? They are pretty different fields. Learning MATLAB without having any clear idea about mathematics (linear algebra, statistical tests etc) she wants to use, is pretty damn difficult. This is the typical "I just want to do ANOVA! just tell me where i should click?" problem. On the other hand when she is already able to write down basic equations to paper, and understand what letter is what, and have at least a vague idea of the mechanics, the MATLAb/octave part become pretty straightforward.

Two remarks: - I wouldn't waste my time reading 400 pages books discussing everything from PDEs to symbolic calculations. Any 2-10 pages long tutorial from the net gives the same info, with often better pedagogical part. - While Excel has many annoying features, it is very good to organize and save certain type of experimental data. You can put anything in it, figures, short notes, explanations for yourself, keep everything in one place and for printing one can use something else, gnuplot etc. Of course, it is subjective.

  • 1
    +1 for learning statistics relevant to the field. I would add that she should find out what software application is most suitable for what she wants to do. For example, in many uuniversities SPSS is used in life sciencies. And it is not clear from the OP's post whose idea it was to learn Matlab or Excel. Aug 1, 2014 at 8:42
  • True. These are very different programs. Most probably there are already existing experiment notes, teaching materials, statistics tutorials, licenses in her new laboratory, that are tied to one or the other software.
    – Greg
    Aug 1, 2014 at 9:57
  • Why do you assume the person doesn't know about statistics?
    – Cape Code
    Aug 1, 2014 at 11:14
  • Since the OP not specific about the level, I assumed that she has an average biologist background. Also my personal experience is that people who have solid statistics training, can figure themselves out pretty fast how "ANOVA(..)" function works in Excel.
    – Greg
    Aug 1, 2014 at 12:12

The book I used as an undergrad: Scientific Computing with MATLAB and Octave written by Alfio Quarteroni.

It's not a beginner's tutorial, but it gives you the mathematical theory behind some of the most used functions. I found it useful because it really helps to know what the functions actually do. It contains sample code as well.

One thing that biologist often need to do with Matlab is image processing. If it is the case, the book Digital Image Processing Using Matlab can be handy (lots of practical examples).

The second is most likely available in the library of your/her institution, the first is a bit more confidential but should at least be available through inter-library loan. Note that a good person to ask about books and resources is your librarian.

As a side note, an open-source alternative to Matlab is Octave, which has a good online community around it and shares a good deal of its syntax with Matlab.


As said previously in the answers to the question, the textbooks do not usually work great for programming.

I am an Engineering Physics student working with Applied Mathematics and have been using and promoting MATLAB since I started. However, this summer I was out of my license and therefore turned to Anaconda.

I am going to go off on a spin and recommend Anaconda Scientific Python Distribution. Anaconda is based on Python which is a great language to start of on, if not the best. Not only is it free and open-source but can be used in so much more then MATLAB. They also explain why they give this out for free on their website.

  • We want to ensure that Python, NumPy, SciPy, Pandas, IPython, Matplotlib, Numba, Blaze, Bokeh, and other great Python data analysis tools can be used everywhere.

  • We want to make it easier for Python evangelists and teachers to promote the use of Python.

  • We want to give back to the Python community that we love being a part of.

From my experience so far, it has been more intutive to implement more complex tasks as well as being even a bit FASTER!!


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .