Lecture Note 10
Lecture Note 10
ﻫﺮ ﭼﻨﺪ ﮐﻪ دراﮐﺜﺮ ﻣﻮارد ﺗﻮاﺑﻊ داراي ورودي و ﺧﺮوﺟﯽ ﻫﺴﺘﻨﺪ ،اﻣﺎ ﻣﯽ ﺗﻮان ﺗﻮاﺑﻌﯽ اﯾﺠﺎد ﮐﺮد ﮐﻪ ﻣﺘﻐﯿﺮ
ورودي و ﺧﺮوﺟﯽ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﻨﺪ.
) (function [] = star
;theta = pi/2:0.8*pi:4.8*pi
;)r = ones(1,6
)polar(theta,r
end
ﺑﺮاﮐﺖ ﺧﺎﻟﯽ ﺳﻤﺖ ﭼﭗ ﻧﺸﺎن ﻣﯽ دﻫﺪ ﮐﻪ ﻫﯿﭻ ﺧﺮوﺟﯽ ﻧﺪارﯾﻢ ،ﭘﺮاﻧﺘﺰ ﺧﺎﻟﯽ ﺳﻤﺖ راﺳﺖ ﻧﯿﺰ ﻧﺸﺎن ﻣﯽ دﻫﺪ
ﮐﻪ ورودي ﻧﯿﺰ ﻧﺪارﯾﻢ.
star
١۴۶
)'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
١۴٩
دﺳﺘﻮر 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ﺗﻌﺮﯾﻒ ﮐﺮده اﺳﺖ ﮐﻪ ﻧﺸﺎن ﻣﯽ دﻫﺪ ﻣﯽ ﺗﻮاﻧﺪ ﺗﻌﺪاد
ورودي ﻫﺎي ﻣﺘﻔﺎوﺗﯽ داﺷﺘﻪ ﺑﺎﺷﺪ .ﻣﺸﺎﻫﺪه ﮐﺪ اﯾﻦ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮاﻧﺪ ﮐﻤﮏ ﮐﻨﺪ ﮐﻪ ﭼﮕﻮﻧﻪ ﺗﺎﺑﻊ ﻣﻮرد ﻧﻈﺮ را
ﺑﻨﻮﯾﺴﯿﺪ.
١۵١
)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
)]fplot(ln,[0.1, 10
)]fplot('log(x)',[0.1, 10
١۵۵
١۵۶
١۵٧
ﺗﻮاﺑﻊ ﭘﯿﭽﯿﺪه ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﻪ ﺻﻮرت ﮔﺮوﻫﯽ از ﺗﻮاﺑﻊ ﺑﻪ ﻫﻤﺮاه ﻫﻢ در ﯾﮏ ﻓﺎﯾﻞ ﺑﻪ ﻋﻨﻮان subfunctions
ﺗﻌﺮﯾﻒ ﺷﻮﻧﺪ.
اﯾﻦ subfunctionﻫﺎ ﺗﻨﻬﺎ از ﺗﺎﺑﻊ اوﻟﯿﻪ ﻗﺎﺑﻞ ﻓﺮاﺧﻮاﻧﯽ ﻫﺴﺘﻨﺪ.
Subfunction ﻫﺎ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺮاي ﻣﻨﻈﻢ ﮐﺮدن ﮐﺪ و ﻫﻤﭽﻨﯿﻦ ﺑﺮاي اﯾﻨﮑﻪ ﺗﺎﺑﻊ اﺻﻠﯽ ﺳﺎده ﺗﺮ درك ﺷﻮد
ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮﻧﺪ.
ﻫﺮ M-file functionﯾﮏ primary functionدارد .ﻧﺎم M-fileﺑﺎﯾﺪ ﻫﻤﺎن ﻧﺎم primary function
ﺑﺎﺷﺪ Subfunction .ﻫﺎ ﺑﻌﺪ از primary functionﻣﯽ آﯾﻨﺪ.
١۵٨
function output=subtract(x,y)
output=x-y;
end
end
را ﺑﻪ ﺻﻮرت ﮐﺎﻣﻞ ﻧﺸﺎن دﻫﯿﺪ ﯾﺎ ﺗﻨﻬﺎ ﺧﻂfunction و – اﺳﺖ ﮐﻪ ﻣﯽ ﺗﻮاﻧﺪ+ ﯾﮏfunction در ﮐﻨﺎر ﻫﺮ
.اول را ﻧﺸﺎن دﻫﯿﺪ
١۵٩
١۶٠