How-to: Start using LaTeX
I am right now starting to write my bachelor thesis in Telecommunication Engineering. The main topic of the thesis will be Reversible Data Hiding. But this is not the intresting news nor is the main topic of this post.
When I went to see my relator teacher he said to me “ok, you now have an argument for your thesis. How are you going to write it? For me it does not really matter, choose the system which suits more to you”. After this I started to think about which possibilities I had and after a quick research I found three ways:
- Using OpenOffice: writing as everybody probably does, through a normal WYSIWYG (what you see is what you get) editor;
- Using Lyx (http://www.lyx.org): something in between a normal text editor and pure LaTeX;
- Latex.
After carefully thinking, after looking for useful info online for several days, after some trials I decided to write it in pure Latex.
What is LaTeX
To be short, LaTeX is a markup language widely used in the scientific community. It can be regarded as something similar to HTML, where the elements of the webpage are described through tags. For a more formal definition, have a look at Wikipedia: http://en.wikipedia.org/wiki/LaTeX
Why LaTeX
The best thing that LaTeX offers for writing a complex document like a thesis is the fact that it lets you focus on the content rather than on the visual aspect of your work. Something like HTML and CSS, if you are familiar to that. 100% distachment. This is maybe the main reason because I decided to use it for the thesis work. I have some previous experience with common Word Processors (MS Word and OpenOffice) and complex documents… I got quite pissed off when the images were floating around all the time like a fish in an aquarium.
At the beginning Lyx looked to me like a very nice alternative. It is probably a good alternative for someone who wants to start approaching the LaTeX way of writing without modifying too much his/her habits. The problem I encountered with Lyx is that I did not feel really “free” to control the document. Maybe I did not like the user interface… I do not know. But do not discard Lyx directly if you have to chose. Give it a try, it may me something for you.
How LaTeX
You need basically to understand just a concept: the document you write in LaTeX is commonly stored with the extension *.tex and needs to be compiled by a compiler in order to give you a nice PDF, DVI or PS output file. Assuming this, what you need to work with LaTeX are two things:
- An Editor: you can take whichever text-editor, like for example gedit. What I suggest you to do is to use an editor which is though for writing in LaTeX as it will give you some facilities (some functions, or some code-highlight) which can help you a lot in writing your document. On Linux I personally use Kile (http://kile.sourceforge.net/) which has a nice interface and lets me compile my .tex file with an easy keyboard shortcut. I have no experience in writing in LaTeX under Windows. What I can suggest you to do is just try to search “Latex editor windows” or something like that. Try some programs, have a look into some forums, and you will quickly find a nice editor.
- The LaTeX binaries: here you have the compiler, the style sheets and so on which tell the compiler how your document should look like. For example tex-live (http://www.tug.org/texlive/, but mostly likely you can get it from a repository) for Linux and MiKTeX (http://www.miktex.org) for Windows.
Wanna try?
LaTeX can be used to prepare slides, too! There are so many guides to LaTeX on the internet that is totally unuseful for me to write some basics about it. What I can do is to suggest you Wikibooks, which has a great guide to LaTeX which can lead you through your very first document to quite tricky issues. Start from here: http://en.wikibooks.org/wiki/LaTeX/ . You can also download the guide in PDF, very nice!
Enjoy and write a comment here about how it was to try out LaTeX!
Multidimensional arrays in MATLAB
Today I feel like writing something about MATLAB. I am using it for some projects in the Univerisity. Among all other projects, one very important to me is related to Digital Image Processing, as it is the topic of my Bachelor Degree Thesis, which should be ready in a couple of months. Anyway, dealing with images and MATLAB means dealing with arrays. If you have an image you can import it in MATLAB using the command
imread(‘filename.tiff’); %or whatever extension your image has (jpg, bmp, gif,…)
MATLAB will create of course an array out of this but which kind of array? In case of grayscale images it is clear: the resul will just be a matrix with pixel intensities. What about if the input is an RGB image (color image)=? As each pixel is characterized by three components, RGB (Red, Green, Blue), you will get a 3D array of size height x width x 3. You can think about this array like three matrices one behind another. Maybe this image can make it clearer:

Think about this cube, but change the size to height x width x 3.
Setting / Reading the elements of multidimensional arrays
Now we will see briefly how MATLAB implements 3D (and in general, multidimensional) arrays. Let’s call our test variable a. In our pratical case with color images, the way you have to think the matrix is the following:
a = (rows, cols, channel)
where channel=1 means RED, channel=2 means GREEN and channel = 3 means BLUE.
Setting / Reading a single value in a single channel
Let’s image you want to set a single element of this 3D array. For example, in the RGB contest, you want to set the Green component of the pixel which has coordinates (3,2) to 231 (image it is a 8-bit per channel image: all the values of the matrix will be in the range 0-255):
a(3,2,2)=231;
This approach works of course for all the elements of the multidimensional matrix.
Note: If you for example take an empty variable and set: a(100,100,3)=1; , this will create a 100×100x3 matrix, full of zeros and the last element, (100,100,3), equal to one.
Setting / Reading the RGB value of a pixel
Imagine now you want to set/read not only one value of the 3D matrix, but, let’s say, the RGB value for a specific pixel. Imagine you are interested in the pixel which has coordintes (2,2). Then you have to do following:
a(2,2,:)=[100, 200, 255];
here the “:” sign means “use the vector the user is giving me in the direction “channels”". 100 is the RED, 200 is the GREEN and 255 is the BLUE component.
Setting / Reading a whole channel (color)
Another think you maybe need to do is to set a whole plane, let’s say to set the R component for the whole image. This means that you want to set the whole first plane to some values you have in a matrix, which of course has the same size as the image:
a(:,:,1)=[100 120; 200 250]; %In case of a 2×2 image
Very basic stuff, as you can see. Hope this helps somebody.