0% found this document useful (0 votes)
108 views14 pages

Lecture 5 MATLAB Programming

This document discusses MATLAB user-defined functions. It provides an example of a factorial function, factorial(n), that calculates the factorial of the input n. It also discusses how to call user-defined functions and some key aspects of function syntax in MATLAB like input/output arguments, comments, and variable scope. Additionally, it covers the concept of pass-by-value in MATLAB function calling and provides an example function, minmax(a), to find the minimum and maximum values in a 2D array.

Uploaded by

Seemab Sohail
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
108 views14 pages

Lecture 5 MATLAB Programming

This document discusses MATLAB user-defined functions. It provides an example of a factorial function, factorial(n), that calculates the factorial of the input n. It also discusses how to call user-defined functions and some key aspects of function syntax in MATLAB like input/output arguments, comments, and variable scope. Additionally, it covers the concept of pass-by-value in MATLAB function calling and provides an example function, minmax(a), to find the minimum and maximum values in a 2D array.

Uploaded by

Seemab Sohail
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Lecture5MATLABprogramming (3)

Dr.TonyCahill

Objectives
UserdefinedFunctions

ASimpleExample:factorial
Writeaprogramtocalculatethefactorial:
N!=1,N=0 N!=N*(N1)*(N2)*3*2*1,N>0
n=input('Please enter N:'); n_factorial=1; for ii=1:n n_factorial=n_factorial*ii; end disp ([ num2str(n),'!=',num2str(n_factorial) ]);

ASimpleExample:factorial
WhatifIwanttoautomaticallycalculate0!, 1!,2!,3!,4!and5!?
Usingnestedloop:
for n=0:5 n_factorial=1; for ii=1:n n_factorial=n_factorial*ii; end disp ([ num2str(n),'!=',num2str(n_factorial) ]); end

ASimpleExample:factorial
WecandevelopageneralMATLABfunction thatcalculatesN!,givenN.
Listoffactorial.m function y = factorial( n ) %FACTORIAL Calculate the factorial of n % Function FACTORIAL calculates the factorial of n: % n!=1*2*...*(n-1)*n % % Written by: Qi Ying (Jan 2011) % CVEN 302 y=1; for ii=1:n % calculate N! y=y*ii; end end

ASimpleExample:factorial
Callingtheuserdefinedfunction:
Listoftest1.m % demonstrates how to call the user % defined function 'factorial' for ii=0:5 n_factorial=factorial(ii); fprintf ('%d!=%d\n',ii,n_factorial); end >>test1 0!=1 1!=1 2!=2 3!=6 4!=24 5!=120

ASimpleExample:factorial
Somedefinitions:
Listoffactorial.m function y=factorial(n) %FACTORIALCalculatethefactorialofn %FunctionFACTORIALcalculatesthefactorialofn: %n!=1*2*...*(n1)*n 1. TheMfileiscalledfactorial.m. % %Writtenby:QiYing(Jan2011) 2. niscalledtheinputargument %CVEN302 3. yiscalledtheoutputargument y=1; 4. ThefirstcommentlineiscalledtheH1 for ii=1:n commentline,whichissearchableby y=y*ii; end thelookforcommand end

5. Theremainingcommentlinesuntilthe firstblanklineorexecutablelineis displayedbythehelpcommand 6. Loopvariableiiisalocalvariable,only visibleinsidethefunction.

GeneralformofaMATLABfunction
function [outarg1, outarg2, ] = fname (inarg1, inarg2, ) %H1 comment line % other comment lines % % more comment lines (executable code) end

Anotherexample:statistics
function [ mean, std_dev ] = stat1( x ) %STAT1 Calculate the mean and standard deviation of x. sum_x=0; sum_x2=0; n=length(x); % number of data points in x % loop over each data point in x to calculate sum(x) and sum(x^2) for ii=1:n sum_x=sum_x+x(ii); sum_x2=sum_x2+x(ii)^2; end % return the mean and standard deviation mean=sum_x/n; std_dev=sqrt((n*sum_x2-sum_x^2)/(n*(n-1))); end % end function avg1

Anotherexample:statistics
Listoftest3.m
x=[1 2 3 4 5] [m1,s1]=stat1(x); fprintf('mean=%f, std=%f\n',m1,s1); % generate some random numbers x=rand(1,5) [m2,s2]=stat1(x); fprintf('mean=%f, std=%f\n',m2,s2);

Results >>test3 x= 12345 mean=3.000000,std=1.581139 x= 0.14190.42180.91570.79220.9595 mean=0.646217,std=0.352429

VariablePassinginMATLAB
Remember:MATLABcommunicatewiththe functionsusingapassbyvaluescheme.See thefollowingexample:
Listoffunc1.m function y = func1( x ) fprintf('In the beginning of func1, x=%f\n',x); for ii=1:3 x=x+1; fprintf('In func1: x=%f\n',x); end end Listoftest2.m x=5; fprintf('Before func1, in the main program x=%f\n',x); func1(x); fprintf('After func1, in the main program x=%f\n',x);

VariablePassinginMATLAB
>>test2 Beforefunc1,inthemainprogramx=5.000000 Inthebeginningoffunc1,x=5.000000 Infunc1:x=6.000000 Infunc1:x=7.000000 Infunc1:x=8.000000 Afterfunc1,inthemainprogramx=5.000000
Passbyvalueisimportantfordataisolation Thevalueofxinthemainprogram(test2.m)ispassed intothefunctionfunc1tothefirstinputargument,x. However,theargumentxinthefunctionisisolatedfromthemainprogram. Nochangesoftheargumentwillbevisibletothemainprogram.

Outputfromfunc1

InclassExercise
WriteaMATLABfunctionthatreturnsthe minimumandmaximumvaluesina2Darray

Onesolution
function [ r ] = minmax( a ) % MINMAX finds the minimum and maximum values in an array n=numel(a); % number of total elements in an array % r(1) saves the minimum value % r(2) saves the maximum value r(1)=realmax; % maximum possible float number -> r(1) r(2)=realmin; % minimum possible float number -> r(2) for ii=1:n if a(ii)>r(2) % if we find a larger number r(2)=a(ii); end if a(ii)<r(1) % if we find a smaller number r(1)=a(ii); end end end % end of function minmax

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy