In this post, I will write example code for the most common things you’ll do in MATLAB. MATLAB is a software package used for numerical computation and visualization.
My goal is to write bare-bones, skeleton recipes that can be easily modified and adapted to your own projects.
Prerequisites
- You have MATLAB installed on your computer. I’m using MATLAB Release 2020a.
Select a Current Directory
Open MATLAB.
In the command window, select your desired Current Folder (i.e. working directory). The syntax is:
cd 'path_to_folder'
For example., in the Command Window, you would type the following command and press Enter in your keyboard:
cd 'C:\Program Files\My_Documents'
Create New Scripts
To create a new script (i.e. the most basic Matlab file with the ‘.m’ extension), run the following command in the Command window.
edit matlab_cookbook_1.m
If this is your first time creating a file in MATLAB, you might see a prompt that asks you “Do you want to create it?”
Highlight “Do not show this prompt again,” and click Yes.
Accept User Input
Write the following code inside matlab_cookbook_1.m.
1 2 3 4 5 6 7 8 9 10 11 12 | % Get rid of blank lines in the output format compact % Accept a string as input % Semicolon prevents every variable and output from appearing % in the command window name = input( "What's your first name : " , "s" ); % Check if the user entered something as input if ~isempty(name) fprintf ( "Hi %s\n" , name) end |
Save the code.
Click Run to run the code.
Type in your name into the Command Window.
Press Enter.
Here is the output:

To stop a script from running at any time, you can type CTRL+C.
Now, let’s create a new file named matlab_cookbook_2.m.
edit matlab_cookbook_2.m
Add the following code:
1 2 3 4 5 6 7 8 | % Get rid of blank lines in the output format compact % Accept vector input vector_input = input( "Enter a vector : " ); % Display the vector to the Command Window disp(vector_input) |
Click Run.
Enter your vector. For example, you can enter:
[1 2 3]
Here is the output:

Declare and Initialize Variables and Data Types
Let’s work with variables and data types (i.e. classes).
Create a new script.
edit matlab_cookbook_3.m
Type the following code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | format compact % Initialize a character variable char_1 = 'A' % Determine the class of a character class (char_1) % Initialize a string variable str_1 = "This is a string" % Determine the class class (str_1) % Evaluate a boolean expression 5 > 2 % Initialize a boolean varable to true bool_1 = true % Initialize a boolean variable to false bool_2 = false % Check out the maximum and minimum values that can be % stored in a data type intmin( 'int8' ) intmax( 'int8' ) % See the largest double value that can be stored realmax % See the largest integer that can be stored realmax( 'single' ) |
Run it.
Here is the output:


How do you create an expression that spans more than one line?
Open a new script.
edit matlab_cookbook_4.m
1 2 3 4 5 | format compact % An expression that spans more than one line var_1 = 5 + 5 + 1 ... + 1 |
Save and then run the code.

Casting Variables to Different Data Types
Let’s explore how to cast variables to different data types.
Create a new script.
edit matlab_cookbook_5.m
Type the following code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | format compact % Create a double ( double is the default ) var_1 = 9 % Output the data type class (var_1) % Caste the double to an int8 data type var_2 = int8(var_1) % Check that the variable was properly converted class (var_2) % Convert a character to a double var_3 = double ( 'A' ) % Convert a double to a character var_4 = char (64) |
Run it.
Here is the output:

Formatting Data into a String
Let’s explore how to format data into a string.
Create a new script.
edit matlab_cookbook_6.m
Type the following code.
1 2 3 4 5 6 7 8 9 | format compact % Format output into a string. % Sum should be a signed integer - %d sprintf ( '9 + 2 = %d\n' , 9 + 2) % Format output into a string. % Sum should be a float with two decimal places sprintf ( '9 + 2 = %.2f\n' , 9 + 2) |
Run it.
Here is the output:

Basic Mathematical Operations
Let’s explore how to do basic mathematical operations in MATLAB.
Create a new script.
edit matlab_cookbook_7.m
Type the following code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | % Supress the display of blank lines format compact % Display formatted text % Addition fprintf ( '9 + 2 = %d\n' , 9 + 2) % Subtraction fprintf ( '9 - 2 = %d\n' , 9 - 2) % Multiplication fprintf ( '9 * 2 = %d\n' , 9 * 2) % Display float with two decimal places fprintf ( '9 * 2 = %0.2f\n' , 9 / 2) % Exponentiation fprintf ( '5^2 = %d\n' , 5^2) % Modulus fprintf ( '5%%2 = %d\n' , mod(5,2)) % Generate a random number between 50 and 100 randi([50,100]) |
Run it.
Here is the output:

Basic Mathematical Functions
Let’s take a look at some basic mathematical functions in MATLAB.
Create a new script.
edit matlab_cookbook_8.m
Type the following code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | format compact % This code has some basics mathematical functions % in MATLAB % Absolute Value fprintf ( 'abs(-7) = %d\n' , abs (-7)) % Floor fprintf ( 'floor(3.23) = %d\n' , floor (3.23)) % Ceiling fprintf ( 'ceil(3.23) = %d\n' , ceil (3.23)) % Rounding fprintf ( 'round(3.23) = %d\n' , round(3.23)) % Exponential (e^x) fprintf ( 'exp(1) = %f\n' , exp (1)) % Logarithms fprintf ( 'log(100) = %f\n' , log (100)) fprintf ( 'log10(100) = %f\n' , log10 (100)) fprintf ( 'log2(100) = %f\n' , log2(100)) % Square root fprintf ( 'sqrt(144) = %f\n' , sqrt (144)) % Convert from degrees to radians fprintf ( '90 Deg to Radians = %f\n' , deg2rad(90)) % Convert from radians to degrees fprintf ( 'pi/2 Radians to Degrees = %f\n' , rad2deg(pi/2)) %%%% Trigonometric functions%%% % Sine of argument in radians fprintf ( 'Sine of pi/2 = %f\n' , sin (pi/2)) % Cosine of argument in radians fprintf ( 'Cosine of pi/2 = %f\n' , cos (pi/2)) % Tangent of argument in radians fprintf ( 'Tangent of -pi/4 = %f\n' , tan (-pi/4)) |
Run it.
Here is the output:

To see a big list of the built-in mathematical functions, you can type the following command:
help elfun
Relational and Logical Operators
Create a new script.
edit matlab_cookbook_9.m
Type the following code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | format compact %{ Relational Operators: -- Greater than > -- Less than < -- Greater than or equal to >= -- Less than or equal to <= -- Equal to == -- Not equal to ~= Logical Operators: -- OR || -- AND && -- NOT ~ %} % Example age = 19 if age < 18 disp( "You are not in college yet" ) elseif age >= 18 && age <= 22 disp( "You are a college student" ) else disp( "You have graduated from college" ) end |
Run it.
Here is the output:

Now, let’s work with switch statements.
edit matlab_cookbook_10.m
Here is the output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | format compact size = 12 switch size case 2 disp( "Too small" ) case num2cell(3:10) % If number is between 3 and 10, inclusive disp( "Just right" ) case {11, 12, 13, 14} % If number is any of these numbers disp( "A bit large" ) otherwise disp( "Too big" ) end |
Vectors
edit matlab_cookbook_11.m
Here is the output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | format compact % Create a vector vector_1 = [6 9 1 3 8] % Calculate the length of the vector vector_1_length = length(vector_1) % Sort a vector in ascending order vector_1 = sort(vector_1) % Sort a vector in descending order vector_1 = sort(vector_1, 'descend' ) % Create a vector that has the numbers 3 through 9 vector_2 = 3:9 % Create a vector of numbers from 10 through 15 in steps of 0.5 vector_3 = 10:0.5:15 % Concatenate vectors vector_4 = [vector_2 vector_3] % Get the first item in the vector above. Indices start at 1. vector_4(1) |
edit matlab_cookbook_12.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | format compact % Create a vector vector_1 = [6 9 1 3 8] % Get the last value in a vector last_val_in_vector = vector_1(end) % Change the first value in a vector vector_1(1) = 7 % Append values to end of vector vector_1(6) = 99 % Get the first 3 values of a vector vector_1(1:3) % Get the first and second value of a vector vector_1([1 2]) % Create a column vector col_vector_1 = [6;9;1;3;8] % Multiply a column vector and a row vector vector_mult = col_vector_1 * vector_1 % Take the dot product of two vectors % 2 * 5 + 3 * 9 + 4 * 7 = 65 vector_2 = [2 3 4] vector_3 = [5 9 7] dot_product_val = dot(vector_2, vector_3) |
Here is the output:

Matrix Basics
edit matlab_cookbook_13.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | format compact % Initialize a matrix matrix_1 = [4 6 2; 6 3 2] % Get the number of values in a row num_in_a_row = length(matrix_1) % Get the total number of values in a matrix num_of_vals = numel(matrix_1) % Size of matrix (num rows num cols) matrix_size = size(matrix_1) [num_of_rows, num_of_cols] = size(matrix_1) % Generate a random matrix with values between 20 and 30 % Matrix has two rows. matrix_2 = randi([20,30],2) % Modify a value inside a matrix (row 1, column 2) % Remember matrices start at 1 matrix_2(1, 2) = 33 % Modify all row values in the first row matrix_2(1,:) = 26 % Modify all column values in the first column matrix_2(:,1) = 95 % Get the first value in the last row first_val_last_row = matrix_2(end, 1) % Get the second value in the last column second_val_last_col = matrix_2(2, end) % Delete the second column matrix_2(:,2) = []; |
Loops
For loops
edit matlab_cookbook_14.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | format compact % Loop from 1 through 5 for i = 1:5 disp(i) % Display end % Add a space disp( ' ' ) % Decrement from 5 to 0 in steps of 1 for i = 5:-1:0 disp(i) end % Add a space disp( ' ' ) % Loop from 1 through 3 for i = [1 2 3] disp(i) end % Add a space disp( ' ' ) % Create a matrix matrix_1 = [1 4 5; 6 2 7]; % Nested for loop to run through all values in a matrix for row = 1:2 for col = 1:3 disp(matrix_1(row, col)) end end % Go through an entire vector vector_1 = [2 8 3 5] for i = 1:length(vector_1) disp(vector_1(i)) end |
Output:

While loops
edit matlab_cookbook_15.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | format compact % Create a while loop i = 1 while i < 25 % If the number is divisible by 5 if (mod(i,5)) == 0 disp(i) i = i + 1; continue end % Else i = i + 1; if i >= 14 % Prematurely leave the while loop break end end |
Output:

Matrix Operations
edit matlab_cookbook_16.m
Here is the first part of the output.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | format compact % Initialize a 3x3 matrix matrix_1 = [4 6 2; 3 6 14; 5 2 9] matrix_2 = [2:4; 7:9] matrix_3 = [5:7; 9:11] matrix_4 = [1:2; 3:4; 2:3] % Add two matrices together matrix_2 + matrix_3 % Multiply corresponding elements of two matrices together matrix_2 .* matrix_3 % Multiply two matrices together matrix_2 * matrix_4 % Perform the square root on every value in a matrix sqrt (matrix_1) % Double everything in a matrix matrix_2 = matrix_2 * 2 % Sum everything in each column sum(matrix_2) % Convert a matrix to a boolean array % Any value greater than 5 is 1 greater_than_five = matrix_1 > 5 |
Cell Arrays
edit matlab_cookbook_17.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | format compact % Create a cell array cell_array_1 = { 'Automatic Addison' , 25, [6 32 54]} % Preallocate a cell array to which we will later assign data cell_array_2 = cell(3) % Get the first value in the cell array cell_array_1{1} % Add more information cell_array_1{4} = 'John Doe' % Get the length of the cell array length(cell_array_1) % Display the values in a cell array for i = 1:length(cell_array_1) disp(cell_array_1{i}) end |
Here is the output:

Strings
edit matlab_cookbook_18.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | format compact % Initialize a string my_string_1 = 'Automatic Addison' % Get the length of the string length(my_string_1) % Get the second value in the string my_string_1(2) % Get the first three letters of the string my_string_1(1:3) % Concatenate longer_string = strcat (my_string_1, ' We' 're longer now' ) % Replace a value in a string strrep(longer_string, 'now' , 'immediately' ) % Split a string based on space delimiter string_array = strsplit(longer_string, ' ' ) % Convert an integer to a string num_string = int2str(33) % Convert a float to a string float_string = num2str(2.4928) |
Here is the output:

Structures
Here is how to create your own custom data type using structures. Structures consist of key-value pairs (like a dictionary).
edit matlab_cookbook_19.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | format compact automatic_addison = struct ( 'name' , 'Automatic Addison' , ... 'age' , 35, 'item_purchased' , [65 23]) % Get his age disp(automatic_addison.age) % Add a field automatic_addison.favorite_food = 'Oatmeal' % Remove a field automatic_addison = rmfield(automatic_addison, 'favorite_food' ) % Store a structure in a vector clients(1) = automatic_addison |
Here is the output:

Tables
edit matlab_cookbook_20.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | format compact name = { 'Sam' ; 'Bill' ; 'John' }; age = [32; 52; 19]; salary = [45000; 90000; 15000] id = { '1' , '2' , '3' } % The name of each row will be the id employees = table(name, age, salary, ... 'RowName' , id) % Get the average salary avg_salary = mean(employees.salary) % 'help table' command helps you find what you can do with tables % Add a new field employees.vacation_days = [10; 20; 15] |
Here is the output:

File Input/Output
edit matlab_cookbook_21.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | format compact % Generate a random 8x8 matrix random_matrix = randi([1,5],8) % Save the matrix as a text file save sample_data_1.txt random_matrix -ascii % Load the text file load sample_data_1.txt disp sample_data_1 type sample_data_1.txt |
Here is the output:

Functions
edit matlab_cookbook_22.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | format compact % Input vector values = [9.7, 63.5, 25.2, 72.9, 1.1]; % Calculate the average and store it mean = average(values) % Define a function named average.m that % accepts an input vector and returns the average function ave = average(x) % Take the sum of all elements in x and divide % by the number of elements ave = sum(x(:))/numel(x); end |
Here is the output:

Creating a Plot
edit basic_plot.m
1 2 3 4 | % Graph a parabola x = [-100:5:100]; y = x.^2; plot(x, y) |
Here is the output:
