The purpose of this tutorial is to give a basic introduction to programming in MATLAB using "scripts". It requires no programming experience, but some familiarity with MATLAB is recommended. All background needed can be found on the tutorial Overview of MATLAB. Upon completing the tutorial, you should know how to
A number of examples will be given below. No output is given in the tutorial since it is expected that you implement the examples yourself and then run them in the MATLAB command window to get the output.
Disclaimer: Many of the examples and exercises given below may seem to be irrelevant and even a little stupid. However, by understanding them you will have all the background to write programs to solve all the homework problems.
In case your code has errors, MATLAB will complain when you try to run the program in the command window. When this happens, MATLAB will indicate what error occurred. You should try to interpret the error message and make necessary changes to the script in the editor. The error that is reported by MATLAB is hyperlinked to the line in the file that caused the problem. Using the mouse you can thus jump right to the line in your program that has caused the error. After you have made the changes, make sure you save your file before trying to run the program again in the command window.
The best programming advice, which applies to even the most experienced programmers, is to never try to write all the code at once. Programming should be done in small steps with each step tested to ensure it works before proceeding to program the next step. Implementing a longer program should always start with an outline using pen and paper before one line of code is ever typed into the editor.
As discussed in the introductory tutorial, there is no need to declare variable types anywhere in your script (or functions). However, it may be necessary to initialize some variables before they are used, and it is good MATLAB programming practice to initialize vectors and matrices to their proper sizes at the beginning programs. Furthermore, to avoid simple bugs that can be very difficult to find, you should use the clear at the beginning of your script (but not function) to erase any values that may have previously been stored in these variables.
To make MATLAB give an output, such as return the value of a variable, you type the name of the variable without any semi-colon (;) following the variable. In many cases, there is no need to see the value of a variable every single time MATLAB uses it. If MATLAB re-computes the value of a variable 1000 times, we probably don't want to see the result every single time. To suppress the output of a value, just add a semi-colon after the variable. Then MATLAB will perform the command, but will not show it on the screen.
As a first example, consider the following program that takes a temperature value in Kelvin and outputs that value in Fahrenheit and Celsius.
Example 1:
clear temp_kelvin = 233.15; temp_celsius = temp_kelvin-273.15 temp_farenheit = 9/5*temp_celsius + 32 |
Not that values of temp_celsius and temp_farenheit are displayed in the command window since no semicolon is placed after these lines.
Logical operators
Operation: | MATLAB syntax: |
Logical and | & |
Logical or | | |
Negate | ~ |
Relational operators
Operation: | MATLAB syntax: |
Strictly less than | < |
Less than or equal to | <= |
Strictly greater than | > |
Greater than or equal to | >= |
Equal to | == |
Not equal to | ~= |
Each of these commands results in one of two values, a logical 1 or a logical 0. The value 1 means true, while 0 means false. The keywords true and false can also be used to represent these logical values. Note that all the logical commands apply to scalar or matrices. When matrices are used with these operators the comparison is done element-by-element.
It is important to know the difference between = and ==. The former is used when assigning a number to a variable, e.g., x=3;. The latter is used to check if two expressions are equal. The examples below illustrate this difference.
Example 2: At the command prompt type the following:
a = 5
b = 6 a == b a ~= b a < b a > b c = 4 (a < b) & (c < b) (a < b) & (c > b) (a < b) | (c > b) true == true false == false false == true c = 1:10 a <= c a >= c a = [0 1 4 5 8 3 4 9 10 2]; a <= c |
Often in programs we want the computer to check whether a statement is true or false and perform different operations depending on the result of this test. This can be done using a so-called if-statement. The syntax is given below.
if logical expression
commandsend or if logical expression commandselse commandsend or if logical expression commandselseif logical expression commandselse commandsend |
Note that for each if, you need to "close" the if-statement with an end.
The use of this conditional statement is best illustrated by studying the following three examples and doing Exercise 1.
Example 3: Computing the absolute value $|x|$
clear x = -1; if x < 0 x = -1*x; end x |
In the next example, we make MATLAB write something depending on which test our month "passes". To make MATLAB write text as output, use single quote ' around the text or try the disp function.
Example 4:
clear month = 3; if month ==1 || month==3 || month ==5 || month==7 || month==10 || month==12 num_days = 31; elseif month == 2 num_days = 28; else num_days = 30; end disp(['Month ' num2str(month) ' has ' num2str(num_days) ' days']) |
In the next example we use the command rem (remainder), which returns the remainder after the division of integer x by y. The syntax is rem(x,y).
Example 5:clear number = 38; remainder2 = rem(number,2); remainder3 = rem(number,3); if remainder2==0 && remainder3==0 result = 'Your number is divisible by both 2 and 3'; elseif remainder2==0 result = 'Your number is divisible by 2 but not by 3'; elseif remainder3==0 result = 'Your number is divisible by 3 but not by 2'; else result = 'Your number is not divisible by 2 or 3'; end disp(result) |
Exercise 1. Write a program similar to Example 4, which in addition to displaying how many days are in a given month, also determines the name of the month given the month number. For example, if month = 3, the text that should be output is "March has 31 days". |
The power of computers is that they can repeat seemlingly mundane operations over and over (without getting bored!). An operation that is performed repeatedly is called a repetitive operation or, more common, a loop. There are different kinds of loops but the most common one in MATLAB is the for-loop. The syntax for a for-loop is:
for loop_variable = start_value : end_value commandsend |
This loop will initiate loop_variable as start_value, increment loop_variable by 1 each step until end_value is reached. Below follows a few examples of how to use for-loops.
This example fills a vector with the first 20 Fibonacci numbers and then plots the results using a logarithmic scale for the dependent variable (y-axis).
Example 6:clear n = 20; x = zeros(n,1); x(1) = 1; x(2) = 1; for i=3:n x(i)= x(i-1) + x(i-2); end semilogy(1:n,x,'xb-'); xlabel('n'), ylabel('nth Fibonacci number'); |
In the following example we see a so-called nested for-loop. This is nothing else then a "loop within a loop". Note how we must "close" each for with an end. Make sure you understand how this example works!
Example 7:clear for i=1:5 for j=1:5 A(i,j)=10*i+j; end end A |
In the following example, make sure you understand the purpose of the variable mysum. This is a common way of performing summations when programming.
Example 8:
clear
N = 10; mysum = 0; for k=0:N mysum = mysum+1/factorial(k); end e_approximation = mysum e_exact = exp(1) |
In the next example, notice how we have to "shift" the indexing of the vector. MATLAB must have positive integers for indexing a matrix or vector! One of the most common mistakes when programming in MATLAB is that your program begins indexing at zero instead of one. Also note how by typing a percent sign (%) before text in the code, MATLAB does not interpret this text as code. It just serves as a comment for any person using the code. Commenting your code is essential when writing programs.
Example 9:
clear N = 10; for k=0:70 x(k+1)=0.1*k; % Indices of vectors must be NON-ZERO!end semilogy(x,e) title('Approximation of e^x for x between 0 and 7') xlabel('x') ylabel('e^x') |
A for-loop can be terminated prematurely by using the break command. This is typically used in combination with a logical operation in an if-else block.
The other type of looping mechanism used in MATLAB is the while-loop. The syntax is as follows:
while logical expression commandsend |
This type of loop is commonly used in iterative methods. The body of the loop should contain code that updates the logical expression so that it eventually evaluates to true. These types of loops can result in infinite operations if one is not careful. If this happens you can terminate the operation by pressing
Example 10:
clear
err = inf;
k = 0;
mysum = 0;
while err > 1e-8
end
mysum = mysum + 1/factorial(k);
k = k + 1;
err = abs(mysum-exp(1));
disp(['It requires ' num2str(k) ' in the above series to approximate e to 1e-8']);