0% found this document useful (0 votes)
24 views15 pages

Lecture Note 10

Uploaded by

amaleky36
Copyright
© © All Rights Reserved
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)
24 views15 pages

Lecture Note 10

Uploaded by

amaleky36
Copyright
© © All Rights Reserved
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/ 15

‫‪Functions with No Input or No Output‬‬

‫‪ ‬ﻫﺮ ﭼﻨﺪ ﮐﻪ دراﮐﺜﺮ ﻣﻮارد ﺗﻮاﺑﻊ داراي ورودي و ﺧﺮوﺟﯽ ﻫﺴﺘﻨﺪ‪ ،‬اﻣﺎ ﻣﯽ ﺗﻮان ﺗﻮاﺑﻌﯽ اﯾﺠﺎد ﮐﺮد ﮐﻪ ﻣﺘﻐﯿﺮ‬
‫ورودي و ﺧﺮوﺟﯽ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬
‫) (‪function [] = star‬‬
‫;‪theta = pi/2:0.8*pi:4.8*pi‬‬
‫;)‪r = ones(1,6‬‬
‫)‪polar(theta,r‬‬
‫‪end‬‬
‫‪ ‬ﺑﺮاﮐﺖ ﺧﺎﻟﯽ ﺳﻤﺖ ﭼﭗ ﻧﺸﺎن ﻣﯽ دﻫﺪ ﮐﻪ ﻫﯿﭻ ﺧﺮوﺟﯽ ﻧﺪارﯾﻢ‪ ،‬ﭘﺮاﻧﺘﺰ ﺧﺎﻟﯽ ﺳﻤﺖ راﺳﺖ ﻧﯿﺰ ﻧﺸﺎن ﻣﯽ دﻫﺪ‬
‫ﮐﻪ ورودي ﻧﯿﺰ ﻧﺪارﯾﻢ‪.‬‬

‫‪star‬‬

‫‪١۴۶‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


‫‪Determining the Number of Input and Output Arguments‬‬
‫‪ ‬ﺑﺮاي ﻣﺘﻮﺟﻪ ﺷﺪن ﺗﻌﺪاد ﻣﺘﻐﯿﺮﻫﺎي ورودي ﯾﮏ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮان از دﺳﺘﻮر ‪ nargin‬اﺳﺘﻔﺎده ﮐﺮد‪.‬‬

‫)'‪nargin('sin‬‬ ‫)'‪nargin('rem‬‬
‫= ‪ans‬‬ ‫= ‪ans‬‬
‫‪1‬‬ ‫‪2‬‬
‫‪ ‬ﺗﺎﺑﻌﯽ ﻣﺜﻞ ‪ surf‬ﺗﻌﺪاد ﻣﺘﻐﯿﺮﻫﺎي ورودي ﻣﺘﻔﺎوﺗﯽ ﻣﯽ ﺗﻮاﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺑﺮاي اﯾﻨﭽﻨﯿﻦ ﺗﻮاﺑﻌﯽ ﮐﻪ ﺗﻌﺪاد‬
‫ﻣﺘﻐﯿﺮﻫﺎي ورودي ﻣﺘﻔﺎوت اﺳﺖ ‪ MATLAB‬در ﺟﻮاب ‪ nargin‬ﯾﮏ ﻋﺪد ﻣﻨﻔﯽ را ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ‪.‬‬

‫)'‪nargin('surf‬‬
‫= ‪ans‬‬
‫‪-1‬‬
‫‪ ‬دﺳﺘﻮر ‪ nargout‬ﻣﺸﺎﺑﻪ ‪ nargin‬اﺳﺖ ﺑﺎ اﯾﻦ ﺗﻔﺎوت ﮐﻪ ﺗﻌﺪاد ﻣﺘﻐﯿﺮﻫﺎي ﺧﺮوﺟﯽ را ﻧﺸﺎن ﻣﯽ دﻫﺪ‪.‬‬

‫)'‪nargout('sin‬‬
‫= ‪ans‬‬
‫‪1‬‬
‫‪ ‬ﺗﻌﺪاد ﻣﺘﻐﯿﺮﻫﺎي ﺧﺮوﺟﯽ ﻧﺸﺎن ﻣﯽ دﻫﺪ ﮐﻪ ﭼﻨﺪ ﻣﺎﺗﺮﯾﺲ در ﺧﺮوﺟﯽ داده ﻣﯽ ﺷﻮد و ﻧﻪ ﭼﻨﺪ ﻣﻘﺪار در‬
‫ﻣﺎﺗﺮﯾﺲ‪ .‬ﻣﺜﻼ دﺳﺘﻮر ‪ size‬ﮐﻪ ﯾﮏ ﻣﺎﺗﺮﯾﺲ دو ﻣﻘﺪاري ﺑﺮاي ﺗﻌﺪاد ﺳﻄﺮه و ﺳﺘﻮن ﻧﺘﯿﺠﻪ ﻣﯽ دﻫﺪ‪.‬‬
‫)'‪nargout('size‬‬ ‫‪١۴٧‬‬
‫= ‪ans‬‬
‫‪1‬‬
‫‪Dr. Seyyed Arash Haghpanah‬‬
‫;‪x = 1:10‬‬
‫)‪size(x‬‬
‫= ‪ans‬‬
‫‪1 10‬‬
‫‪ ‬ﻣﺜﺎل ﺑﺮاي ﺗﺎﺑﻌﯽ ﺑﺎ دو ﻣﺘﻐﯿﺮ ﺧﺮوﺟﯽ دﺳﺘﻮر ‪ max‬اﺳﺖ‪.‬‬
‫)'‪nargout('max‬‬
‫= ‪ans‬‬
‫‪2‬‬

‫‪Local Variables‬‬

‫‪ ‬ﻣﺘﻐﯿﺮﻫﺎﯾﯽ ﮐﻪ در ‪ M-file‬ﺗﺎﺑﻊ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ ﺑﻪ ﻋﻨﻮان ‪ local variables‬ﺷﻨﺎﺧﺘﻪ ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﺗﻨﻬﺎ راه‬
‫ارﺗﺒﺎﻃﯽ ﺗﺎﺑﻊ ﺑﺎ ‪ worksapce‬از ﻃﺮﯾﻖ ورودي و ﺧﺮوﺟﯽ آن اﺳﺖ‪ .‬ﻫﺮ ﻣﺘﻐﯿﺮي ﮐﻪ در ﺗﺎﺑﻊ ﺗﻌﺮﯾﻒ ﺷﻮد ﻓﻘﻂ‬
‫ﺑﺮاي ﺧﻮد ﺗﺎﺑﻊ وﺟﻮد دارد و وارد ‪ workspace‬ﻧﻤﯽ ﺷﻮد‪ .‬ﻣﺜﻼ ﺗﺎﺑﻊ ‪ g‬را در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪:‬‬
‫)‪function output = g(x,y‬‬
‫‪% This function multiplies x and‬‬
‫‪y together‬‬
‫‪% x and y must be the same size‬‬
‫‪matrices‬‬ ‫‪١۴٨‬‬
‫;‪a = x .*y‬‬
‫;‪output = a‬‬
‫‪Dr. Seyyed Arash Haghpanah‬‬
‫‪ ‬ﻣﺘﻐﯿﺮﻫﺎي ‪ y ،x ،a‬و ‪ output‬ﻣﺘﻐﯿﺮﻫﺎي ﻣﻮﺿﻌﯽ ﻫﺴﺘﻨﺪ‪ .‬آن ﻫﺎ ﺗﻮﺳﻂ ﺗﺎﺑﻊ ‪ g‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ و در‬
‫‪ workspace‬ذﺧﯿﺮه ﻧﻤﯽ ﺷﻮﻧﺪ‪.‬‬
‫‪clear, clc‬‬
‫)‪g(10,20‬‬
‫= ‪ans‬‬
‫‪200‬‬

‫‪ ‬ﺣﺎﻻ ﺗﻨﻬﺎ ﻣﺘﻐﯿﺮ ذﺧﯿﺮه ﺷﺪه در ‪ workspace‬ﻣﺘﻐﯿﺮ ‪ ans‬اﺳﺖ‪.‬‬

‫‪ ‬ﺑﻨﺎﺑﺮاﯾﻦ ﻧﻪ ‪ workspace‬ﺑﻪ ﻣﺘﻐﯿﺮﻫﺎي ﺗﺎﺑﻊ دﺳﺘﺮﺳﯽ دارد و ﻧﻪ ﺗﺎﺑﻊ ﺑﻪ ﻣﺘﻐﯿﺮﻫﺎي ‪.workspace‬‬


‫‪ ‬ورودي ﻫﺎي ﺗﺎﺑﻊ ﺗﻨﻬﺎ از ﻃﺮﯾﻖ ﭘﺮاﻧﺘﺰ ورودي اﺳﺖ و ﻫﺮ ﭘﺎراﻣﺘﺮي اﺣﺘﯿﺎج داﺷﺘﻪ ﺑﺎﺷﺪ ﯾﺎ ﺑﺎﯾﺪ از ورودي ﮔﺮﻓﺘﻪ‬
‫ﺷﻮد ﯾﺎ در ﺧﻮد ﺗﺎﺑﻊ ﺗﻌﺮﯾﻒ ﺷﻮد‪.‬‬

‫‪١۴٩‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


‫‪Global Variables‬‬
‫‪ ‬ﺑﺮ ﺧﻼف ﻣﺘﻐﯿﺮﻫﺎي ﻣﻮﺿﻌﯽ‪ ،‬ﻣﺘﻐﯿﺮﻫﺎي ﺟﻬﺎﻧﯽ در ﺗﻤﺎﻣﯽ ﻗﺴﻤﺖ ﻫﺎي ‪ MATLAB‬وﺟﻮد دارﻧﺪ‪ .‬ﺑﻪ ﺻﻮرت‬
‫ﮐﻠﯽ اﺳﺘﻔﺎده از ﻣﺘﻐﯿﺮﻫﺎي ﺟﻬﺎﻧﯽ ﺧﻮب ﻧﯿﺴﺖ‪ .‬اﻟﺒﺘﻪ ‪ MATLAB‬ﺑﺮاي ﺟﻠﻮﮔﯿﺮي از اﺷﺘﺒﺎه اﺣﺘﯿﺎج دارد ﮐﻪ‬
‫ﻣﺘﻐﯿﺮﻫﺎي ﺟﻬﺎﻧﯽ ﻫﻢ در ‪) C.W.‬ﯾﺎ ﻣﺤﯿﻂ ‪ (M-file‬ﺗﻌﺮﯾﻒ ﺷﻮد و ﻫﻢ در ﺗﺎﺑﻊ‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺗﺎﺑﻊ زﯾﺮ را در‬
‫ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪.‬‬
‫)‪function result = distance(t‬‬
‫‪%This function calculates the distance a falling‬‬
‫‪object‬‬
‫‪%travels due to gravity‬‬
‫‪global G‬‬
‫;‪result = 1/2*G*t.^2‬‬

‫‪ ‬دﺳﺘﻮر ‪ global‬ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﮐﻪ ﺗﺎﺑﻊ در ‪ workspace‬ﺑﻪ دﻧﺒﺎل ‪ G‬ﺑﮕﺮدد‪ .‬ﻫﻤﭽﻨﯿﻦ ‪ G‬ﺑﺎﯾﺪ در‬
‫‪ workspace‬ﯾﺎ ‪ M-file‬ﺑﻪ ﻋﻨﻮان ﯾﮏ ‪ global variable‬ﺗﻌﺮﯾﻒ ﺷﺪه ﺑﺎﺷﺪ‪.‬‬

‫‪global G‬‬
‫;‪G = 9.8‬‬

‫‪ ‬اﯾﻦ ﮐﺎر ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﮐﻪ ﺑﺪون ﺗﻐﯿﯿﺮ در ﺗﺎﺑﻊ ﯾﺎ ﺗﻌﺮﯾﻒ آن ﺑﻪ ﻋﻨﻮان ورودي ﺑﺘﻮاﻧﯿﺪ ﻣﻘﺪار ‪ G‬را ﺗﻐﯿﯿﺮ دﻫﯿﺪ‪.‬‬ ‫‪١۵٠‬‬
‫‪ ‬ﻣﻌﻤﻮﻻ ﺑﻬﺘﺮ اﺳﺖ ﻣﺘﻐﯿﺮﻫﺎي ﺟﻬﺎﻧﯽ ﺑﺎ ﺣﺮوف ﺑﺰرگ و ﻣﺘﻐﯿﺮﻫﺎي ﻣﺤﻠﯽ ﺑﺎ ﺣﺮوف ﮐﻮﭼﮏ ﻧﻤﺎﯾﺶ داده ﺷﻮﻧﺪ‪.‬‬
‫‪Dr. Seyyed Arash Haghpanah‬‬
‫‪Accessing M-File Code‬‬

‫‪ ‬ﺗﻮاﺑﻊ ﻣﻮﺟﻮد در ‪ MATLAB‬ﺑﻪ دو دﺳﺘﻪ ﺗﻘﺴﯿﻢ ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﯾﮏ دﺳﺘﻪ ﺗﻮاﺑﻊ آﻣﺎده ﻫﺴﺘﻨﺪ ﮐﻪ ﮐﺪ آن ﻫﺎ‬
‫ﺗﻮﺳﻂ ﮐﺎرﺑﺮ ﻗﺎﺑﻞ دﺳﺘﺮﺳﯽ ﻧﯿﺴﺖ‪ .‬ﺗﻮاﺑﻊ دﯾﮕﺮ داراي ‪ M-file‬ﻫﺴﺘﻨﺪ ﮐﻪ در ‪ toolbox‬ﻫﺎي ‪MATLAB‬‬
‫ﻣﻮﺟﻮدﻧﺪ ﮐﻪ ﮐﺪ آن ﻫﺎ ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪه اﺳﺖ‪ .‬ﺑﺎ ﻧﻮﺷﺘﻦ ﻋﺒﺎرت زﯾﺮ ﻣﺤﺘﻮﯾﺎت ﻓﺎﯾﻞ ‪ sphere.m‬ﻧﺸﺎن داده‬
‫ﻣﯽ ﺷﻮد‪.‬‬
‫‪type sphere‬‬
‫‪or‬‬
‫)'‪type('sphere‬‬

‫‪ ‬ﻣﯽ ﺑﯿﻨﯿﺪ ﮐﻪ ‪ sphere‬ﻣﺘﻐﯿﺮ ورودي را ‪ varargin‬ﺗﻌﺮﯾﻒ ﮐﺮده اﺳﺖ ﮐﻪ ﻧﺸﺎن ﻣﯽ دﻫﺪ ﻣﯽ ﺗﻮاﻧﺪ ﺗﻌﺪاد‬
‫ورودي ﻫﺎي ﻣﺘﻔﺎوﺗﯽ داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻣﺸﺎﻫﺪه ﮐﺪ اﯾﻦ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮاﻧﺪ ﮐﻤﮏ ﮐﻨﺪ ﮐﻪ ﭼﮕﻮﻧﻪ ﺗﺎﺑﻊ ﻣﻮرد ﻧﻈﺮ را‬
‫ﺑﻨﻮﯾﺴﯿﺪ‪.‬‬

‫‪١۵١‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


‫‪CREATING YOUR OWN TOOLBOX OF FUNCTIONS‬‬
‫‪ ‬زﻣﺎﻧﯽ ﮐﻪ در ‪ MATLAB‬ﺗﺎﺑﻌﯽ ﻓﺮاﺧﻮاﻧﯽ ﻣﯽ ﺷﻮد‪ ،‬ﻧﺮم اﻓﺰار اﺑﺘﺪا در داﯾﺮﮐﺘﻮري ﻓﻌﺎل ‪ MATLAB‬ﺑﻪ‬
‫ﺟﺴﺘﺠﻮ ﻣﯽ ﭘﺮدازد‪ .‬اﮔﺮ در اﯾﻦ داﯾﺮﮐﺘﻮري ﻧﺘﻮاﻧﺪ ﺗﺎﺑﻊ را ﭘﯿﺪا ﮐﻨﺪ در ﻣﺴﯿﺮﻫﺎي ﺟﺴﺘﺠﻮي دﯾﮕﺮي ﮐﻪ ﺑﺮاي‬
‫‪ MATLAB‬ﺗﻌﺮﯾﻒ ﺷﺪه اﺳﺖ ﺑﻪ ﺟﺴﺘﺠﻮي آن ﻣﯽ ﭘﺮدازد‪ .‬ﺑﺮاي ﻣﺸﺎﻫﺪه اﯾﻦ ﻣﺴﯿﺮﻫﺎ ﻣﯽ ﺗﻮان ﺑﺮ روي‬
‫‪ set path‬در ﻧﻮار ﻣﻨﻮي ﺑﺎﻻي ﻧﺮم اﻓﺰار ﮐﻠﯿﮏ ﮐﺮد و ﯾﺎ در ‪ C.W.‬دﺳﺘﻮر ‪ pathtool‬را ﺗﺎﯾﭗ ﮐﺮد‪.‬‬
‫‪ ‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل اﮔﺮ ﺗﺎﺑﻊ ‪ DR‬ﮐﻪ ﻗﺒﻼ ﺗﻌﺮﯾﻒ ﮐﺮدﯾﻢ در ﻓﻮﻟﺪري ﺑﻪ ﻧﺎم ‪ My_functions‬ذﺧﯿﺮه ﺷﺪه ﺑﺎﺷﺪ‬
‫ﻣﯽ ﺗﻮان اﯾﻦ ﻓﻮﻟﺪر را ﺑﻪ ﻣﺴﯿﺮﻫﺎي ﺟﺴﺘﺠﻮي ‪ MATLAB‬اﺿﺎﻓﻪ ﮐﺮد‪ .‬ﺑﺮاي اﯾﻦ ﮐﺎر ﺑﺎﯾﺪ ﺑﺮ روي‬
‫‪ add folder‬ﮐﻪ در ﭘﻨﺠﺮه ﺑﺎز ﺷﺪه ‪ set path‬ﻗﺮار دارد ﮐﻠﯿﮏ ﮐﺮد و از ﻃﺮﯾﻖ ﭘﻨﺠﺮه ﺟﺪﯾﺪي ﮐﻪ ﺑﺎز ﻣﯽ‬
‫ﺷﻮد ﻓﻮﻟﺪر ﻣﻮرد ﻧﻈﺮ را اﻧﺘﺨﺎب ﮐﺮد‪.‬‬
‫‪ ‬اﯾﻦ ﺗﻐﯿﯿﺮات در ﻣﺴﯿﺮﻫﺎي ﺟﺴﺘﺠﻮي ‪ MATLAB‬ذﺧﯿﺮه ﻣﯽ ﺷﻮد و در ﺻﻮرت ﻧﯿﺎز ﺑﻪ ﺣﺬف ﯾﮏ ﻣﺴﯿﺮ‬
‫اﯾﺠﺎد ﺷﺪه ﺑﺎ اﻧﺘﺨﺎب آن و ﮐﻠﯿﮏ راﺳﺖ‪ ،‬از ﻣﻨﻮﯾﯽ ﮐﻪ ﺑﺎز ﻣﯽ ﺷﻮد ﻣﯽ ﺗﻮان ﮔﺰﯾﻨﻪ ‪ Remove‬را اﻧﺘﺨﺎب ﮐﺮد‬
‫و ﯾﺎ ﺑﺎ اﻧﺘﺨﺎب ﮔﺰﯾﺘﻪ ‪ Default‬در ﭘﺎﯾﯿﻦ ﭘﻨﺠﺮه ‪ set path‬ﺗﻨﻈﯿﻤﺎت را ﺑﻪ ﺣﺎﻟﺖ اوﻟﯿﻪ ‪MATLAB‬‬
‫ﺑﺮﮔﺮداﻧﺪ‪ .‬ﺑﺪﯾﻬﯽ اﺳﺖ ﮐﻪ ﺗﻐﯿﯿﺮات اﯾﻨﭽﻨﯿﻨﯽ ﺑﺮ روي ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎي ﻋﻤﻮﻣﯽ ﻣﯽ ﺗﻮاﻧﺪ ﻣﺸﮑﻼﺗﯽ را ﺑﺮاي ﺳﺎﯾﺮ‬
‫ﮐﺎرﺑﺮان اﯾﺠﺎد ﮐﻨﺪ‪.‬‬ ‫‪١۵٢‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


‫‪ANONYMOUS FUNCTIONS AND FUNCTION HANDLES‬‬
‫‪ MATLAB ‬اﺟﺎزه ﻣﯽ دﻫﺪ دﺳﺘﻪ دﯾﮕﺮي از ﺗﻮاﺑﻊ ﺑﻪ ﻧﺎم ‪ anonymous functions‬ﺗﻌﺮﯾﻒ ﺷﻮﻧﺪ‪ .‬اﯾﻦ‬
‫ﺗﻮاﺑﻊ ﺳﺎده ﺗﺮﻧﺪ و ﺗﺎ زﻣﺎﻧﯽ ﮐﻪ در ‪ workspace‬ﻣﻮﺟﻮد ﻣﯽ ﺑﺎﺷﻨﺪ ﻣﯽ ﺗﻮان از آن ﻫﺎ اﺳﺘﻔﺎده ﮐﺮد و ﺑﺎ ﭘﺎك‬
‫ﺷﺪن از ‪ workspace‬دﯾﮕﺮ ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﻧﯿﺴﺘﻨﺪ‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‬

‫)‪ln = @(x) log(x‬‬


‫‪ ‬ﻋﻼﻣﺖ @ ﺑﻪ ‪ MATLAB‬ﻣﯽ ﻓﻬﻤﺎﻧﺪ ﮐﻪ ‪ ln‬ﯾﮏ ﺗﺎﺑﻊ اﺳﺖ‪.‬‬
‫‪ ‬ﺑﻼﻓﺎﺻﻠﻪ ﺑﻌﺪ از @ ورودي ﺗﺎﺑﻊ در ﭘﺮاﻧﺘﺰ ﻟﯿﺴﺖ ﻣﯽ ﺷﻮد‪.‬‬
‫‪ ‬در اﻧﺘﻬﺎ ﺗﺎﺑﻊ ﺗﻌﺮﯾﻒ ﻣﯽ ﺷﻮد‪.‬‬
‫‪ ‬ﺑﺎ اﯾﻦ ﺗﻌﺮﯾﻒ ﺗﺎﺑﻊ ‪ ln‬در ‪ workspace‬اﺿﺎﻓﻪ ﻣﯽ ﺷﻮد‪ .‬و ﮐﻼس اﯾﻦ ﻣﺘﻐﯿﺮ ﺑﻪ ﻧﺎم ‪function handle‬‬
‫ﺗﻌﺮﯾﻒ ﻣﯽ ﺷﻮد‪ .‬اﯾﻦ ﺗﺎﺑﻊ ﻣﺜﻞ ﺗﻮاﺑﻊ دﯾﮕﺮ ﻗﺎﺑﻞ اﺳﺘﻔﺎده اﺳﺖ‪:‬‬

‫)‪ln(10‬‬
‫= ‪ans‬‬ ‫‪١۵٣‬‬
‫‪2.3026‬‬
‫‪Dr. Seyyed Arash Haghpanah‬‬
‫‪ ‬زﻣﺎﻧﯽ ﮐﻪ ‪ workspace‬ﭘﺎك ﺷﻮد ﺗﻮاﺑﻊ ﺑﯽ ﻧﺎم ﻧﯿﺰ ﭘﺎك ﻣﯽ ﺷﻮﻧﺪ‪ .‬اﯾﻦ ﺗﻮاﺑﻊ ﻣﺜﻞ دﯾﮕﺮ ﻣﺘﻐﯿﺮﻫﺎي‬
‫‪ workspace‬ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﻪ ﺻﻮرت ﻓﺎﯾﻞ ﻫﺎي ‪ .mat‬ذﺧﯿﺮه ﺷﻮﻧﺪ و ﻣﺠﺪدا ﺗﻮﺳﻂ دﺳﺘﻮر ‪ load‬ﺑﺎزﯾﺎﺑﯽ ﺷﻮﻧﺪ‪.‬‬
‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ‪:‬‬
‫‪save my_ln_function ln‬‬

‫‪ ‬اﯾﻦ دﺳﺘﻮر ﻓﺎﯾﻠﯽ ﺑﻪ ﻧﺎم ‪ my_ln_function‬ﻣﯽ ﺳﺎزد ﮐﻪ ﺗﺎﺑﻊ ‪ ln‬در آن ذﺧﯿﺮه ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﺎ دﺳﺘﻮر‬
‫‪ workspace clear‬ﭘﺎك ﻣﯽ ﺷﺪ و ﻣﺠﺪدا ﺑﺎ دﺳﺘﻮر زﯾﺮ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎزﺧﻮاﻧﯽ ﻣﯽ ﺷﻮد‪.‬‬
‫‪load my_ln_function‬‬

‫‪ ‬ﻣﯽ ﺗﻮان ﻫﺮ ﺗﺎﺑﻊ ﺗﻌﺮﯾﻒ ﺷﺪه در ‪ M-file‬را ﺑﻪ ﯾﮏ ‪ function-handle‬ﺗﺒﺪﯾﻞ ﮐﺮد‪.‬‬

‫)‪function result = distance(t‬‬


‫;‪result = 1/2*9.8*t.^2‬‬
‫‪end‬‬
‫‪ ‬ﺑﺎ دﺳﺘﻮر زﯾﺮ ﺗﺎﺑﻊ ‪ distance_handle‬در ‪ workspace‬ﺗﻌﺮﯾﻒ ﻣﯽ ﺷﻮد‪.‬‬

‫)‪distance_handle = @(t) distance(t‬‬


‫‪١۵۴‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


‫‪FUNCTION FUNCTIONS‬‬
‫‪ Function function ‬ﺗﻮاﺑﻌﯽ ﻫﺴﺘﻨﺪ ﮐﻪ ﺧﻮد اﺣﺘﯿﺎج ﺑﻪ ﺗﻮاﺑﻊ دﯾﮕﺮ دارﻧﺪ‪.‬‬
‫‪ ‬ﯾﮑﯽ از ﻣﺜﺎل ﻫﺎي اﯾﻦ ﻧﻮع ﺗﻮاﺑﻊ‪ ،‬ﺗﺎﺑﻊ آﻣﺎده ‪ fplot‬اﺳﺖ‪ .‬اﯾﻦ ﺗﺎﺑﻊ ﺑﺮاي اﯾﺠﺎد ﺗﺮﺳﯿﻢ ﺧﻮد اﺣﺘﯿﺎج ﺑﻪ ﯾﮏ ﺗﺎﺑﻊ‬
‫دﯾﮕﺮ دارد‪.‬‬
‫)‪ln = @(x) log(x‬‬

‫)]‪fplot(ln,[0.1, 10‬‬

‫‪ ‬اﯾﻦ ﺗﺮﺳﯿﻢ ﺑﻪ راﺣﺘﯽ ﺑﻪ ﺻﻮرت زﯾﺮ ﻧﯿﺰ ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ‪.‬‬

‫)]‪fplot('log(x)',[0.1, 10‬‬

‫‪١۵۵‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


‫‪ ‬اﺳﺘﻔﺎده از ‪ function handle‬ﻫﺎ ﻣﻌﻤﻮﻻ زﻣﺎﻧﯽ ﻣﻔﯿﺪﺗﺮ اﺳﺖ ﮐﻪ ﺗﺎﺑﻊ داراي ﺟﻤﻼت ﻣﺘﻌﺪد و ﺑﺎ ﺗﻌﺮﯾﻒ‬
‫ﻃﻮﻻﻧﯽ ﺗﺮ ﺑﺎﺷﺪ‪.‬‬
‫;‪poly5 = @(x) -5*x.^5 + 400*x.^4 + 3*x.^3 + 20*x.^2 - x + 5‬‬
‫‪ ‬ﺗﺎﯾﭗ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﯿﻢ در ‪ fplot‬ﻣﯽ ﺗﻮاﻧﺪ ﻣﺸﮑﻞ زا ﺑﺎﺷﺪ‪ .‬اﺳﺘﻔﺎده از ‪ function hande‬ﺳﺎده ﺗﺮ‬
‫اﺳﺖ‪.‬‬
‫)]‪fplot(poly5,[-30,90‬‬

‫‪١۵۶‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


‫‪ ‬ﺑﺴﯿﺎري از ﺗﻮاﺑﻊ دﯾﮕﺮ ‪ MATLAB‬ﻧﯿﺰ ﻣﯽ ﺗﻮاﻧﻨﺪ ورودي را ﺑﻪ ﺻﻮرت ‪ function handle‬ﻗﺒﻮل ﮐﻨﻨﺪ‪ .‬ﻣﺜﻼ‬
‫دﺳﺘﻮر ‪ fzero‬ﮐﻪ ﻣﻘﺪار ‪ x‬را ﺑﻪ ﻧﺤﻮي ﭘﯿﺪا ﻣﯽ ﮐﻨﺪ ﮐﻪ )‪ f(x‬ﺑﺮاﺑﺮ ﺻﻔﺮ ﺷﻮد‪ .‬اﯾﻦ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮاﻧﺪ ‪function‬‬
‫‪ handle‬را ﺑﻪ ﺻﻮرت ورودي ﻗﺒﻮل ﮐﻨﺪ‪ .‬اﯾﻦ ﺗﺎﺑﻊ ﻧﯿﺎز ﺑﻪ ﺷﺮط اوﻟﯿﻪ ﺑﺮاي ﯾﺎﻓﺘﻦ رﯾﺸﻪ دارد‪ .‬از روي ﻧﻤﻮدار‬
‫ﻣﺸﺨﺺ اﺳﺖ ﮐﻪ رﯾﺸﻪ ﺑﯿﻦ ‪ 75‬ﺗﺎ ‪ 85‬اﺳﺖ‪ .‬ﺷﺮط اوﻟﯿﻪ را ‪ x=75‬ﻗﺮار ﻣﯽ دﻫﯿﻢ‪.‬‬
‫)‪fzero(poly5,75‬‬
‫= ‪ans‬‬
‫‪80.0081‬‬

‫‪١۵٧‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


‫‪SUBFUNCTIONS‬‬

‫‪ ‬ﺗﻮاﺑﻊ ﭘﯿﭽﯿﺪه ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﻪ ﺻﻮرت ﮔﺮوﻫﯽ از ﺗﻮاﺑﻊ ﺑﻪ ﻫﻤﺮاه ﻫﻢ در ﯾﮏ ﻓﺎﯾﻞ ﺑﻪ ﻋﻨﻮان ‪subfunctions‬‬
‫ﺗﻌﺮﯾﻒ ﺷﻮﻧﺪ‪.‬‬
‫‪ ‬اﯾﻦ ‪ subfunction‬ﻫﺎ ﺗﻨﻬﺎ از ﺗﺎﺑﻊ اوﻟﯿﻪ ﻗﺎﺑﻞ ﻓﺮاﺧﻮاﻧﯽ ﻫﺴﺘﻨﺪ‪.‬‬
‫‪ Subfunction ‬ﻫﺎ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺮاي ﻣﻨﻈﻢ ﮐﺮدن ﮐﺪ و ﻫﻤﭽﻨﯿﻦ ﺑﺮاي اﯾﻨﮑﻪ ﺗﺎﺑﻊ اﺻﻠﯽ ﺳﺎده ﺗﺮ درك ﺷﻮد‬
‫ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮﻧﺪ‪.‬‬
‫‪ ‬ﻫﺮ ‪ M-file function‬ﯾﮏ ‪ primary function‬دارد‪ .‬ﻧﺎم ‪ M-file‬ﺑﺎﯾﺪ ﻫﻤﺎن ﻧﺎم ‪primary function‬‬
‫ﺑﺎﺷﺪ‪ Subfunction .‬ﻫﺎ ﺑﻌﺪ از ‪ primary function‬ﻣﯽ آﯾﻨﺪ‪.‬‬

‫‪١۵٨‬‬

‫‪Dr. Seyyed Arash Haghpanah‬‬


function [addition_result,subtraction_result]=subfunction_demo(x,y)
% This function both adds and subtracts the elements stored in two
%arrays
addition_result=add(x,y);
subtraction_result=subtract(x,y);

function result=add(x,y) %subfunction plus


result=x+y;
end

function output=subtract(x,y)
output=x-y;
end

end

‫ را ﺑﻪ ﺻﻮرت ﮐﺎﻣﻞ ﻧﺸﺎن دﻫﯿﺪ ﯾﺎ ﺗﻨﻬﺎ ﺧﻂ‬function ‫ و – اﺳﺖ ﮐﻪ ﻣﯽ ﺗﻮاﻧﺪ‬+ ‫ ﯾﮏ‬function ‫ در ﮐﻨﺎر ﻫﺮ‬
.‫اول را ﻧﺸﺎن دﻫﯿﺪ‬

١۵٩

Dr. Seyyed Arash Haghpanah


Home Work
6.13 ‫ و‬6.8 ‫ و‬6.10 ‫ و‬6.2 ‫ ﺗﻤﺮﯾﻦ‬

١۶٠

Dr. Seyyed Arash Haghpanah

You might also like