Programming in MATLAB lecture two by Jskc23



• All the built in MATLAB functions are optimized for
  vector operations. Consequently vectorized commands or
  codes run much faster in MATLAB

• Vectorization refers to a manner of computation in which
  an operation is performed simultaneously on a list of
  numbers (a vector /array) rather than sequentially on each
  number of the list.

• For example, let „  ‟ be a list of 100 numbers.Then the
  statement y=sin(), is a vectorized statement as opposed to
  y1=sin(1),y2=sin(  2), …e.t.c.
                     AM2032 JAYANTA MUKHERJEE
           Loops and Iterations
    The for loop…
• Similar to other       N=10;
  programming            for I = 1:N
  languages                for J = 1:N
• Repeats loop a set         A(I,J) = 1/(I+J-1);
  number of times          end
  (based on index)       end
• Can be nested

                 AM2032 JAYANTA MUKHERJEE
      Loops and Iterations-cont.
The while loop…
                           I=1; N=10;
• Similar to other         while I<=N
  programming                 J=1;
  languages                   while J<=N
• Repeats loop until            J=J+1;
  logical condition           end
  returns FALSE.              I=I+1;
• Can be nested.           end

                 AM2032 JAYANTA MUKHERJEE
          Conditional Statements
    if, elseif and else statements…..
•   Works on                  if I == J
    Conditional                 A(I,J) = 2;
    statements                elseif abs(I-J) == 1
•   Short-circuited in          A(I,J) = -1;
    MATLAB - once a
    condition is true, the      A(I,J) = 0;
    sequence terminates.      end

                    AM2032 JAYANTA MUKHERJEE
                   IN MATLAB
Calculations are greatly speeded up by using vectorized operations
rather than using a loop for iteration:

  Example (1):            Clears variables and functions from memory
   >> % Fill b with square roots of 1 to 1000 using a for loop.
   >> clear;
   >> tic;               Starts a stop watch timer
   >> for i=1:1000
   >> t=toc;                     Stops the timer
   >> disp(['Time taken for for loop method is',num2str(t)]);
   Time taken for for loop method is 0.0033462

                               AM2032 JAYANTA MUKHERJEE
             IN MATLAB-cont.
Example (2):
                       Clears variables and functions from memory

 >> % Fill b with square roots of 1 to 1000 using a for loop.
 >> clear;
 >> tic;              Starts a stop watch timer
 >> a=1:1:1000;
 >> t=toc;                    Stops the timer
 >> disp(['Time taken for for loop method is',num2str(t)]);
 Time taken for for loop method is 0.0010155

                            AM2032 JAYANTA MUKHERJEE
• A script file is an „M-file‟ with a set of MATLAB commands in it.
• A script file may contain any number of commands, including those that
  call the built in functions or functions written by you.
• The MATLAB editor is used to write the scripts. Press F5 to run your
• Never name your script the same as the name of a variable it computes
  otherwise MATLAB will have problems accessing the file.
• Avoid writing anything in your script that clashes with built-in
• Save your script as a m-file. Save it always in the „WORK‟
  directory/folder .Otherwise MATLAB will have problems in accessing
  that file.
• Avoid any space between the letters or numbers when you name your
  m-file. MATLAB doesn't like it and will create unnecessary problems.
                         AM2032 JAYANTA MUKHERJEE
                            SCRIPT Example
  Let us write a script to solve the following system of linear equations, and save it as
>>r=1                     % You need to specify the value of the variable r in workspace
                5    2r      r       x1           2
>> solvex                 % This executes the script file named solvex
                3    6 2r-1          x2     =     3
                2 r-1       3r       x3           5
                                   This is the out put. The values of the
 x=                                 which solves the avobe equation an calculates det(A) as well
% This is a script file „solvex.m‟ variables det_A and X appear on the
A=[5 2*r r; 3 6 2*r-1; 2 r-1 3*r];screen as there was ano semicolon at
   -0.0312                                         % Create matrix A
B=[2;3;5];                                         % corresponding
                                   the end of the |Create a vector B line in
    0.2344                         the script file. find the determinant, notice no semicolon
det_A=det(A)                                       %
X=A\B                                              % find X, notice the backslash

       A\B is same as A-1B, but is computationally more stable !
                                  AM2032 JAYANTA MUKHERJEE

Run the program by selecting the “run” button

               AM2032 JAYANTA MUKHERJEE
     Function Files in MATLAB-1
• A function file is also an m-file, like a script file.

• Function files are like programs or subroutines in
  FORTRAN, procedures in PASCAL and functions in C or

• Once you get to know MATLAB well this is where you
  are likely to spend most of your time
 —writing and refining your own function files.

• A function file begins with a function definition line,
  which has a well defined list of inputs and outputs.
  Without this line the file becomes a script file.

                      AM2032 JAYANTA MUKHERJEE
          Function Files in MATLAB-2
   A function definition line may look slightly different depending on
    The syntax is a output, definition line is as follows……
   weather therefor nofunction single output, or multiple outputs.
    function [output variables] = function_name (input variables);
     The function_name must be the same as the filename
     (without the .m Line                                   is written.
  Function Definitionextension) in which the functionFile name
     For example if the name of the function is euler then it must
  function [rho, H, F] = motion (x, y, t);                 motion.m
                                file with the definition line,
     be written and saved in a the function name euler.m function, must
CAUTION: The first word in
befunction [theta] = angleTH (x, y);mistake is to type itangleTH.m
   typed in lower case. A common                           as Function
 function theta = THETA (x, y, z);                      THETA.m
 function [] = circle (r);                              circle.m
 function circle (r)                                    circle.m
                             AM2032 JAYANTA MUKHERJEE
Function definition            Output list        Function
       line                                        name           Input list

                  function [xout, yout] = function_name (input variables);
   H1 line        % add 1 line description of the function here
  Comment         % write online help comments here
line used by
                  % include your name and date
 online help
                  x = blah;
                                                    Comments in the H1
  Body of         .
                                                    line can be accessed
                  .                                    by the lookfor
                  y = more_blah;                          command
                              AM2032 JAYANTA MUKHERJEE

The function name must be the same as the

                Executing a Function
    There are two ways in which a function can be executed, weather
    it is in built or user written.
   (1)With explicit output, (2) Without any output.

(1) With explicit output: This is the full syntax of calling a function.
    Both the output and the input list are specified in the call.
    Example: if the function reads:              Input variables are
                                               Input variables must be
    function [rho, H, F] = motion (x, y, t);      already specified
                                                specified before hand
    then all the following commands represent legal call (execution)
                    [r, h, f] =motion (rx, 3.5,(xt, yt, time);
                     [r, h, f] motion (2, ry, 0.001);
               [r, angmom,=force] = motion [0:100]);
                          AM2032 JAYANTA MUKHERJEE
        Executing a Function-cont.

(2) Without any output:

     The output list can be omitted entirely if the computed
    quantities are not of immediate interest. This might be the
        case when the function displays the desired result

                      AM2032 JAYANTA MUKHERJEE

• Allows more than one function to be within
  the same M-file (modularize code)
• M-file must have the name of the first
  (primary) function
• Sub-functions can only be called from
  within the same M-file
• Each sub-function has its own workspace

              AM2032 JAYANTA MUKHERJEE
             Example: Sub-functions

           function [totalsum,average] = subfunc (input_vector)
Primary    % SUBFUNC Calculates cumulative total & average
Function   totalsum = sum(input_vector);
           average = ourmean(input_vector);%Call to subfunction

            function y = ourmean(x)
            % (OURMEAN) Calculates average
            [m,n] = size(x);
Sub-        if m == 1
Function      m = n;
            y = sum(x)/m;

                       AM2032 JAYANTA MUKHERJEE
Debugging (Visual)


                              Set Auto-

                              Set Breakpoint
                              Clear Breaks
                              Step In
                              Single Step
                              Quit Debugging

             Miscellaneous Stuff
Reading Data from files…
• MATLAB supports reading an entire file and creating a
  matrix of the data with one statement.

>> load my_data.dat;           % loads file into matrix.
• The matrix may be a scalar, a vector, or a matrix with
  multiple rows and columns. The matrix will be named
>> size (my_data)
% size will return the number of rows and number of columns in
  the matrix
>> length (my_data)
% length will return the total no. of elements in my_data
                     AM2032 JAYANTA MUKHERJEE
• Use Pseudo Codes, Flow charts etc to chalk out a
  plan for your code.

• Keep your functions modular, that is break big
  computations into chunks and write separate
  functions for them. Also try to keep the length of
  functions small.

• Make it a habit of writing comments. Its always
                 AM2032 JAYANTA MUKHERJEE
             Lab Sessions
• Monday 2PM
• Tuesday 3PM                    Starting Next Monday
• Wednesday 12PM

 This is how it was done last year. If anybody
 has any suggestion regarding the time and
 days please let me know.
 There will be three groups with 30 students
 (approx) each divided alphabetically
 according to their names.
              AM2032 JAYANTA MUKHERJEE
        Next Lecture: We start with
          numerical Techniques.

Lecture notes can be found at the following link:

Then click on my name and then on Lecture Notes
     Save the lecture notes in your PC at is wont open on your
       internet browser. Once saved it opens as „read only‟,
                    (as it is password protected).
                      AM2032 JAYANTA MUKHERJEE

To top