ﻛﺎرﺑﺮد ﻛﺎﻣﭙﻴﻮﺗﺮ در ﻣﻬﻨﺪﺳﻲ
ﻣﺼﻄﻔﻲ ﻫﻤﺖآﺑﺎدي
داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﻴﺮاز
وﻳﺮاﻳﺶ 4
ﭘﺎﺋﻴﺰ 1385
MATLAB ﺑﺨﺶ ﻳﻚ
II
ﻓﺼﻞ 1ﻛﻠﻴﺎت و اﺻﻮل 14 ..................................................................................... 1-1ﻣﻘﺪﻣﻪ 14.......................................................................................................................... واژه 14 ............................................................................................................................. MATLAB ﺳﻴﻤﺎي 14 ......................................................................................................................... MATLAB روش اﻳﻦ ﻛﺘﺎب 15 ........................................................................................................................... ﻋﻼﺋﻢ و دورﭼﻴﻦ ﻫﺎي اﺳﺘﻔﺎده ﺷﺪه در ﻣﺘﻦ 15 ....................................................................................
2-1ﻣﺤﻴﻂ ﻛﺎر ﻣﺘﻠﺐ16........................................................................................................... 3-1آﻏﺎز ﻛﺎر ﺑﺎ ﻣﺘﻠﺐ 18......................................................................................................... ﻣﺎﺗﺮﻳﺲ 18 ............................................................................................................................ Matrix ﺑﺮدار 18 ............................................................................................................................................ آراﻳﻪ ،ﻣﺘﻐﻴﺮ ،ﻋﻤﻠﻴﺎت آراﻳﻪ اي 18 ..................................................................................................... ﺗﻌﺮﻳﻒ و ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ 18 ................................................................................................ ﻣﺸﺎﻫﺪه ﻳﻚ ﻣﺘﻐﻴﺮ و ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺢ19 .............................................................................................. ﺑﺮدار -ﻫﻨﺪﺳﻲ 19 ............................................................................................................................. آراﻳﻪ ﺳﻠﻮﻟﻲ 19 ............................................................................................................... Cell Array ﺗﻮاﺑﻊ اﻧﺪازه ﮔﻴﺮ 20 ........................................................................................................................... ﻣﺘﻐﻴﺮ داﺧﻠﻲ 20 .......................................................................................................................... ans اﻋﻼم ﻧﻮع ﻣﺘﻐﻴﺮ20 ............................................................................................................................
4-1ﻧﻮﺷﺘﻦ دﺳﺘﻮرات و ﻣﺸﺎﻫﺪه ﻧﺘﺎﻳﺞ 20.................................................................................. ﭘﻨﺠﺮه ﻓﻮري و ﭘﻨﺠﺮه ﺑﺮﻧﺎﻣﻪ20 .......................................................................................................... ﺷﻜﺴﺘﻦ ﻳﻚ دﺳﺘﻮر در ﭼﻨﺪ ﺳﻄﺮ 20 ................................................................................................. ﻧﻮﺷﺘﻦ ﭼﻨﺪ دﺳﺘﻮر در ﻳﻚ ﺳﻄﺮ21 .................................................................................................... ﺗﻔﺎوتِ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ21 .................................................................................................... ﻗﻄﻊ اﺟﺮا 21 ...................................................................................................................................... دﺳﺘﻮر 21 ................................................................................................................................ more اﺟﺮا و ﺿﺒﻂ دﺳﺘﻮرات ﻗﺒﻠﻲ 21 ......................................................................................................... اﺟﺮاي دﺳﺘﻮرات ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ 22 ......................................................................................................
I
ﺗﺎﺑﻊ )(22 ................................................................................................................................... eval دﺳﺘﻮر 22 .............................................................................................................................. lasterr ﺑﻠﻮك 22 .......................................................................................................................... try...catch ﺗﻔﺎوت دﺳﺘﻮرات ﭘﻨﺠﺮه ﻓﺮﻣﺎن و ﺑﺮﻧﺎﻣﻪ 23 ......................................................................................... دﺳﺘﻮرﻫﺎﺋﻲ در ﻣﻮرد ﻣﺘﻐﻴﺮﻫﺎ 23 .........................................................................................................
5-1درﻳﺎﻓﺖ اﻃﻼع و راﻫﻨﻤﺎﺋﻲ از ﻣﺪارك راﻫﻨﻤﺎي ﻣﺘﻠﺐ 23...................................................... 6-1ﺗﻤﺮﻳﻦ 24..........................................................................................................................
ﻓﺼﻞ 2آﺷﻨﺎﺋﻲ ﺑﺎ ﻣﺘﻐﻴﺮﻫﺎ و ﺗﻮاﺑﻊ 25 ..................................................................... 1-2آﺷﻨﺎﺋﻲ ﺑﺎ اﻧﻮاع ﻣﺘﻐﻴﺮ و داده 25......................................................................................... اﻧﻮاع داده 25 ..................................................................................................................................... دادﻫﻬﺎي ﻋﺪدي ،و دﺳﺘﻮر )(25 ..................................................................................................... isa ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن 25 .................................................................................................................. single ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن 25 ........................................................................................................................ int ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن charو ﺗﺮﻛﻴﺐ اﻧﻮاع 25 ............................................................................................. ﻣﺘﻐﻴﺮﻫﺎي داﺧﻠﻲ ﻳﺎ ﺗﻮﻛﺎر ﻣﺘﻠﺐ 27 .................................................................................................... دﺳﺘﻮر ﻓﺮﻣﺖ 28 .................................................................................................................... format ﺿﺮﻳﺐ در ﻧﻤﺎﻳﺶ اﻋﺪاد 29 ................................................................................................................
2-2ﻋﻤﻠﮕﺮﻫﺎ 29...................................................................................................................... ﻋﻤﻠﮕﺮﻫﺎي آراﻳﻪ اي 29 ..................................................................................................................... اوﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ 30 ..........................................................................................................................
3-2ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي 30..................................................................................................... ﺗﻮﻟﻴﺪ ﻋﺪد ﺗﺼﺎدﻓﻲ 30 ....................................................................................................................... ﺗﻮﻟﻴﺪ آراﻳﻪ ﺑﺎ ﺗﻜﺮار آراﻳﻪ دﻳﮕﺮ 30 ................................................................................................... ﺗﻮاﺑﻊ ﺗﺤﻠﻴﻞ داده ﻫﺎ 30 ...................................................................................................................... ﺗﻮاﺑﻊ زﻣﺎﻧﻲ 31 ................................................................................................................................. ﺗﻮاﺑﻊ ﺧﺎص 31 .................................................................................................................................. ﺗﻮاﺑﻊ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ 31 .................................................................................................................... II
ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ رﻳﺎﺿﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي 32 ..........................................................................................
4-2اﻋﺪاد و ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ32.............................................................................................. ﺗﻮاﺑﻊ ﻣﺮﺑﻮط ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ 32 ................................................................................................. ﻓﺮم ﻧﻮﺷﺘﺎري ﻋﺪد ﻣﺨﺘﻠﻂ 32 .............................................................................................................
5-2ﺗﻤﺮﻳﻦ 34..........................................................................................................................
ﻓﺼﻞ 3ﻣﺎﺗﺮﻳﺲ ﻫﺎ 35 ........................................................................................... 1-3ﺗﺸﺎﺑﻪ ﻣﺎﺑﻴﻦ ﻣﺎﺗﺮﻳﺲ ﻫﺎ 35................................................................................................ 2-3ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﭘﺎﻳﻪ 35..................................................................... Elementary Matrices ﻣﺎﺗﺮﻳﺲ ﻳﮕﺎﻧﻲ 35 ..................................................................................................... identity matrix ﻣﺎﺗﺮﻳﺲ ﻫﺎي )( onesو )(35 .................................................................................................... zeros
3-3اﻳﺠﺎد ﺗﻐﻴﻴﺮات ﺑﺮ روي ﻣﺎﺗﺮﻳﺲ36..................................................................................... اﺳﺘﺨﺮاج ﻗﺴﻤﺘﻲ از ﻳﻚ ﻣﺎﺗﺮﻳﺲ 36 .................................................................................................. ﺗﻐﻴﻴﺮ ﻣﻘﺪار ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ 36 .......................................................................................................... ﻗﺮار دادن ﻳﻚ ﻣﺎﺗﺮﻳﺲ در ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ37 ...................................................................................... اﺳﺘﺨﺮاج ﻳﺎ ﺣﺬف ردﻳﻒ و ﺳﺘﻮن37 ...................................................................................................
4-3ﻋﻤﻞ ﮔﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ 37.................................................................................................. ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ37 ............................................................................................................................ ﺗﻮان ﻣﺎﺗﺮﻳﺴﻲ 38 ..............................................................................................................................
5-3ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﻣﺎﺗﺮﻳﺴﻲ39............................................................................................... ﭼﻨﺪ ﺗﺎﺑﻊ ﻣﻌﻤﻮل 39 ........................................................................................................................... اﺳﺘﺨﺮاج ﻣﺎﺗﺮﻳﺲ از ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ 39 ............................................................................................... ﺗﻮاﺑﻌﻲ ﻛﻪ ﺑﻪ روي ﻣﺠﻤﻮﻋﻪ ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻋﻤﻞ ﻣﻴﻜﻨﻨﺪ 39 .............................................................. ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪي )ﻓﻀﺎﺋﻲ(39 ...........................................................................................................
6-3ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﻧﻤﻮﻧﻪ 40...................................................................................................... ﻣﺎﺗﺮﻳﺲ ﺟﺎدوﺋﻲ 40 ........................................................................................................................... ﻣﺎﺗﺮﻳﺲ ﭘﺎﺳﻜﺎل 41 ...........................................................................................................................
7-3ﺑﺮدار41................................................................................................................ Vector III
ﻋﻤﻠﮕﺮ ﻛﺎﻟﻦ 41 ................................................................................................................................. ﺗﺎﺑﻊ )(41 ............................................................................................................................ linspace ﻛﺎرﺑﺮد ﻳﻚ ﺑﺮدار در ﺗﻌﺮﻳﻒ ﺑﺮدار دﻳﮕﺮ 42 ....................................................................................... ﺑﺮدار ﺗﻬﻲ 42 .................................................................................................................................... اﻧﺪﻳﺲ اﻋﻀﺎء ﺑﺮدار 42 ......................................................................................................................
8-3ﺑﺮدارﻫﺎي ﻣﻨﻄﻘﻲ 43.......................................................................................................... ﺗﺒﺪﻳﻞ ﺑﺮدار ﻋﺪدي ﺑﻪ ﻣﻨﻄﻘﻲ ﺑﺎ ﺗﺎﺑﻊ )(43 ............................................................................... logical ﺣﺬف ﺑﻌﻀﻲ ﻋﻨﺎﺻﺮ آراﻳﻪ 43 ............................................................................................................. ﺿﺮب ﺑﺮدار ﻋﺪدي در ﺑﺮدار ﻣﻨﻄﻘﻲ 44 .............................................................................................. ﻳﺎﻓﺘﻦ ﻣﺤﻞ ﻋﻨﺎﺻﺮي ﺑﺎ ﻣﻘﺪار ﻣﻌﻴﻦ 44 ............................................................................................... ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ ﻣﻮرد ﻧﻈﺮ ﺑﺎ ﺗﺎﺑﻊ )(44 ................................................................................. find
9-3ﺗﻤﺮﻳﻦ 46..........................................................................................................................
ﻓﺼﻞ 4دﺳﺘﻮرﻫﺎ و ﺗﻮاﺑﻊ ورودي ﺧﺮوﺟﻲ 47 ......................................................... 1-4درﻳﺎﻓﺖ ورودي 47........................................................................................................... درﻳﺎﻓﺖ ﺑﺎ )(47 ......................................................................................................................... input درﻳﺎﻓﺖ ﺑﺎ 47 .................................................................................................................... keyboard
2-4ارﺳﺎل ﺧﺮوﺟﻲ 47............................................................................................................. ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ،دﺳﺘﻮر )47 ........................................................................ disp(var ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ،دﺳﺘﻮر )(48 ...........................................................................fprintf دﺳﺘﻮر 49 ...................................................................................................................... echo off/on دﺳﺘﻮر 49 ...............................................................................................................................pause
3-4ﺿﺒﻂ ﺑﺮ روي دﻳﺴﻚ49................................................................................................... ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﻓﺎﻳﻞ ﻣﺘﻦ 49 ................................................................................................. .TXT ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﻣﺘﻦ 49 ................................................................................................. .TXT ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﺑﺎﻳﻨﺮي 50 ............................................................................................ .MAT ﺑﺎز ﻛﺮدن درﮔﺎه 50 .................................................................................................................... port
4-4ﺗﻤﺮﻳﻦ 51.......................................................................................................................... IV
ﻓﺼﻞ 5آﺷﻨﺎﺋﻲ ﺑﺎ ﺗﺮﺳﻴﻤﺎت52 ............................................................................... 1-5ﺻﻔﺤﻪ ﻫﺎي ﻣﺨﺘﺼﺎت 52.................................................................................................... ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ 52 .................................................................................................................... ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ 52 .................................................................................................................. ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ و ﻗﻄﺒﻲ 52 ........................................................................................................
2-5ﺑﺮدار و رﺳﻢ ﻣﻨﺤﻨﻲ ،دﺳﺘﻮرﻫﺎي )(52........................................................... plot(), comet دﺳﺘﻮرﻫﺎي 53 ............................................................................. figure(), subplot(), hold on/off, clf اﻓﺰودن ﺗﻮﺿﻴﺤﺎت روي ﻣﻨﺤﻨﻲ53 ..................................................................................................... ﭘﻨﺠﺮه 53 .................................................................................................................. Data Statistics ﭼﻨﺪ ﻣﻨﺤﻨﻲ در ﻳﻚ ﺻﻔﺤﻪ 53 ............................................................................................................
3-5دﺳﺘﻮرﻫﺎي ﻫﻢ ﺧﺎﻧﻮاده )(55.........................................................................................plot 4-5روش ﻫﺎي دﻳﮕﺮ ﻧﻤﻮدار ﺳﺎزي 56...................................................................................... ﻧﻤﻮدار ﺳﺘﻮﻧﻲ)(56 .......................................................................................................................bar ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر )(56 ........................................................................................................................ hist ﻧﻤﻮدار داﻳﺮه )(56 ........................................................................................................................ pie
5-5رﺳﻢ ﻧﻤﻮداري ﻣﺎﺗﺮﻳﺲ 58................................................................................................. ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻣﺎﺗﺮﻳﺲ 58 ................................................................................................................. ﻧﻤﻮدار ﻣﻨﺤﻨﻲ ﻣﺎﺗﺮﻳﺲ 58 ................................................................................................................. ﻧﻤﻮدار ﻗﻄﺒﻲ 59 ................................................................................................................................ ﻧﻤﻮدار ﻋﻘﺮﺑﻪ اي ،دﺳﺘﻮر )(59 ............................................................................................ compass ﻧﻤﺎﻳﺶ ﻫﻨﺪﺳﻲ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺎ )(60 ..................................................................................... compass رﺳﻢ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺎ )(61 ............................................................................................................. plot
6-5رﺳﻢ آﺳﺎن ﺑﺎ )(62.................................................................................................. ezplot رﺳﻢ ﺗﻮاﺑﻊ آﺷﻜﺎر62 ............................................................................................. explicit functions رﺳﻢ ﺗﻮاﺑﻊ ﺿﻤﻨﻲ 62 .............................................................................................implicit functions رﺳﻢ ﺗﻮاﺑﻊ ﭘﺎراﻣﺘﺮﻳﻚ 62 ..................................................................................................................
7-5ﺗﺎﺑﻊ داﺧﻠﻲ )(63........................................................................................................ fplot V
8-5وﻳﺮاﻳﺶ ﮔﺮاف 64............................................................................................................. ﺗﻌﻴﻴﻦ ﻣﺤﺪوده ﻣﺤﻮرﻫﺎ64 .................................................................................................................. ﺗﻮري روي ﮔﺮاف از ﭘﻨﺠﺮه ﻓﺮﻣﺎن 64 ................................................................................................ ﺑﺮﭼﺴﺐ ﮔﺬاري ﺑﺎ ﻣﺎوس 64 .............................................................................................................. ﻣﺆﻟﻔﻪ ﻫﺎي 64 ...........................................................................................................................RGB رﻧﮕﻲ ﻛﺮدن ﺑﺎ )(64 .......................................................................................................................fill ادﻳﺖ از روي ﭘﻨﺠﺮه ﮔﺮاف 64 ...........................................................................................................
9-5ﮔﻴﺮه ﻫﺎي ﮔﺮاﻓﻴﻚ 65.......................................................................... graphics handles 10-5ﺗﻤﺮﻳﻦ 66.......................................................................................................................
ﻓﺼﻞ 6ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ 67 ....................................................................................... 1-6ام -ﻓﺎﻳﻞ 67...................................................................................................................... ﺗﺸﻜﻴﻞ ام -ﻓﺎﻳﻞ67 ........................................................................................................................... ام -ﻓﺎﻳﻞِ اﺳﻜﺮﻳﭙﺖ و ام-ﻓﺎﻳﻞِ ﺗﺎﺑﻌﻲ 67 .............................................................................................
2-6ﻣﺜﺎل ﻫﺎي رﻳﺎﺿﻲ 67......................................................................................................... 3-6ﻣﺜﺎل ﻫﺎي آﻣﺎري 69.......................................................................................................... 4-6ﻣﺜﺎل ﻫﺎي ﻣﻜﺎﻧﻴﻚ 70....................................................................................................... 5-6ﻣﺜﺎل ﻫﺎي اﻟﻜﺘﺮﻳﻜﻲ71...................................................................................................... 6-6ﺗﻤﺮﻳﻦ 75..........................................................................................................................
ﻓﺼﻞ 7ﮔﺮاﻓﻴﻚ ﺳﻪ ﺑﻌﺪي 76 ................................................................................ 1-7ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲ ﻓﻀﺎﺋﻲ 76.................................................................................................... ﺗﺎﺑﻊ )(76 .................................................................................................................................. plot3 ﺗﺎﺑﻊ )(76 ..............................................................................................................................comet3
2-7ﺗﺮﺳﻴﻢ ﺳﻄﻮح ﻓﻀﺎﺋﻲ 76.................................................................................................... دﺳﺘﻮر )76 .................................................................................................................. meshgrid(a,b ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت 77 ........................................................................................................................... دﺳﺘﻮر )77 .................................................................................................................... mesh(X,Y,Z دﺳﺘﻮر ) ، mesh(Mﻧﻤﺎﻳﺶ ﺳﻪ ﺑﻌﺪي ﻳﻚ ﻣﺎﺗﺮﻳﺲ 78 ......................................................................... VI
3-7ﺗﻮاﺑﻊ ﻓﻀﺎﺋﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي 79.......................................................................................... رﺳﻢ ﻛُﺮه ﺑﺎ sphereو اﻳﺠﺎد اﻓﻜﺖ ﻫﺎي ﺗﺼﻮﻳﺮي 79 .......................................................................... رﺳﻢ اﺳﺘﻮاﻧﻪ ﺑﺎ 79 ............................................................................................................... cylinder رﺳﻢ ﻗﻠﻪ ﻫﺎ ﺑﺎ ﺗﺎﺑﻊ ﻧﻤﻮﻧﻪ 79 ................................................................................................... peaks
4-7ﺑﻌﻀﻲ از ﻗﺎﺑﻠﻴﺖ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ ﻣﺘﻠﺐ 79............................................................................. زاوﻳﻪ دﻳﺪ ﻳﻚ ﺗﺼﻮﻳﺮ 79 .................................................................................................................. ﺗﺼﻮﻳﺮﺑﺮداري ﺑﺎ 80 ........................................................................................................... getframe ﺑﺎز ﻧﻤﺎﻳﺶ ﻓﻴﻠﻢ ﺑﺎدﺳﺘﻮر )(80 .................................................................................................. movie
5-7ﺗﻐﻴﻴﺮات روي ﻗﺴﻤﺘﻲ از ﺳﻄﺢ ﺗﺮﺳﻴﻢ ﺳﻪ ﺑﻌﺪي81.............................................................. ﺣﺬف ﻗﺴﻤﺘﻲ از ﺳﻄﺢ81 ...................................................................................................................
6-7ﺳﺎﻳﺮ دﺳﺘﻮر ﻫﺎي ﺗﺮﺳﻴﻢ ﺳﻪ ﺑﻌﺪي 81................................................................................. 7-7ﺗﻤﺮﻳﻦ 82..........................................................................................................................
ﻓﺼﻞ 8ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﺗﻜﺮار83 ................................................................... 1-8ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﻋﻮاﻣﻞ آن 83.................................................................................... ﻋﻤﻠﮕﺮﻫﺎي ﻧﺴﺒﺘﻲ )راﺑﻄﻪ اي( 83 .................................................................... Relational Operators ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ 83 .......................................................................................... Logical Operators ﺑﻠﻮك 83 ........................................................................................................................................ if ﺑﻠﻮك 83 ................................................................................................................................ switch
2-8ﺳﺎﺧﺘﺎرﻫﺎي ﺗﻜﺮار84......................................................................................................... ﺣﻠﻘﻪ 84 ....................................................................................................................................... for ﺣﻠﻘﻪ whileو دﺳﺘﻮر 86 .......................................................................................................... break
3-8ﻣﻨﻴﻮ86............................................................................................................................. 4-8ﺗﻤﺮﻳﻦ 87..........................................................................................................................
ﻓﺼﻞ 9ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺗﻮاﺑﻊ و ﺗﺎﺑﻊ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ 88 ........................................... 1-9ﺗﺎﺑﻊ ﺧﻂ ﻓﺮﻣﺎن 88.................................................................................... inline function 2-9ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ 88.................................................................................... function M-file ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ ﭼﻨﺪ آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ 89 ....................................................................................... VII
ﺗﺎﺑﻊ ﺑﺪون ﻣﻘﺪار ،ﻣﺘﻐﻴﺮ 90 ............................................................................................... Persistent زﻳﺮ ﺗﺎﺑﻊ 91 ................................................................................................................... subfunction
3-9ﺗﺎﺑﻊِ ﺗﺎﺑﻊ 92...................................................................................................................... ﮔﻴﺮه ﺗﺎﺑﻊ 92 ............................................................................................. feval() ، function handle ﺗﺎﺑﻊِ ﺗﺎﺑﻊِ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ 92 ............................................................................................................... ﺗﺎﺑﻊ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي93 ................................................................................................................
4-9ﺗﺒﺪﻳﻞ ﻓﺎﻳﻞ ﻫﺎي ﻣﺘﻠﺐ 93.................................................................................................. ﺗﺒﺪﻳﻞ ام -ﻓﺎﻳﻞ ﺑﻪ ﭘﺮوﻧﺪه ﭘﻲ -ﻛﺪ 93 .............................................................................. pcode file ﺗﻮﻟﻴﺪ ﺑﺮﻧﺎﻣﻪ Cﺑﺎ ﻛﺎﻣﭙﺎﻳﻠﺮ ﻣﺘﻠﺐ 94 ....................................................................MATLAB Compiler ﺗﺒﺪﻳﻞ ﺑﺮﻧﺎﻣﻪ ﮔﺮاﻓﻴﻜﻲ ﺑﻪ زﺑﺎن 94 ..............................................................................................C++ ﺧﻼﺻﻪ دﺳﺘﻮرات ﻛﺎﻣﭙﺎﻳﻠﺮ 94 ............................................................................................................ ﺳﺎزﻧﺪه اﻛﺴﻞ 95 ........................................................................................................ Excel Builder
5-9ﺗﻤﺮﻳﻦ 95..........................................................................................................................
ﻓﺼﻞ 10رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ
Symbolic Math
)96 ........ (Symbolic Math Tool Box
آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ﺑﺎ دﻗﺖ اﻓﺰوده 96 ........................................................................ double array آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻛﺎراﻛﺘﺮي96 ............................................................................................................... ﺷﻴﺊ ﻳﺎ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ 96 ..................................................................................................................... اﻧﻮاع دﻳﮕﺮ داده 96 ............................................................................................................................ ﻧﻤﺎﻳﺶ ﻣﺘﻐﻴﺮﻫﺎ در ﭘﻨﺠﺮه 96 ............................................................................................ workspace
2-10ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ97........................................................................................................ ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ 97 ...................................................................................... ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ 97 ................................................................................................................. ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ 97 ..................................................................................................................... ﻧﻤﺎﻳﺶ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ 98 ............................................................................................................... ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﻧﻤﺎدﻳﻦ 98 ..................................................................................................................... ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ 98 ...................................................................................... ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ 99 .................................................................................................................
VIII
ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ 99 .....................................................................................................................
3-10ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ 99......................................................................................................... رﻳﺸﻪ دوم 99 .................................................................................................................................... ﺗﻮان99 ............................................................................................................................................. ﻣﺸﺘﻖ 99 ........................................................................................................................................... اﻧﺘﮕﺮال 99 ........................................................................................................................................ اﻧﺘﮕﺮال ﻣﺤﺪود 99 ............................................................................................................................. ﺗﺒﺪﻳﻞ ﺑﻪ ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ و رﻳﺸﻪ و ﻗﻄﺐ ﻳﻚ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ 100........................................................... ﺗﺒﺪﻳﻞ ﻋﺒﺎرت ﺟﺒﺮي ﺑﻪ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ 100.................................................................................
4-10اﻋﺪاد ﻣﺨﺘﻠﻂ ﻧﻤﺎدﻳﻦ 100 ............................................................................................... ﻣﺰدوج ﻳﻚ ﻋﺪد ﻣﺨﺘﻠﻂ 100.............................................................................................................
5-10ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ 101 ........................................................................................................... ﻣﻌﺮﻓﻲ ﻳﻚ ﺗﺎﺑﻊ ﻛﻠﻲ101.................................................................................................................. ﺟﺎي ﮔﺰﻳﻨﻲ ﻳﻚ ﻋﺒﺎرت ﺑﻪ ﺟﺎي 101........................................................... (subs = substitution) x ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﻣﺨﺘﻠﻂ 101.....................................................................................................................
6-10ﺣﺪ ﺗﺎﺑﻊ 101 .................................................................................................................. 7-10ﺗﺎﺑﻊ ام -ﻓﺎﻳﻠﻲ ﻧﻤﺎدﻳﻦ 102 ............................................................................................. 8-10ﺳﺮي ﻫﺎ 102 .................................................................................................................. 9-10ﺗﻮاﺑﻊ آﺳﺎن ﺳﺎز 102 ...................................................................................................... ﺗﺎﺑﻊ )(103...............................................................................................................................pretty ﺗﻮاﺑﻊ )( collectو )(103........................................................................................................ expand ﻓﺎﻛﺘﻮرﮔﻴﺮي )(103.................................................................................................................. factor ﺳﺎده ﻛﺮدن ﺑﺎ )(103..............................................................................................................simplify ﺳﺎده ﻛﺮدن ﺑﺎ )(103............................................................................................................... simple
10-10ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﻧﻤﺎدﻳﻦ 103 ............................................................................................. ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮي از ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ 103..................................................................................... ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮي از ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ 104...........................................................................................
IX
11-10رﺳﻢ ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﺑﺎ )(105 ................................................................................. ezplot 12-10درﻳﺎﻓﺖ راﻫﻨﻤﺎ در ﻣﻮرد رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ 105 .............................................................. 13-10ﺗﻤﺮﻳﻦ 106 ..................................................................................................................
ﻓﺼﻞ 11ﻋﻤﻠﻴﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ 107 ........................................................................... 1-11ﺣﻞ ﻣﻌﺎدﻻت 107 ........................................................................................................... ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي ،دﺳﺘﻮرﻫﺎي )( rootsو )(107....................................................................... poly ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي )(107.....................................................................................fzero ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﻏﻴﺮ ﺧﻄﻲ ﺑﺎ)() fsolveﺟﻌﺒﻪ اﺑﺰار ﺑﻬﻴﻨﻪ ﺳﺎزي 108.......... (Optimization Toolbox ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺧﻄﻲ 108.......................................................................................................... ﺣﻞ ﻣﻌﺎدﻻت ﺑﺎ دﺳﺘﻮر )() solveﺟﻌﺒﻪ اﺑﺰار رﻳﺎﺿﻴﺎت ﺳﻤﺒﻠﻴﻚ 109............(Symbolic Math Toolbox ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي ﺑﺎ 110....................................................................................... ODE45 ﺣﻞ ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي )ﺟﻌﺒﻪ اﺑﺰار رﻳﺎﺿﻴﺎت ﺳﻤﺒﻠﻴﻚ 111............ (Symbolic Math Toolbox ﺗﺎﺑﻊ ﻣﻌﻜﻮس ﻳﻚ ﺗﺎﺑﻊ ﺑﺎ )(112........................................................................................... finverse ﺗﺮﻛﻴﺐ ﺗﺎﺑﻌﻲ ﺑﺎ 112.......................................................................................................... compose
2-11ﺗﻘﺮﻳﺐ ﺟﺒﺮي ﻣﻨﺤﻨﻲ ﻣﻌﺎدﻻت 112 .................................................................................. ﺑﺮﺧﻮراﻧﺪن ﻳﻚ ﻣﻨﺤﻨﻲ در ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي )(112....... Curve Fitting with polyfit(x,y,n), polyval درﻳﺎﻓﺖ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﻣﻨﺤﻨﻲ ﺑﺎ 113....................................................................................ginput ﺣﻞ ﺗﺮﺳﻴﻤﻲ 113...............................................................................................................................
3-11ﺗﻤﺮﻳﻦ 114 ....................................................................................................................
ﻓﺼﻞ 12ﻣﺒﺎﺣﺜﻲ ﭘﻴﺮاﻣﻮن رﺷﺘﻪ ﻫﺎ 115 ................................................................. 1-12رﺷﺘﻪ ﺑﻪ ﻣﺜﺎﺑﻪ آراﻳﻪ )ﺑﺮدار( 115 ..................................................................................... دﺳﺘﺮﺳﻲ ﺑﻪ ﺣﺮوف رﺷﺘﻪ 115............................................................................................................ ﻋﺪد اﺳﻜﻲ ﻳﻚ ﻛﺎراﻛﺘﺮ 115............................................................................................................. رﺷﺘﻪ 115.............................................................................................................................. m × n
2-12ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ 116 .................................................................................................. ﻣﺮﺗﺐ ﺳﺎزي ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي )(116................................................................................... sort ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ ﺑﺎ ﺗﺎﺑﻊ ﺣﺒﺎﺑﻲ و ﻣﻘﺎﻳﺴﻪ ﺑﺎ )(116.................................................................... sort X
3-12ﺗﻮاﺑﻊ رﺷﺘﻪ اي 117 ........................................................................................................ ﺗﺎﺑﻊ ) strcmp(s1,s2و ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪ اي ﺑﺮاي رﺷﺘﻪ ﻫﺎ 117......................................................... ﺟﻤﻊ ﻛﺮدن رﺷﺘﻬﻬﺎ ﺑﺎ دﺳﺘﻮر )(118.......................................................................................... strcat
4-12ﻗﺎﻟﺒﺒﻨﺪي رﺷﺘﻪ 118 .......................................................................... String Formatting ﺗﻌﻴﻴﻦ ﻓﺮﻣﺖ ﺑﺮاي ﻧﻤﺎﻳﺶ رﺷﺘﻪ ﺑﺎ )(118.................................................................................. fprintf ﻧﮕﻪ داري رﺷﺘﻪ در ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺎ )(118................................................................................... sprintf
5-12ﺗﻤﺮﻳﻦ 119 ....................................................................................................................
ﻓﺼﻞ 13ﺳﻴﮕﻨﺎل ،ﺳﻴﺴﺘﻢ ،ﻓﻴﻠﺘﺮ 120 ...................................................................... 1-13ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ 120 ....................................................................................................... ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ )(120........................................................................................................... fft ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ وارون )120............................................................................................... ifft(t
2-13ﺗﻮاﺑﻊ ﺳﻴﺴﺘﻢ ﻫﺎ122 ....................................................................................................... دﺳﺘﻮر اﻳﺠﺎد ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﭘﻴﻮﺳﺘﻪ 122..................................................................................... tf ﺗﺮﺳﻴﻢ )( bodeﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ122.................................................................................................. واﻛﻨﺶ ﭘﻠﻪ اي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ )(122..................................................................step(), impulse دﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ 122....................................................................................... Nyquist Diagram ﺗﻐﻴﻴﺮ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﺑﻪ ﻓﺮم ﻓﻀﺎي ﺣﺎﻟﺖ 122..................................................................................tf2ss دﺳﺘﻮر rlocusﺑﺮاي رﺳﻢ ﻣﻜﺎن ﻫﻨﺪﺳﻲ رﻳﺸﻪ ﻫﺎ124.......................................................................... ﺳﻴﺴﺘﻢ ﻓﻴﺪﺑﻚ ﻣﻨﻔﻲ ﺑﺎ دﺳﺘﻮر )(124.................................................................................. feedback
3-13ﻣﺪل زﻣﺎن ﮔﺴﺴﺘﻪ 124 ............................................................. Discrete-Time Models ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﮔﺴﺴﺘﻪ ﻣﺪار 124........................................................................................... Lead
4-13ﻓﻴﻠﺘﺮﻫﺎ125 .................................................................................................................... ﻓﻴﻠﺘﺮ Butterworthآﻧﺎﻟﻮگ و دﻳﺠﻴﺘﺎل ،دﺳﺘﻮر )(125................................................................ butter
5-13ﺗﻤﺮﻳﻦ 127 ....................................................................................................................
ﻓﺼﻞ 14واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ 128 ..................................................................... 1-14واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ 128 ........................................... (GUI) graphical user interface ﺷﺎﺧﺼﻪ ﻳﺎب 129................................................................................................ property inspector XI
ﺷﺎﺧﺼﻪ ﻋﻨﻮان 129.................................................................................................. Name or String ﺷﺎﺧﺼﻪ ﺑﺮﭼﺴﺐ 130................................................................................................................. Tag ﺗﻮاﺑﻊ ﻓﺮاﺧﻮان 130.............................................................................................. Callback Function ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ130.............................................................................................................................
2-14ﺗﻤﺮﻳﻦ 132 ....................................................................................................................
ﻓﺼﻞ 15ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺻﻔﺤﻪ ﮔﺴﺘﺮده 135 ......................................................... 1-15ﺑﺮﭼﺴﺐ ﮔﺬاري 135 ...................................................................................................... ﺑﺮﭼﺴﺐ ﭘﻴﺶ ﻓﺮض ﻳﻚ ﺳﻠﻮل 135................................................................................................... ﺑﺮﭼﺴﺐ ﮔﺬاري دل ﺧﻮاه ،ﻣﺘﻐﻴﺮ و آراﻳﻪ در اﻛﺴﻞ 135....................................................................... ﻛﺘﺎﺑﺨﺎﻧﻪ داﺧﻠﻲ اﻛﺴﻞ137.................................................................................................................
2-15ﻓﺮﻣﻮل دﻫﻲ 137 ............................................................................................................ ﻣﻴﻠﻪ ﻓﺮﻣﻮل 137........................................................................................................... Formula Bar رﺟﻮع ﻧﺴﺒﻲ و رﺟﻮع ﻣﻄﻠﻖ ﺑﻪ ﺳﻠﻮل138........................................................................................... ﻧﺎﻣﮕﺬاري 139..................................................................................................................................
3-15ﭘﺮ ﻛﺮدن ﺳﻠﻮل ﻫﺎ ﺑﺎ ﻟﻴﺴﺖ ﻫﺎي ﻗﺮاردادي 140 ................................................................ 4-15ﺗﻤﺮﻳﻦ 141 ....................................................................................................................
ﻓﺼﻞ 16ﻋﻤﻠﻴﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ ،ﺗﻮاﺑﻊ و ﻧﻤﻮدارﻫﺎ 142 ............................................... 1-16ﭼﻨﺪ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي142 ........................................................................................... 2-16ﻧﻤﻮدارﻫﺎ 142 ................................................................................................................. ﻧﻤﻮدار ﺳﺘﻮﻧﻲ 142............................................................................................................................ ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲ 142............................................................................................................................. ﺟﺒﺮي ﺳﺎزي ﻣﻨﺤﻨﻲ143....................................................................................................................
3-16ﻫﻴﺴﺘﻮﮔﺮام144 .............................................................................................................. 4-16ﺗﺎﺑﻊ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ در اﻛﺴﻞ
VBA in Excel
145 ..........................................................
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ145............................................................................................................................. اﺳﺘﻔﺎده از ﺗﺎﺑﻊ VBAدر ﺻﻔﺤﻪ ﮔﺴﺘﺮده 146.......................................................................................
5-16ﺿﺒﻂ ﻣﺎﻛﺮو 147 ........................................................................................................... XII
6-16اﺑﺰارﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﻲ 148 ................................................................................................. 148................................................................................................................................ Goal Seek 148....................................................................................................................................... Solver ﺟﺪول داده 151.............................................................................................................. Data Table
7-16ﺗﻤﺮﻳﻦ 152 ....................................................................................................................
XIII
ﻓﺼﻞ 1ﻛﻠﻴﺎت و اﺻﻮل 1-1ﻣﻘﺪﻣﻪ واژه
MATLAB
ﻛﻠﻤﻪ ﻓﻮق ،ﺳﺮ -واژهي ﻋﺒﺎرت MATrix LABoratoryاﺳﺖ ،ﻛﻪ در اﻳﻦ ﻣﺘﻦ ﺑﻪﺷﻜﻞ MATLABﻳﺎ ﻣﺘﻠﺐ ﻣﻲآﻳﺪ. ﺑﺮاي اﺟﺮاي ﻣﺜﺎلﻫﺎ و ﺗﻤﺮﻳﻦﻫﺎي اﻳﻦ ﻣﺘﻦ از MATLAB 6.5, Release 13اﺳﺘﻔﺎده ﺷﺪه ،و اﺳﺘﻔﺎده از آن )ﻳﺎ وﻳﺮاﺳﺖﻫﺎي ﺑﺎﻻﺗﺮ( ﺑﻪ داﻧﺸﺠﻮﻳﺎن ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد.
ﺳﻴﻤﺎي
MATLAB
MATLABزﺑﺎﻧﻲ اﺳﺖ ﻛﻪ ﻛﺎرﺑﺮد ﻛﺎﻣﭙﻴﻮﺗﺮ در ﻣﻬﻨﺪﺳﻲ را ﺑﺎ ﻛﺎراﺋﻲ ﺑﺎﻻ ﺗﻀﻤﻴﻦ ﻛﺮده و اﻣﻜﺎﻧﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ ،ﺗﺼﻮﻳﺮي ،و ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ را در ﻣﺤﻴﻄﻲ آﺳﺎن و آﺷﻨﺎ ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ .ﻛﺎراﺋﻲ MATLABدر ﻣﻘﻮﻟﻪﻫﺎﺋﻲ ﻧﻈﻴﺮ :ﻣﺤﺎﺳﺒﺎت رﻳﺎﺿﻲ ،دﺳﺘﺮﺳﻲ ﺑﻪ /و آﻧﺎﻟﻴﺰ دادهﻫﺎ ،ﻣﺪلﺳﺎزي و ﺷﺒﻴﻪﺳﺎزي ،ﮔﺮاﻓﻴﻚ ،و ﺗﻮﻟﻴﺪ ﻧﺮماﻓﺰار )ﺣﺘﻲ ﺑﺮاي ﻣﺤﻴﻂ وﻳﻨﺪوز( ﺑﻪ اﺛﺒﺎت رﺳﻴﺪه اﺳﺖ. اﻳﻦ زﺑﺎن ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﻈﺮات ﻛﺎرﺑﺮان داﻧﺸﮕﺎﻫﻲ و ﺻﻨﻌﺘﻲ دﺳﺖﺧﻮش ﺑﺎزﻧﮕﺮيﻫﺎي زﻳﺎدي ﺷﺪه و اﻛﻨﻮن ﺑﻪ زﺑﺎن اﺳﺘﺎﻧﺪارد ﺟﻬﺖ آﻣﻮزشﻫﺎي ﻣﻘﺪﻣﺎﺗﻲ و ﻋﺎﻟﻲ و اﺑﺰار ﭘﮋوﻫﺶ و ﺗﻮﺳﻌﻪ در ﺻﻨﺎﻳﻊ ﺗﺒﺪﻳﻞ ﺷﺪه اﺳﺖ. MATLABﺟﻌﺒﻪاﺑﺰارﻫﺎﺋﻲ ﺑﺮاي ﻛﺎرﺑﺮدﻫﺎي ﺧﺎص در اﺧﺘﻴﺎر ﻗﺮار ﻣﻲدﻫﺪ ،ﻛﻪ از ﺟﻤﻠﻪ آنﻫﺎ ﺟﻌﺒﻪاﺑﺰار رﻳﺎﺿﻴﺎت ،ﻛﻨﺘﺮل، ﺷﺒﻜﻪﻫﺎي ﻋﺼﺒﻲ ،ﺑﺎزرﮔﺎﻧﻲ . . . ،ﻣﻲﺑﺎﺷﻨﺪ .ﺟﻌﺒﻪ اﺑﺰارﻫﺎ ﺑﺎ زﺑﺎن ﻣﺘﻠﺐ و ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪاي از ام -ﻓﺎﻳﻞﻫﺎ ﮔﺴﺘﺮش ﻳﺎﻓﺘﻪاﻧﺪ و ﺑﺮاي ﻫﺮ ﻛﺎرﺑﺮ در زﻣﻴﻨﻪ ﺗﺨﺼﺼﻲاش ﻛﺎرﺑﺮد و اﻫﻤﻴﺖ زﻳﺎد دارﻧﺪ .اﻣﻜﺎن ﺳﺎﺧﺖ ﺟﻌﺒﻪاﺑﺰارﻫﺎي ﺟﺪﻳﺪ و ﺷﺨﺼﻲ ﻧﻴﺰ ﺑﺮاي ﻛﺎرﺑﺮان ﭘﻴﺸﺮﻓﺘﻪ ﻓﺮاﻫﻢ اﺳﺖ. در اﻳﻦ ﻧﺮماﻓﺰار ﻫﺮ ﻣﺘﻐﻴﺮ ﺑﻪ ﻋﻨﻮان ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻳﺎ ﻳﻚ ﺑﺮدار )ﺑﺮدار ﻣﺎﺗﺮﻳﺲ ﺗﻚ ﺳﻄﺮي ﻳﺎ ﺗﻚ ﺳﺘﻮﻧﻲ اﺳﺖ( ﺷﻨﺎﺧﺘﻪ ﻣﻲ- ﺷﻮد .ﻟﺬا ﺗﻌﺪادي ﻣﻘﺪار را ﻳﻚ ﺟﺎ ﻣﻲﺗﻮان ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮِ ﺗﻚ -ﻧﺎم )ﺑﺪون ﻧﻴﺎز ﺑﻪ اﻋﻼم ﻗﺒﻠﻲ ﺗﻌﺪاد اﻋﻀﺎء( ﻧﺴﺒﺖ داد .اﻳﻦ اﺑﺘﻜﺎر ﻣﺎ را از ﻣﻘﺪار دﻫﻲ ﺑﻪ و ﻧﻤﺎﻳﺶ ﺗﻚ ﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ ﻛﻪ در زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ اﻧﺠﺎم ﻣﻲﺷﻮد ﺑﻲﻧﻴﺎز ﻣﻲﻛﻨﺪ. ﻣﺘﻠﺐ داراي ﭘﻨﺞ وﻳﮋﮔﻲ ﺷﺎﻳﺎن ذﻛﺮ اﺳﺖ: -1ﭘﻨﺠﺮهي واﺳﻂ ﻛﺎرﺑﺮ (IDE) Integrated Development Environmentﺑﺴﻴﺎر دلﭘﺬﻳﺮ و دﺳﺖﻳﺎﻓﺘﻨﻲ ﻛﻪ از اﻣﺘﻴﺎزات ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺘﻨﻲ و ﮔﺮاﻓﻴﻜﻲ ﻫﺮ دو اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ .اﻳﻦ واﺳﻂ ﻛﺎرﺑﺮ ﺷﺎﻣﻞ ﭘﻨﺠﺮهﻫﺎي :ﻓﺮﻣﺎن ،دﻳﺮﻛﺘﻮري ﺟﺎري ،ﺗﺎرﻳﺨﭽﻪ ﻓﺮﻣﺎن ،ﻓﻀﺎي ﻛﺎر . . . ،اﺳﺖ .ﭘﻨﺠﺮهي ﻓﺮﻣﺎن دﺳﺘﻮرات را ﺑﻪ ﺻﻮرت ﻛﻨﺴﻮل ﻳﺎ ﺧﻂ ﻓﺮﻣﺎن ،ﻣﺸﺎﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ،DOSدرﻳﺎﻓﺖ و اﺟﺮا ﻣﻲﻛﻨﺪ .ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻓﻀﺎي ﻛﺎر را ﺑﺎ ﻣﺸﺨﺼﺎت آنﻫﺎ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ .ﭘﻨﺠﺮهﻫﺎي واﺳﻂ ﻛﺎرﺑﺮ دﻳﻨﺎﻣﻴﻚ ﺑﻮده و ﻣﻤﻜﻦ اﺳﺖ ﺧﻮد ﺷﺎﻣﻞ ﭘﻨﺠﺮهﻫﺎي ﻓﺮﻋﻲ ﺑﺎﺷﻨﺪ .ﻫﻤﻴﺸﻪ ﺑﺎ اﺟﺮاي زﻳﺮﻣﻨﻴﻮي Defaultاز ﻣﻨﻴﻮي اﺻﻠﻲ ﻣﻲﺗﻮان ﭼﻬﺎر ﭘﻨﺠﺮهي Command, Command History, Workspace, Current Directory :را ﻛﻪ ﻛﺎرﺑﺮديﺗﺮ ﻫﺴﺘﻨﺪ ،ﻇﺎﻫﺮ ﻛﺮد و در دﺳﺘﺮس داﺷﺖ. -2ﻛﺘﺎبﺧﺎﻧﻪي ﻋﻈﻴﻤﻲ از ﺗﻮاﺑﻊ ﻣﻘﺪﻣﺎﺗﻲ و ﭘﻴﺸﺮﻓﺘﻪ. -3زﺑﺎن ﻗﻮي ﻫﻢ ﺑﺮاي ﻓﺮاﻣﻴﻦ ﻛﻮﺗﺎه و ﻳﻚﺑﺎر ﻣﺼﺮف و ﻫﻢ ﺑﺮاي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﺰرگ و ﻛﺎرﺑﺮدي. -4روشﻫﺎي ﻣﺘﻌﺪد ﺗﺮﺳﻴﻤﺎت دوﺑﻌﺪي و ﺳﻪﺑﻌﺪي. -5واﺳﻂ ﻣﻴﺎنﺑﺮﻧﺎﻣﻪاي ) Application Program Interface (APIﻛﻪ اﻣﻜﺎن ﻓﺮاﺧﻮاﻧﻲ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻣﺘﻠﺐ از زﺑﺎنﻫﺎي Cو ، Fortranﺗﺒﺪﻳﻞ ﻓﺎﻳﻞﻫﺎي ﻣﺘﻠﺐ )ام -ﻓﺎﻳﻞﻫﺎ( ﺑﻪ زﺑﺎن ، Cو اﺳﺘﻔﺎده از ﻣﻮﺗﻮر ﻣﺤﺎﺳﺒﺎﺗﻲ ﻣﺘﻠﺐ در اﻳﻦ زﺑﺎنﻫﺎ را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ .ﺑﺎ اﺳﻔﺎده از ﺗﺒﺪﻳﻼت ﻓﻮق ﻣﻲﺗﻮان ﺑﺮﻧﺎﻣﻪﻫﺎي ﻧﻮﺷﺘﻪ ﺷﺪه 14
در ﻣﺤﻴﻂ ﻣﺘﻠﺐ را ﺑﻪ ﺻﻮرت اﺟﺮاﺋﻲِ ﻛﻨﺴﻮﻟﻲ )ﻗﺎﺑﻞ اﺟﺮا از ﺧﻂ ﻓﺮﻣﺎن ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ( درآورد .ﻫﻢﭼﻨﻴﻦ اﻣﻜﺎن ﺗﻬﻴﻪ ﻓﺎﻳﻞﻫﺎي اﺟﺮاﺋﻲ ﺑﺎ واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﺑﺮاي وﻳﻨﺪوز وﺟﻮد دارد. -6دارا ﺑﻮدن راﻫﻨﻤﺎي ﺟﺎﻣﻊ و ﻛﺎﻣﻞِ ﻛﻨﺎرِ دﺳﺖ و وﺟﻮد ﻣﺪارك راﻫﻨﻤﺎي ﻗﺎﺑﻞ ﭼﺎپ ﺑﻪ ﺻﻮرت PDFﻛﻪ ﺗﻮﺳﻂ ﺷﺮﻛﺖ ) Mathworksﺳﺎزﻧﺪه ﻣﺘﻠﺐ( اراﺋﻪ ﺷﺪهاﻧﺪ.
روش اﻳﻦ ﻛﺘﺎب روش ﻛﺎر ﻣﺎ در اﻳﻦ ﻣﺘﻦ ﻳﺎدﮔﻴﺮي -ﺑﺎ -ﻣﺜﺎل Learn by Examplesاﺳﺖ .ازاﻳﻦرو اﺟﺮاي ﻣﺘﻠﺐ ،ﻫﻢزﻣﺎن ﺑﺎ ﻣﻄﺎﻟﻌﻪ ﻣﺘﻦ اﻛﻴﺪاٌ ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد .در ﻣﺜﺎلﻫﺎي ﻛﺎرﺑﺮدي ﻧﻮع ﻛﺎرﺑﺮد ﻣﺸﺨﺺ اﺳﺖ. در ﻛﻠﻴﻪ ﻣﺜﺎلﻫﺎ ،دﺳﺘﻮرات ﻓﻮري ﻛﻪ روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ ،ﺑﻌﺪاز ﻋﻼﻣﺖ >> )ﻧﺸﺎﻧﻪ ﺳﻄﺮ ﻓﺮﻣﺎن (Command Promptآﻣﺪهاﻧﺪ .در اﻧﺘﻬﺎي ﻫﺮ دﺳﺘﻮر ﻓﻮري ﺑﺎﻳﺴﺘﻲ ﻛﻠﻴﺪ > <Enterزده ﺷﻮد. ﺳﻄﺮﻫﺎﺋﻲ ﻛﻪ در ادﻳﺘﻮر ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﻪ ﺻﻮرت ام -ﻓﺎﻳﻞ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ ﺑﺪون ﻋﻼﻣﺖ >> آﻣﺪهاﻧﺪ .ﺑﺮاي اﺟﺮاي آنﻫﺎﺑﺎﻳﺪ از داﺧﻞ ادﻳﺘﻮر دﻛﻤﻪ Runﻳﺎ ﻛﻠﻴﺪ F5را زد. ﻧﺘﺎﻳﺠﻲ ﻛﻪ روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻳﺎ ﭘﻨﺠﺮهﻫﺎي دﻳﮕﺮ ﻇﺎﻫﺮ ﻣﻲﺷﻮﻧﺪ )ﺗﺤﺖ ﻧﺎم ﺧﺮوﺟﻲ( داﺧﻞ ﻛﺎدرِ ﺧﻂﭼﻴﻦ آﻣﺪهاﻧﺪ. -اﮔﺮ در ﭘﺎﻳﺎن ﺑﻌﻀﻲ از دﺳﺘﻮرﻫﺎ ﻋﻼﻣﺖ ﺳﻤﻲﻛﺎﻟﻦ )ﻧﻘﻄﻪ -وﻳﺮﮔﻮل( ﻗﺮار دﻫﻴﻢ ﻧﺘﻴﺠﻪ اﺟﺮا ﭘﺲ از زدن ﻛﻠﻴﺪ ><Enter
در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻇﺎﻫﺮ ﻧﻤﻲﺷﻮد .اﻳﻦ ﻣﻮﺿﻮع در ﻣﻮرد دﺳﺘﻮراﺗﻲ ﻧﻈﻴﺮ disp(), input(),...و دﺳﺘﻮرات ﻧﻤﺎﻳﺶ ﮔﺮاف ﺻﺪق ﻧﻤﻲﻛﻨﺪ. ﻋﻼﻣﺖ %ﺑﺮاي ﺗﻮﺿﻴﺤﺎت Commentsﻣﻲآﻳﺪ و آنﭼﻪ ﺑﻌﺪاز آن ﻧﻮﺷﺘﻪ ﺷﻮد ﺟﺰو دﺳﺘﻮرات ﻣﻨﻈﻮر ﻧﻤﻲﺷﻮد. ﺧﺮوﺟﻲﻫﺎي ﮔﺮاﻓﻴﻜﻲ در ﭘﻨﺠﺮه ﮔﺮاﻓﻴﻚ ﻇﺎﻫﺮ ﻣﻲﺷﻮﻧﺪ. -ﺗﻤﺮﻳﻦﻫﺎي ﭘﺎﻳﺎن درس از ﻧﻜﺎت ﺑﺮﺟﺴﺘﻪ ﻣﺘﻦ ﮔﻞﭼﻴﻦ ﺷﺪه ،ﻧﻘﺶ ﺧﻮدآزﻣﺎ را دارﻧﺪ .اﻧﺠﺎم آنﻫﺎ ﺿﺮوري اﺳﺖ.
ﻋﻼﺋﻢ و دورﭼﻴﻦ ﻫﺎي اﺳﺘﻔﺎده ﺷﺪه در ﻣﺘﻦ در ﻣﺜﺎلﻫﺎي اﻳﻦ ﻛﺘﺎب ﺑﺮاي ﺗﻔﻜﻴﻚ ﻗﺴﻤﺖﻫﺎ و اﻳﺠﺎد ﺧﻮاﻧﺎﺋﻲ ﺑﻴﺸﺘﺮ: اﻟﻒ -در ﻣﻘﺎﺑﻞ دﺳﺘﻮرات ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻋﻼﻣﺖ >> آﻣﺪه اﺳﺖ. ب -اﮔﺮ ﻋﻼﻣﺖ ﻓﻮق در ﻣﻘﺎﺑﻞ دﺳﺘﻮراﺗﻲ ﻧﺒﺎﺷﺪ ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ ﻛﻪ دﺳﺘﻮران ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ در ام -ﻓﺎﻳﻞ ﻧﻮﺷﺘﻪ و اﺟﺮا ﺷﺪهاﻧﺪ. ج -ﻫﻢﭼﻨﻴﻦ از دورﭼﻴﻦﻫﺎي زﻳﺮ اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ. ﺧﺮوﺟﻲ :ﻧﺘﻴﺠﻪي ﻋﻤﻠﻴﺎت در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻳﺎ ﺧﺮوﺟﻲِ ﺗﺼﻮﻳﺮي ﻳﻚ ﺑﺮﻧﺎﻣﻪ
راﻫﻨﻤﺎ:
ﻧﻜﺎت آﻣﻮزﺷﻲ داﺧﻞ ﻣﺜﺎلﻫﺎ ﻳﺎ ﺟﺰﺋﻴﺎﺗﻲ ﻛﻪ در ﻣﺘﻦ ذﻛﺮ ﻧﺸﺪهاﻧﺪ
دﻗﺖ ﻛﻨﻴﺪ :ﻣﻮاردي ﻛﻪ ﻧﻴﺎز ﺑﻪ ﺗﺄﻛﻴﺪ ﺑﻴﺸﺘﺮ دارﻧﺪ و ﺟﻠﺐ ﺗﻮﺟﻪ ﺑﻪ ﻣﻮارد ﻣﻬﻢ
15
2-1ﻣﺤﻴﻂ ﻛﺎر ﻣﺘﻠﺐ ﭘﺲ از ورود ﺑﻪ ﻣﺤﻴﻂ ﻛﺎر ﻣﺘﻠﺐ ،ﻫﺮ زﻣﺎن ﻛﻪ ﮔﺰﻳﻨﻪ Defaultرا ﻣﻄﺎﺑﻖ ﺷﻜﻞ زﻳﺮ ﻛﻠﻴﻚ ﻛﻨﻴﻢ:
ﺷﻜﻞ 1-1اﻧﺘﺨﺎب ﮔﺰﻳﻨﻪ Defaultدر ﻣﺘﻠﺐ وﻳﺮاﺳﺖ 6.5
ﺳﻪ ﭘﻨﺠﺮه ﺑﺎز ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﺑﻴﺸﺘﺮﻳﻦ ﻣﻮرد اﺳﺘﻔﺎده را دارﻧﺪ: Command Window -1ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻛﻪ ﻣﺤﻞ اﺟﺮاي ﻛﻠﻴﻪ ﻓﺮﻣﺎنﻫﺎ و ﻣﻘﺪار دﻫﻲﻫﺎي ﻓﻮري ﺑﻪ ﻣﺜﻐﻴﺮﻫﺎ ،و ﻧﻤﺎﻳﺶ ﻧﺘﺎﻳﺞ اﺟﺮا اﺳﺖ. Workspace -2ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ﻛﻪ ﻧﻤﺎﻳﺶ دﻫﻨﺪه ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه از داﺧﻞ ﭘﻨﺠﺮه ﻓﺮﻣﺎن )ﻳﺎ ﺑﻪ ﻃﺮق دﻳﮕﺮ( و ﻣﺸﺨﺼﻪﻫﺎي آنﻫﺎ اﺳﺖ. ﻣﻲﺗﻮان ﺑﻪ ﺟﺎي ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ،ﭘﻨﺠﺮه دﻳﺮﻛﺘﻮري ﺟﺎري Current Durectoryرا ﻓﻌﺎل ﻛﺮد ﻛﻪ ﻛﻠﻴﻪ ﻓﺎﻳﻞﻫﺎي ﻣﻮﺟﻮد در دﻳﺮﻛﺘﻮري ﻣﻮرد رﺟﻮع ﻣﺘﻠﺐ را ﻧﺸﺎن ﻣﻲدﻫﺪ. Command History -3ﭘﻨﺠﺮه ﻳﺎدداﺷﺖ ﻓﺮﻣﺎن ﻛﻪ ﻣﺤﻞ ﻧﮕﻪداري آنﭼﻪ ﺗﺎﻛﻨﻮن در ﭘﻨﺠﺮه ﻓﺮﻣﺎن آﻣﺪه ﻣﻲﺑﺎﺷﺪ. ﭘﻨﺠﺮهﻫﺎي ﻣﺘﻠﺐ را ﻣﻲﺗﻮان ﺑﻪ اﻧﻮاع ﺷﻜﻞﻫﺎي دلﺧﻮاه درآورد ،ﻣﺜﻼً ﺑﺎ ﻛﻠﻴﻚ ﭘﻴﻜﺎن ﻣﻮرب در ﮔﻮﺷﻪ راﺳﺖ ﻫﺮ ﭘﻨﺠﺮه ﻣﻲ- ﺗﻮان آن را ﺑﻪ ﺗﻨﻬﺎ ﭘﻨﺠﺮه ﻣﻮرد ﻣﺸﺎﻫﺪه ﺗﺒﺪﻳﻞ ﻛﺮد.ﻟﻴﻜﻦ ﻣﺎ ﻣﻌﻤﻮﻻً در ﺣﺎﻟﺖ Defaultﻛﺎر ﻣﻲﻛﻨﻴﻢ.
16
ﭘﻨﺠﺮه ﻓﺮﻣﺎن Command Window ﻣﺤﻞ اﺟﺮاي ﻛﻠﻴﻪ ﻓﺮﻣﺎنﻫﺎ و ﻣﻘﺪار دﻫﻲﻫﺎي
ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر Workspace ﻧﻤﺎﻳﺶ دﻫﻨﺪه ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه و ﻣﺸﺨﺼﻪﻫﺎي آنﻫﺎ
ﻓﻮري ،و ﻧﻤﺎﻳﺶ ﻧﺘﺎﻳﺞ اﺟﺮا
Command History
ﭘﻨﺠﺮه ﻳﺎدداﺷﺖ ﻓﺮﻣﺎن ﻣﺤﻞ ﻧﮕﻪداري آنﭼﻪ ﺗﺎﻛﻨﻮن در ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﺷﺪه
ﺷﻜﻞ 2-1ﭘﻨﺠﺮهﻫﺎي ﺣﺎﻟﺖ Defaultدر ﻣﺘﻠﺐ
ﺷﻜﻞ 3-1ﭘﻨﺠﺮه دﻳﺮﻛﺘﻮري ﺟﺎري ،دﻳﺮﻛﺘﻮري ﻣﻮرد رﺟﻮع ﻣﺘﻠﺐ
17
3-1آﻏﺎز ﻛﺎر ﺑﺎ ﻣﺘﻠﺐ ﻣﺎﺗﺮﻳﺲ
Matrix
ﻣﺘﻠﺐ ﺑﺎ ﻣﺎﺗﺮﻳﺲ ﻳﺎ ﺑﺮدار ﻛﺎر ﻣﻲﻛﻨﺪ.اﻏﻠﺐ ﻣﺘﻐﻴﺮﻫﺎ و ﻣﻘﺎدﻳﺮ آنﻫﺎ در ﻣﺘﻠﺐ ﻓﺮم ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ﺑﺎ mردﻳﻒ )ﺳﻄﺮ( و n
ﺳﺘﻮن دارﻧﺪ ،ﻛﻪ ﺑﻪ آن ﻣﺎﺗﺮﻳﺲ m×nﮔﻔﺘﻪ ﻣﻲﺷﻮد )ﻛﻪ در ﻧﺎمﮔﺬاري اﻳﻦ ﻧﺮماﻓﺰار MATrix LABoratoryﻣﺴﺘﺘﺮ اﺳﺖ( .ﻫﺮ ﻋﻀﻮ ﻣﺎﺗﺮﻳﺲ ) (Matrix Memberرا ﻋﻨﺼﺮ ﻣﺎﺗﺮﻳﺲ ﻳﺎ دراﻳﻪ ﻣﻲﮔﻮﻳﻴﻢ .ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪادي ﺳﻄﺮ )ردﻳﻒ( ،ﺗﻌﺪادي ﺳﺘﻮن ،و ﺗﻌﺪادي ﻋﻀﻮ )ﻣﺎ ﺑﻴﺸﺘﺮ ﺑﺎ اﻋﻀﺎء ﻋﺪدي ﺳﺮوﻛﺎر دارﻳﻢ( ،ﺗﺤﺖ ﻳﻚ ﻧﺎم واﺣﺪ ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮد. ﻧﺎم ﻣﺎﺗﺮﻳﺲ و ﻣﻘﺪار آن ﻫﻢزﻣﺎن در ﺧﻂ ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ و ﺑﺮﺧﻼف زﺑﺎنﻫﺎي دﻳﮕﺮ ﻧﻴﺎز ﺑﻪ اﻋﻼم ﻗﺒﻠﻲ ﻧﺎم و ﺗﻌﺪاد اﻋﻀﺎء وﺟﻮد ﻧﺪارد .ﻣﻔﻬﻮم ﻣﺎﺗﺮﻳﺲ و ﺑﺮدار ﻛﻪ ﻣﻌﺎدل ﻣﻔﻬﻮم آراﻳﻪ ﻫﺴﺘﻨﺪ ،ﻣﺎ را از ﻣﻘﺪار دﻫﻲ ﺑﻪ ﺗﻚ ﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ و ﻧﻤﺎﻳﺶ ﺗﻚ ﺑﻪ ﺗﻚ آنﻫﺎ ﻛﻪ در زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻣﻌﻤﻮﻻٌ از ﻃﺮﻗﻲ ﻣﺎﻧﻨﺪ اﺳﺘﻔﺎده از ﺣﻠﻘﻪﻫﺎي ﺗﻜﺮار اﻧﺠﺎم ﻣﻲﺷﻮد ﺑﻲ- ﻧﻴﺎز ﻣﻲﻛﻨﺪ .ﻫﺮ ﻣﺎﺗﺮﻳﺲ ﻛﺎﻣﻼً دﻳﻨﺎﻣﻴﻚ اﺳﺖ و ﭘﺲاز ﺗﻌﺮﻳﻒ ﻣﻲﺗﻮان ﻣﻘﺪار و ﺗﻌﺪاد ﺳﻄﺮ و ﺳﺘﻮن آنرا ﺗﻐﻴﻴﺮ داد. ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪي ﺑﺎ mردﻳﻒ )ﺳﻄﺮ( و nﺳﺘﻮن و pﺻﻔﺤﻪ ﻧﻴﺰ وﺟﻮد دارد ﻛﻪ ﺑﻌﺪاً ﺑﻪ آن اﺷﺎره ﺧﻮاﻫﺪ ﺷﺪ. در ﻣﺘﻠﺐ اﻧﻮاع ﻣﺎﺗﺮﻳﺲ ﻧﻈﻴﺮ ﺑﺮدار ،ﻣﺎﺗﺮﻳﺲ ﻋﺪدي ﺑﺎ اﻋﺪاد ﻣﺨﺘﻠﻂ ،ﻣﺎﺗﺮﻳﺲ ﻛﺎراﻛﺘﺮي ،ﻣﺎﺗﺮﻳﺲ ﻧﻤﺎدﻳﻦ ،ﻣﺎﺗﺮﻳﺲ ﺳﺎﺧﺘﺎري، ﻣﺎﺗﺮﻳﺲ ﺳﻠﻮﻟﻲ . . . ،ﻧﻴﺰ وﺟﻮد دارﻧﺪ.
ﺑﺮدار ﺑﺮدار ،ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﻚ ﺳﻄﺮي )ردﻳﻔﻲ( ﻳﺎ ﺗﻚ ﺳﺘﻮﻧﻲ اﺳﺖ ﻛﻪ داراي ﺗﻌﺪادي ﻋﻀﻮ )ﻣﻌﻤﻮﻻٌ ﻣﻘﺎدﻳﺮ ﻋﺪدي( ﺑﻮده و ﺗﺤﺖ ﻳﻚ ﻧﺎم واﺣﺪ ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮد .ﻣﻌﻤﻮﻻٌ ﻛﻠﻤﻪ ﺑﺮدار ﺑﻪ ﺗﻨﻬﺎﺋﻲ ﺑﺮاي ﺑﺮدار ردﻳﻔﻲ ﺑﻪ ﻛﺎر ﻣﻲرود .در ﻣﺘﻠﺐ ﺑﺮدارﻫﺎ ﻛﺎرﺑﺮد زﻳﺎدي دارﻧﺪ .ﻧﺎم ﺑﺮدار و ﻣﻘﺪار آن ﻫﻢزﻣﺎن در ﺧﻂ ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ و ﺑﺮﺧﻼف زﺑﺎنﻫﺎي دﻳﮕﺮ ﻧﻴﺎز ﺑﻪ اﻋﻼم ﻗﺒﻠﻲ ﻧﺎم و ﺗﻌﺪاد اﻋﻀﺎء وﺟﻮد ﻧﺪارد .ﻣﻔﻬﻮم ﺑﺮدار در ﻣﺘﻠﺐ ﻣﺎ را از ﻣﻘﺪار دﻫﻲ ﺑﻪ ﺗﻚ ﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ ﻛﻪ در زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻣﻌﻤﻮل اﺳﺖ ﺑﻲﻧﻴﺎز ﻣﻲﻛﻨﺪ .از ﻃﺮف دﻳﮕﺮ ﺑﺮاي رﺳﻢ ﺗﺮﺳﻴﻤﺎت ،ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺮداري ﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﺗﻨﻬﺎﺋﻲ ﻣﻘﺎدﻳﺮ روي ﻳﻚ ﻣﺤﻮر را ﭘﻮﺷﺶ دﻫﺪ. ﻫﺮ ﺑﺮدار ردﻳﻔﻲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ) 1×nﺗﻚردﻳﻔﻲ( و ﻫﺮ ﺑﺮدار ﺳﺘﻮﻧﻲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ) m×1ﺗﻚﺳﺘﻮﻧﻲ( اﺳﺖ .ﭘﺲ ﻳﻜﻲ از اﺑﻌﺎد ﻫﺮ ﻧﻮع ﺑﺮدار ﻳﻚ اﺳﺖ .ﻋﺪد ﺗﻜﻲ ﻳﺎ اﺳﻜﺎﻟﺮ ﻳﻚ ﻣﺎﺗﺮﻳﺲ 1×1اﺳﺖ.
آراﻳﻪ ،ﻣﺘﻐﻴﺮ ،ﻋﻤﻠﻴﺎت آراﻳﻪ اي ﻫﻤﺎنﮔﻮﻧﻪ ﻛﻪ در ﺳﺎﻳﺮ زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد ،آراﻳﻪ ﻳﻚ ﻧﺎم ﻛﻠﻲ ﺑﺮاي اﻧﻮاع ﻣﺎﺗﺮﻳﺲ ،ﺑﺮدار و ﻛﻼٌ ﻣﺠﻤﻮﻋﻪﻫﺎي ﻳﻚ ﺗﺎ ﭼﻨﺪﻳﻦ ﻋﻨﺼﺮي اﺳﺖ .اﻳﻦ ﻋﻨﺎﺻﺮ در ﺗﻌﺪادي ردﻳﻒ ،ﺳﺘﻮن ،و ﺻﻔﺤﻪ ﻗﺮار ﮔﺮﻓﺘﻪاﻧﺪ .در اﻳﻦ ﻣﺘﻦ ﻛﻠﻤﻪ آراﻳﻪ اﻋﻢ از ﻛﻠﻤﺎت ﻣﺎﺗﺮﻳﺲ ،ﺑﺮدار ،و ﻣﺘﻐﻴﺮ ﺑﻪ ﻛﺎر ﻣﻲرود ،و ﻛﻠﻤﺎت ﻣﺘﻐﻴﺮ و آراﻳﻪ ﻧﻴﺰ ﺑﻪ ﺟﺎي ﻫﻢ ﺑﻪ ﻛﺎر ﻣﻲروﻧﺪ. در ﻣﺘﻠﺐ ﻣﺘﻐﻴﺮِ ﺗﻚﻣﻘﺪاري )اﺳﻜﺎﻟﺮ( ﻳﻚ آراﻳﻪي ﺗﻚ ﻋﻨﺼﺮي اﺳﺖ. ﻫﻢﭼﻨﻴﻦ ﻋﻤﻠﻴﺎﺗﻲ ﻛﻪ ﺑﺮ روي ﺗﻚﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ اﻧﺠﺎم ﺷﻮد ،ﻋﻤﻠﻴﺎت آراﻳﻪاي ﻧﺎم دارد ﻛﻪ در ﻣﻘﺎﺑﻞ ﻋﻤﻠﻴﺎت ﻣﺎﺗﺮﻳﺴﻲ ﻗﺮار ﻣﻲﮔﻴﺮد )ﺷﺮح ﺑﻴﺸﺘﺮ ﺑﻌﺪاٌ ﻣﻲآﻳﺪ(.
ﺗﻌﺮﻳﻒ و ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ Aرا ﻛﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ (m = 2, n = 3)2×3ﻋﺪدي اﺳﺖ ،در ﺟﺒﺮ اﻳﻦﮔﻮﻧﻪ ﻣﻲﻧﻮﻳﺴﻴﻢ: ┌ ┐ ││1 2 3 │ = A │ ││4 5 6 └ ┘
18
ﻣﻌﺮﻓﻲ ﻣﺎﺗﺮﻳﺲ ﻓﻮق ، declarationو ﻣﻘﺪار دﻫﻲ ﻫﻢزﻣﺎن آنرا در ﻣﺘﻠﺐ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ،definitionﻣﻲ- ﮔﻮﺋﻴﻢ .ﻣﺎﺗﺮﻳﺲ ﻓﻮق دو ﺑﻌﺪي اﺳﺖ.
ﻣﺜﺎل: ﻣﺎﺗﺮﻳﺲ ﻓﻮق را در ﻣﺘﻠﺐ ﺗﻌﺮﻳﻒ ،و ﺑﻌﺪ آن را ﺑﺎ ﺗﺎﺑﻊ داﺧﻠﻲ)( ndimsﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ )ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ از )(ndims
ﺑﻪ ﻣﺒﺤﺚ ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ در ﻫﻤﻴﻦ ﻓﺼﻞ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ(. ]>> A = [1 2 3; 4 5 6 A = 1 2 3 4 5 6 )>> n = ndims(A n = 2
ﻣﺸﺎﻫﺪه ﻳﻚ ﻣﺘﻐﻴﺮ و ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺢ ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘﺪار ﻫﺮ ﻣﺘﻐﻴﺮ در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻛﺎﻓﻲ اﺳﺖ ﻧﺎم آنرا وارد ﻛﻨﻴﻢ. اﮔﺮ در ﭘﺎﻳﺎن ﻳﻚ ﺳﻄﺮ ﻋﻼﻣﺖ ﺳﻤﻲﻛﺎﻟﻦ )ﻧﻘﻄﻪ -وﻳﺮﮔﻮل( ﻗﺮار دﻫﻴﻢ ﻧﺘﻴﺠﻪ اﺟﺮا در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻇﺎﻫﺮ ﻧﻤﻲﺷﻮد .اﻣﺎ ﻣﻘﺪار در ﺣﺎﻓﻈﻪ ﻣﻲﻣﺎﻧﺪ. ﻣﺸﺨﺼﻪﻫﺎي ﻧﺎم ،ﻧﻮع )ﻋﺪدي ،ﻣﻨﻄﻘﻲ ،ﻧﻤﺎدﻳﻦ ،رﺷﺘﻪاي ،(... ،اﻧﺪازه )ﺗﻌﺪاد ردﻳﻒ و ﺳﺘﻮن( ،و ﺗﻌﺪاد ﺑﺎﻳﺖِ ﻣﺘﻐﻴﺮ)آراﻳﻪ(ﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه ،در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر )ﻓﻀﺎي ﺣﺎﻓﻈﻪ( Workspaceﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ ﻋﻼﻣﺖ درﺻﺪ %ﺑﺮاي ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺤﺎت Commentsﺑﻪ ﻛﺎر ﻣﻲرود.
ﻣﺜﺎل ﻫﺎ: وارد ﻛﺮدن ﻧﺎم ﻣﺎﺗﺮﻳﺴﻲ ﻛﻪ ﻗﺒﻼً ﺗﻌﺮﻳﻒ ﺷﺪه 3 6
2 5
>> A A = 1 4
ﺗﻌﺮﻳﻒ ﺑﺮدار ﺑﺎ ﻧﻘﻄﻪوﻳﺮﮔﻮل و ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺢ اﻳﻦ ﻣﺘﻐﻴﺮ در ﺣﺎﻓﻈﻪ ﻧﮕﻪداري ﻣﻲﺷﻮد ،اﻣﺎ ﻧﻤﺎﻳﺶ داده ﻧﻤﻲﺷﻮد >> M = [10.2 3.4 5.6]; % ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘﺪار ﻣﺘﻐﻴﺮ >> M % 5.6
3.4
M = 10.2
ﺑﺮدار -ﻫﻨﺪﺳﻲ ﺑﺮدارﻫﺎي ﻫﻨﺪﺳﻲ ﻳﺎ ﻓﻴﺰﻳﻜﻲ ،درون ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ )ﻣﺪور( داراي دو ﻣﺨﺘﺼﻪ ﺑﺰرﮔﻲ ، Magnitudeو زاوﻳﻪ ﻫﺴﺘﻨﺪ ،و درون ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ داراي دو ﻣﺨﺘﺼﻪ ﻃﻮل Xو ﻋﺮض Yﻣﻲﺑﺎﺷﻨﺪ .اﻳﻦ ﺑﺮدارﻫﺎ را دراﻳﻦ ﻣﺘﻦ ﺑﺮدار -ﻫﻨﺪﺳﻲ ﻧﺎﻣﻴﺪهاﻳﻢ. اﻳﻦ ﻧﺎمﮔﺬاري ﺑﺮاي اﻳﺠﺎد ﺗﻤﺎﻳﺰ ﻣﺎﺑﻴﻦ ﻣﻔﻬﻮم ﺑﺮدار در ﻣﺘﻠﺐ ﺑﺎ ﺑﺮدارِ ﻓﻴﺰﻳﻜﻲ ﻳﺎ ﻫﻨﺪﺳﻲ اﺳﺖ .ﮔﺎﻫﻲ از اوﻗﺎت ﻧﻴﺰ ﺑﺎ وام از ﻣﻌﺎدل اﻟﻜﺘﺮﻳﻜﻲ آن را ﻓﺎزور ﻧﺎم دادهاﻳﻢ.
آراﻳﻪ ﺳﻠﻮﻟﻲ
Cell Array
آراﻳﻪاي ﻛﻪ ﻫﺮ دراﻳﻪ آن ﻳﻚ آراﻳﻪ دﻳﮕﺮ ﺑﺎﺷﺪ ،آراﻳﻪ ﺳﻠﻮﻟﻲ Cell Arrayﻧﺎم دارد .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺪارك ﻣﺘﻠﺐ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ.
ﻣﺜﺎل: ﻳﻚ آراﻳﻪ ﺳﻠﻮﻟﻲ ﻛﻪ داراي ﺳﻪ ﻧﻮع آراﻳﻪ در ﻫﺮ ﺳﻠﻮل ﺑﺎﺷﺪ اﻳﺠﺎد ﻛﻨﻴﺪ. }]C = {logical([1 0 1 1 0]) 'Array' [1 2;3 4 ]C = [1x5 logical ''Array ][2x2 double
19
ﺗﻮاﺑﻊ اﻧﺪازه ﮔﻴﺮ ﺗﻮاﺑﻊ )( ndims(), size(), lengthو ﻧﻈﺎﺋﺮﺷﺎن را ﻛﻪ در ﺳﻨﺠﺶ ﻛﻤﻴﺖ ﻣﺎﺗﺮﻳﺲﻫﺎ ﺑﻪ ﻛﺎر ﻣﻲروﻧﺪ ،در اﻳﻦ ﻣﺘﻦ ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ ﻧﺎﻣﻴﺪهاﻳﻢ. ﺗﺎﺑﻊ )( sizeﺗﻌﺪاد ﺳﻄﺮ و ﺳﺘﻮن )و ﺗﻌﺪاد ﺻﻔﺤﻪ در ﻣﻮرد ﻣﺎﺗﺮﻳﺴﻬﺎي ﺳﻪﺑﻌﺪي( را ﻣﻲدﻫﺪ .ﺗﺎﺑﻊ )(length
ﻣﻌﺎدل))( max(sizeاﺳﺖ ﻛﻪ در ﻣﻮرد ﺑﺮدارﻫﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ را ﻛﻪ ﻫﻤﺎن ﺗﻌﺪاد ﺳﺘﻮنﻫﺎ اﺳﺖ ﻣﻲدﻫﺪ .ﺗﺎﺑﻊ )( ndimsﻣﻌﺎدل ))( length(sizeاﺳﺖ ﻛﻪ ﺑﺮاي اﺳﻜﺎﻟﺮ و ﺑﺮدار و ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي داراي ﻣﻘﺪار 2و ﺑﺮاي ﻣﺎﺗﺮﻳﺲﻫﺎي ﺳﻪ ﺑﻌﺪي داراي ﻣﻘﺪار 3اﺳﺖ. ﺑﺎﻳﺪ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ اﻧﺪازه sizeو ﻧﻮع typeﻫﺮ آراﻳﻪ در ﭘﻨﺠﺮه Workspaceﻧﺸﺎن داده ﻣﻲﺷﻮد.
ﻣﺜﺎل: ﻳﻚ ﺑﺮدار ردﻳﻔﻲ 4ﻋﻀﻮي ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ .اﻧﺪازه ،ﻃﻮل و ﺑﻌﺪ آنرا ﭼﺎپ ﻛﻨﻴﺪ. ;]>> rv = [2 -5 16 7.6 )>> size(rv ans = 1 4 )>> L = length(rv L = 4 )>> m = ndims(rv m = 2
ﻣﺘﻐﻴﺮ داﺧﻠﻲ
ans
اﮔﺮ ﺑﻪ آﺧﺮﻳﻦ ﻣﻘﺪار ﺣﺴﺎب ﺷﺪه ﻧﺎﻣﻲ ﻧﺪاده ﺑﺎﺷﻴﻢ ،در ﻣﺘﻐﻴﺮ داﺧﻠﻲ ansﻗﺮار ﻣﻲﮔﻴﺮد..
ﻣﺜﺎل ﻫﺎ: ﺑﺮدار ﺑﺪون ﻧﺎم 56.0000
3.4000
]>> [-2 3.4 56 ans = -2.0000
دراﻳﻪ واﻗﻊ در ردﻳﻒ 2ﺳﺘﻮن 3ﻣﺎﺗﺮﻳﺲ A ]>> A = [1 2 3; 4 5 6 )>> A(2,3 ans = 6
اﻋﻼم ﻧﻮع ﻣﺘﻐﻴﺮ ﻫﻤﺎنﻃﻮر ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ در ﻣﺘﻠﺐ ﻧﻴﺎزي ﺑﻪ اﻋﻼم ﻳﺎ ﻣﻌﺮﻓﻲِ declarationﻣﺘﻐﻴﺮﻫﺎ ﻗﺒﻞ از ﻛﺎرﺑﺮد آنﻫﺎ ﻧﻴﺴﺖ )ﺑﺮ ﺧﻼف ،(C++ﺑﻠﻜﻪ ﺑﻪ ﻫﻨﮕﺎم ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ ،ﻧﻮع آن ﺧﻮدﺑﻪﺧﻮد ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮد.
4-1ﻧﻮﺷﺘﻦ دﺳﺘﻮرات و ﻣﺸﺎﻫﺪه ﻧﺘﺎﻳﺞ ﭘﻨﺠﺮه ﻓﻮري و ﭘﻨﺠﺮه ﺑﺮﻧﺎﻣﻪ دﺳﺘﻮرات ﻣﺘﻠﺐ ﺑﻪ ﺻﻮرت اﺟﺮاي ﻓﻮري Immediateدر ﭘﻨﺠﺮه ﻓﺮﻣﺎن ،ﻳﺎ ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ در ﭘﻨﺠﺮه ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﻲآﻳﻨﺪ .ﻓﺎﻳﻞﻫﺎي ﺑﺮﻧﺎﻣﻪ ام -ﻓﺎﻳﻞ ﻧﺎم دارﻧﺪ )ﺷﺮح ام -ﻓﺎﻳﻞ ﺑﻌﺪاٌ ﻣﻲآﻳﺪ( .ﻋﻼﻣﺖ >> ﻧﺸﺎﻧﻪ ﺳﻄﺮ ﻓﺮﻣﺎن Command Promptاﺳﺖ .ﻫﺮ دﺳﺘﻮر در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺑﺎ ﻓﺸﺮدن ﻛﻠﻴﺪ > <Enterاﻧﺠﺎم ﻣﻲﺷﻮد.
ﺷﻜﺴﺘﻦ ﻳﻚ دﺳﺘﻮر در ﭼﻨﺪ ﺳﻄﺮ ﻣﺘﻐﻴﺮ Aﻣﺜﺎل ﻗﺒﻞ را ﻣﻲﺗﻮان ﺑﺎ ﺷﻜﺴﺘﻦ ﺳﻄﺮ ﺑﻪ اﻳﻦ ﺻﻮرت: ;>> A = [1 2 3
20
3 6
2 5
]4 5 6 A = 1 4
ﻳﺎ ﺑﻪ اﻳﻦ ﺻﻮرت زﻳﺮ ﻣﻘﺪار دﻫﻲ ﻛﺮد: 3 6
>> A = [1 2 3 ]4 5 6 A = 1 2 4 5
ﻧﻮﺷﺘﻦ ﻛﻠﻴﻪ ﻓﺮﻣﺎنﻫﺎ و ﻣﺘﻐﻴﺮﻫﺎ را ﻣﻲ ﺗﻮان ﺑﺎ ﮔﺬاﺷﺘﻦ )...ﺳﻪ ﻧﻘﻄﻪ( در ﭘﺎﻳﺎن ﺳﻄﺮ ،در ﺳﻄﺮ ﺑﻌﺪ اداﻣﻪ داد .اﻣﺎ دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﮔﺬاﺷﺘﻦ ﺳﻪ ﻧﻘﻄﻪ دﻧﺒﺎلﻫﻢ ﻗﺮار ﻣﻲدﻫﺪ ،ﻟﺬا Bﻣﺜﺎل زﻳﺮ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﻚﺳﻄﺮي )ﺑﺮدار ردﻳﻔﻲ( ﺧﻮاﻫﺪ ﺑﻮد و ﻧﻪ ﻣﺎﺗﺮﻳﺲ . 2×3
ﻣﺜﺎل: 60
50
40
>> B = [10 20 30 ... ]40 50 60 B = 10 20 30
ﻧﻮﺷﺘﻦ ﭼﻨﺪ دﺳﺘﻮر در ﻳﻚ ﺳﻄﺮ اﮔﺮ ﺑﻌﺪاز ﻫﺮ دﺳﺘﻮر ﻛﺎﻣﺎ ﺑﮕﺬارﻳﻢ ﻣﻲﺗﻮاﻧﻴﻢ دﺳﺘﻮر ﺑﻌﺪي را در اداﻣﻪ ﺑﻨﻮﻳﺴﻴﻢ ،اﻣﺎ ﻧﺘﻴﺠﻪ اﺟﺮا در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻤﺎﻳﺶ داده ﺧﻮاﻫﺪ ﺷﺪ .آوردن ﺳﻤﻲﻛﺎﻟﻦ )ﻧﻘﻄﻪ -وﻳﺮﮔﻮل( ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻧﺘﻴﺠﻪ اﺟﺮا ﻧﺸﺎن داده ﻧﺸﻮد.
ﻣﺜﺎل: >> x = 3, y = 34; z = y ^ x x = 3 z = 39304
ﺗﻔﺎوتِ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ ﻣﺘﻠﺐ در ﻧﺎمﮔﺬاري ﻣﺘﻐﻴﺮﻫﺎ ﻣﺎﺑﻴﻦ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ اﻧﮕﻠﻴﺴﻲ ﻓﺮق ﻣﻲﮔﺬارد ) Case Sensitiveاﺳﺖ(.
ﻣﺜﺎل: ;>> New = 3 >> new ??? Undefined function or variable 'new'.
ﻗﻄﻊ اﺟﺮا ﻫﺮﮔﺎه اﺟﺮاي دﺳﺘﻮرات در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻃﻮﻻﻧﻲ ﺷﺪ ،در ﺻﻮرت ﺗﻤﺎﻳﻞ ﺑﺮاي ﻗﻄﻊ اﺟﺮا >
دﺳﺘﻮر
more
اﻳﻦ دﺳﺘﻮر ﺧﺮوﺟﻲﻫﺎي ﻃﻮﻻﻧﻲ را ﺻﻔﺤﻪ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ .اﮔﺮ زﻣﺎن ﻧﻤﺎﻳﺶ ﺧﺮوﺟﻲ ﻃﻮﻻﻧﻲ ﺷﺪ ،ﺑﺮاي ﻗﻄﻊ ﻧﻤﺎﻳﺶ و ﺑﺮﮔﺸﺖ ﺑﻪ ﺧﻂ ﻓﺮﻣﺎن Ctrl+Cرا ﺑﺰﻧﻴﺪ.
ﻣﺜﺎل: )>> more on, rand(10000,1 >> more off
اﺟﺮا و ﺿﺒﻂ دﺳﺘﻮرات ﻗﺒﻠﻲ ﺗﻜﺮار دﺳﺘﻮرات ﻗﺒﻠﻲ ﻛﻪ در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﺷﺪهاﻧﺪ ،ﺑﺎ ﻛﻠﻴﺪﻫﺎي ↑ و ↓ اﻧﺠﺎم ﻣﻴﺸﻮد .ﺑﺮاي اﺟﺮاي ﻳﻚ ﺳﻄﺮ ﻛﻠﻴﺪ > <Enterو ﺑﺮاي ﺣﺬف ﻳﻚ ﺳﻄﺮ ﺗﻜﺮاري ﻧﺎدلﺧﻮاه ﻛﻠﻴﺪ > <Escﻳﺎ در اﺑﺘﺪاي ﺳﻄﺮ ﻛﻠﻴﺪ >
اﮔﺮ ﺳﻄﺮ ﻓﺮﻣﺎﻧﻲ در ﻫﺮﻳﻚ از ﭘﻨﺠﺮهﻫﺎي ﻓﺮﻣﺎن ﻳﺎ ﺗﺎرﻳﺨﭽﻪ ﻓﺮﻣﺎن ﻳﺎ ادﻳﺘﻮر ام -ﻓﺎﻳﻞ ﻣﺎرك ﺷﻮد ،ﺑﺎ راﺳﺖ ﻛﻠﻴﻚ و اﻧﺘﺨﺎب Evaluate Selectionآن دﺳﺘﻮر اﺟﺮا ﺧﻮاﻫﺪ ﺷﺪ. ﻣﻲﺗﻮان ﺑﺎ اﺟﺮاي notebookاز درون ﻣﺘﻠﺐ و ﺗﻤﻬﻴﺪات ﻣﺮﺑﻮط ﺑﻪ آن دﺳﺘﻮرات ﻣﺘﻠﺐ را ﺑﻪ داﺧﻞ Microsoft
Wordﺑﺮد. دﺳﺘﻮر زﻳﺮ ﺳﻄﻮر command windowرا در ﻓﺎﻳﻞ filenameﻧﮕﺎﻫﺪاري ﻣﻲﻛﻨﺪ: >> diary filename
ﻓﺮﻣﺎن زﻳﺮ >> diary off ﺿﺒﻂِ ﭘﻨﺠﺮه ﻓﺮﻣﺎن را ﻣﺘﻮﻗﻒ ﻣﻲﻛﻨﺪ .اﺟﺮاي ﻣﺠﺪد diaryﺳﻄﻮر را ﺑﻪ اﻧﺘﻬﺎي ﻓﺎﻳﻞ filenameاﺿﺎﻓﻪ ﻣﻲﻛﻨﺪ.
اﺟﺮاي دﺳﺘﻮرات ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ دﺳﺘﻮرات ﺳﻴﺴﺘﻤﻲ ﻧﻈﻴﺮ dir, time, dateرا ﺑﺎ ﮔﺬاﺷﺘﻦ ﻋﻼﻣﺖ ! در ﻣﻘﺎﺑﻞ آنﻫﺎ از داﺧﻞ ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ.
ﺗﺎﺑﻊ
)(eval
اﮔﺮ ﻳﻚ ﻋﺒﺎرت ﻗﺎﻧﻮﻧﻲِ ﻣﺘﻠﺐ را ﺑﻪ ﺻﻮرت رﺷﺘﻪ در داﺧﻞ دو آﭘﻮﺳﺘﺮوف ﺑﻨﻮﻳﺴﻴﻢ text macroﻧﺎم ﻣﻲﮔﻴﺮد. ﺗﺎﺑﻊ )( evalﺻﺤﺖ و ﺳﻘﻢ ﭼﻨﻴﻦ ﻋﺒﺎرﺗﻲ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ .در ﺻﻮرت ﺻﺤﺖ ،ﺗﺎﺑﻊ )( evalﻣﻘﺪارِ ﻋﺒﺎرت ﻣﻮرد ﺗﺴﺖ را ﺑﺮﻣﻲﮔﺮداﻧﺪ ،وﮔﺮﻧﻪ ﭘﻴﻐﺎم ﺧﻄﺎي ﻣﺮﺑﻮﻃﻪ را ﭼﺎپ ﻣﻲﻛﻨﺪ .ﻣﻲﺗﻮان آرﮔﻮﻣﺎن دوﻣﻲ ﺑﺮاي)( evalﻗﺮار داد ﻛﻪ ﺑﻪ ﺟﺎي ﭘﻴﻐﺎم ﺧﻄﺎ ﭼﺎپ ﺷﻮد .ﻫﺮ دو آرﮔﻮﻣﺎن )( evalﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت رﺷﺘﻪ ﺑﺎﺷﻨﺪ.
ﻣﺜﺎل ﻫﺎ: ﻋﺒﺎرت ﺻﺤﻴﺢ ;>> x = pi/6 ;'>> sx = 'sin(x)^3 + cos(x)^3 )>> eval(sx ans = 0.7745
ﻋﺒﺎرت ﻧﺎﺻﺤﻴﺢ ﺑﺎ ﭘﻴﻐﺎم ﻣﺘﻠﺐ ; ')sx1 = 'sin^2(x) + cos^2(x )>> eval(sx1 Error: Missing operator, comma, or semicolon.
ﻋﺒﺎرت ﻧﺎﺻﺤﻴﺢ ﺑﺎ ﭘﻴﻐﺎم ﻛﺎرﺑﺮ )')''>> eval(sx1,'disp(''wrong wrong
ﺳﺆال :در ﻣﺜﺎل ﻓﻮق اﮔﺮ ﻣﻘﺪار xرا از workspaceﭘﺎك و evalرا اﺟﺮا ﻛﻨﻴﻢ ﻧﺘﻴﺠﻪ ﭼﻴﺴﺖ؟ اﻣﺘﺤﺎن ﻛﻨﻴﺪ.
دﺳﺘﻮر
lasterr
دﺳﺘﻮر lasterrآﺧﺮﻳﻦ ﭘﻴﻐﺎم ﺧﻄﺎي داﺧﻠﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ.
ﻣﺜﺎل: >> lasterr ans = Error: Missing operator, comma, or semicolon.
ﺑﻠﻮك
try...catch
ﺑﻠﻮك try...catch...endﺑﺮاي ﺑﻪ دام اﻧﺪاﺧﺘﻦ ﺧﻄﺎ error trappingﺑﻪ ﻛﺎر ﻣﻲرود. 22
در زﻳﺮِ tryدﺳﺘﻮراﺗﻲ ﻣﻲآﻳﻨﺪ ﻛﻪ در ﺻﻮرت ﻋﺪم وﻗﻮع ﺧﻄﺎ ﺑﺎﻳﺪ اﺟﺮا ﺷﻮﻧﺪ ،و در زﻳﺮِ catchدﺳﺘﻮراﺗﻲ ﻣﻲآﻳﻨﺪ ﻛﻪ در ﺻﻮرت وﻗﻮع ﺧﻄﺎ ﺑﺎﻳﺪ اﺟﺮا ﺷﻮﻧﺪ .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺜﺎل ﺣﻠﻘﻪﻫﺎي ﺗﻜﺮار ﻣﺮﺟﻌﻪ ﻛﻨﻴﺪ.
ﺗﻔﺎوت دﺳﺘﻮرات ﭘﻨﺠﺮه ﻓﺮﻣﺎن و ﺑﺮﻧﺎﻣﻪ در ﭘﻨﺠﺮه ﻓﺮﻣﺎن دﺳﺘﻮر ﻓﻮراً اﺟﺮا ﻣﻲﺷﻮد ،اﻣﺎ ﻧﺴﺒﺖ ﺑﻪ ﭘﻨﺠﺮه ﻫﺎي ِ immediateﺑﻌﻀﻲ از ﻧﺮماﻓﺰارﻫﺎ اﻣﺘﻴﺎزاﺗﻲ دارد، ﻣﺜﻼً دﺳﺘﻮرات ﺣﻠﻘﻪ ،ﻳﺎ ﻓﺮﻣﺎﻧﻬﺎي دﻧﺒﺎل ﻫﻢ از درون ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻗﺎﺑﻞ اﺟﺮا ﻫﺴﺘﻨﺪ. ﺑﺮﻧﺎﻣﻪﻫﺎ در ﻓﺎﻳﻞﻫﺎﺋﻲ ﺑﻪ ﻧﺎم M-Fileﺿﺒﻂ ﻣﻲﺷﻮﻧﺪ .ﺑﺮﻧﺎﻣﻪﻫﺎﺋﻲ ﻛﻪ در آنﻫﺎ ﺗﻌﺪادي ﻓﺮﻣﺎن ﻳﻚﺟﺎ اﺟﺮا ﻣﻲﺷﻮﻧﺪ Script M-Fileو ﺑﺮﻧﺎﻣﻪﻫﺎﺋﻲ ﻛﻪ ﻳﻚ ﺗﺎﺑﻊ را ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻨﺪ Function M-Fileﻧﺎم دارﻧﺪ. اﻏﻠﺐ ﻗﻮاﻋﺪ ﻧﻮﺷﺘﺎري و اﺟﺮاﺋﻲ ﻛﻪ در ﺑﺎﻻ آﻣﺪ در ﻣﻮرد ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻧﻴﺰ ﺻﺪق ﻣﻲﻛﻨﻨﺪ.
دﺳﺘﻮرﻫﺎﺋﻲ در ﻣﻮرد ﻣﺘﻐﻴﺮﻫﺎ ﻧﺘﻴﺠﻪ اﺟﺮا
ﻧﺎم دﺳﺘﻮر whoﻧﺎم ﻣﺘﻐﻴﺮﻫﺎ را ﻣﻲدﻫﺪ
whosﻧﺎم و اﻃﻼﻋﺎت ﺑﻴﺸﺘﺮي از ﻣﺸﺨﺼﻪﻫﺎي ﻣﺘﻐﻴﺮﻫﺎ ﻣﻲدﻫﺪ clear varﻳﻚ ﻣﺘﻐﻴﺮ را ﭘﺎك ﻣﻲﻛﻨﺪ clearﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه را ﭘﺎك ﻣﻲﻛﻨﺪ clear allﺣﺎﻓﻈﻪ را ﻛﻼٌ ﭘﺎك ﻣﻲﻛﻨﺪ packﺣﺎﻓﻈﻪ را ﻣﻨﻈﻢ و ﺟﻤﻊ و ﺟﻮر ﻣﻲﻛﻨﺪ
5-1درﻳﺎﻓﺖ اﻃﻼع و راﻫﻨﻤﺎﺋﻲ از ﻣﺪارك راﻫﻨﻤﺎي ﻣﺘﻠﺐ دﺳﺘﻮرات زﻳﺮ ﺷﺎﻣﻞ ﺑﺮﺧﻲ از روشﻫﺎي اﺳﺘﻔﺎده از ﻣﺪارك ﻏﻨﻲ ﻣﺘﻠﺐ اﺳﺖ .اﺳﺘﻔﺎده ﻣﺮﺗﺐ از ﻣﺪارك راﻫﻨﻤﺎي ﻣﺘﻠﺐ ﺑﻪ ﻛﺎرﺑﺮان و داﻧﺸﺠﻮﻳﺎن ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد .اﻏﻠﺐ ﻣﺪارك راﻫﻨﻤﺎ ﺑﺎ ﻓﺮﻣﺖ PDFﻧﻴﺰ ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ ﻫﺴﺘﻨﺪ. ﻧﺘﻴﺠﻪ اﺟﺮا
ﻣﺜﺎلِ دﺳﺘﻮر
lookfor wordﺟﺴﺘﺠﻮ ﺑﺮاي ﻳﻚ ﻛﻠﻤﻪ داﺧﻞ ﻣﺘﻮن ﻣﺘﻠﺐ help randراﻫﻨﻤﺎﺋﻲ ﻳﻚ ﻋﺒﺎرت ﻳﺎ دﺳﺘﻮر ﻣﺎﻧﻨﺪ rand
type realminﻧﻤﺎﻳﺶ ﻣﺤﺘﻮاي ﻳﻚ ﺗﺎﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي ﻳﺎ ﺗﺎﺑﻊ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ در دﻳﺮﻛﺘﻮري ﺟﺎري infoاﻃﻼﻋﺎت راﺟﻊ ﺑﻪ ﻣﺘﻠﺐ [st,n]=computerاﻃﻼع راﺟﻊ ﺑﻪ ﻛﺎﻣﭙﻴﻮﺗﺮ و ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﻣﺠﺎز ﻳﻚ ﻣﺎﺗﺮﻳﺲ version, verوﻳﺮاﻳﺶِ ﻣﺘﻠﺐ doc sinدرﻳﺎﻓﺖ راﻫﻨﻤﺎ از ﭘﻨﺠﺮه MATLAB Help
helpﻧﻤﺎﻳﺶ راﻫﻨﻤﺎي ﻣﺘﻠﺐ helpwinﻧﻤﺎﻳﺶ راﻫﻨﻤﺎي ﻣﺘﻠﺐ در ﭘﻨﺠﺮه MATLAB Help
23
6-1ﺗﻤﺮﻳﻦ -1ﻳﻚ ﻣﺎﺗﺮﻳﺲ 4×3ﻋﺪدي ﺗﻌﺮﻳﻒ و ﺑﻌﺪ آن را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ. -2ﻳﻚ ﺑﺮدار ردﻳﻔﻲ ﻋﺪدي 6ﻋﻀﻮي ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ. -3ﻳﻚ آراﻳﻪ ﺳﻠﻮﻟﻲ ﻛﻪ داراي اﻧﻮاع ﻣﻨﻄﻘﻲ ،رﺷﺘﻪاي ،ﻋﺪدي ،و ﺳﻤﺒﻠﻴﻚ )ﻧﻤﺎدﻳﻦ( ﺑﺎﺷﺪ اﻳﺠﺎد ﻛﻨﻴﺪ .اﻧﺪازه ،ﻃﻮل و ﺑﻌﺪ آنرا ﭼﺎپ ﻛﻨﻴﺪ. -4دو ﺑﺮدار ﻋﺪدي و ﺣﺎﺻﻞﺟﻤﻊ آن دو را در ﻳﻚ ﺳﻄﺮ اﻳﺠﺎد ﻛﻨﻴﺪ. -5دﺳﺘﻮرات dir, time, dateرا ﺑﺎ ﮔﺬاﺷﺘﻦ ﻋﻼﻣﺖ ! در ﻣﻘﺎﺑﻞ آنﻫﺎ از داﺧﻞ ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ. -6دﺳﺘﻮرات clear var ، whos ، whoرا در ﻣﻮرد ﻣﺘﻐﻴﺮﻫﺎﺋﻲ ﻛﻪ ﺑﻪ وﺟﻮد آوردهاﻳﺪ ،اﺟﺮا ﻛﻨﻴﺪ. -7دﺳﺘﻮر lookforرا ﺑﺮاي expاﺟﺮا ﻛﻨﻴﺪ )اﮔﺮ ﻃﻮﻻﻧﻲ ﺷﺪ از Ctrl-Cﻛﻤﻚ ﺑﮕﻴﺮﻳﺪ(. -8دﺳﺘﻮر helpرا ﺑﺮاي ﭼﻨﺪ ﺗﺎﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ و ﺑﺮاي magicاﺟﺮا ﻛﻨﻴﺪ. -9دﺳﺘﻮر typeرا ﺑﺮاي realmax, realminاﺟﺮا ﻛﻨﻴﺪ. -10دﺳﺘﻮر doc tanو doc randnو helpwinرا اﺟﺮا ﻛﻨﻴﺪ. -11دﺳﺘﻮرات info, [st,n]=computer, version, verرا اﺟﺮا ﻛﻨﻴﺪ. -12ﻳﻚ دﺳﺘﻮر ﻏﻠﻂ را ﺑﺎ evalو lasterrاﻣﺘﺤﺎن ﻛﻨﻴﺪ.
24
ﻓﺼﻞ 2آﺷﻨﺎﺋﻲ ﺑﺎ ﻣﺘﻐﻴﺮﻫﺎ و ﺗﻮاﺑﻊ 1-2آﺷﻨﺎﺋﻲ ﺑﺎ اﻧﻮاع ﻣﺘﻐﻴﺮ و داده اﻧﻮاع داده در ﻣﺘﻠﺐ دادهﻫﺎي ﻣﺨﺘﻠﻔﻲ وﺟﻮد دارﻧﺪ از ﺟﻤﻠﻪ :دادهﻫﺎي ﻋﺪدي ﻛﻪ ﺑﻴﺸﺘﺮ ﺑﻪ آنﻫﺎ ﺧﻮاﻫﻴﻢ ﭘﺮداﺧﺖ ،دادهﻫﺎي ﻛﺎراﻛﺘﺮي و ﻣﻨﻄﻘﻲ ﻛﻪ در واﻗﻊ ﻧﻮﻋﻲ داده ﻋﺪدي ﻫﺴﺘﻨﺪ .ﻣﺎﺗﺮﻳﺲ ﺳﻠﻮﻟﻲ cell matrixﻛﻪ دادهﻫﺎﺋﻲ از اﻧﻮاع ﻣﺨﺘﻠﻒ را ﻧﮕﻪ- داري ﻣﻲﻛﻨﺪ ،ﻣﺎﺗﺮﻳﺲ ﺳﺎﺧﺘﺎري ﻛﻪ ﻣﺎﺗﺮﻳﺲﻫﺎﺋﻲ از اﻧﻮاع ﻣﺨﺘﻠﻒ را ﻧﮕﻪداري ﻣﻲﻛﻨﺪ، inline ، ... ، function_handle
دادهﻫﺎي ﻋﺪدي ،و دﺳﺘﻮر
)(isa
ﺑﻪ ﻋﻠﺖ اﻳﻦﻛﻪ ﻣﺘﻠﺐ ﻳﻚ ﻧﺮماﻓﺰار ﻣﻬﻨﺪﺳﻲ اﺳﺖ ،دادهﻫﺎي ﻋﺪدي در آن اﻫﻤﻴﺖ ﺧﺎﺻﻲ دارﻧﺪ .ﭘﻴﺶﻓﺮض ﻣﺘﻠﺐ اﻳﻦ ﮔﻮﻧﻪ اﺳﺖ ﻛﻪ ﻫﺮ ﻣﺘﻐﻴﺮ ﻋﺪدي را ﺑﻪ ﻫﻨﮕﺎم ورود )ﻣﻌﺮﻓﻲ ،ﻳﺎ اﻋﻼم ﻧﺎم و ﻣﻘﺪار ﻫﻢزﻣﺎن( ،ﺑﺎ دﻗﺖ اﻓﺰوده )ﻣﻀﺎﻋﻒ( double
در ﺣﺎﻓﻈﻪ ﻧﮕﻪداري ﻣﻲﻛﻨﺪ .دﺳﺘﻮر )( isaﻧﻮع ﻣﺘﻐﻴﺮ ﻳﺎ داده را اﻣﺘﺤﺎن ﻣﻲﻛﻨﺪ ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ از اﻧﻮاع داده در ﻣﺘﻠﺐ help datatypesرا اﺟﺮا ﻛﻨﻴﺪ .ﻣﺸﺨﺼﻪﻫﺎي ﺑﻌﻀﻲ از اﻧﻮاع ﻋﺪدي در ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ. ﻧﺎم
دﺳﺘﻮر ﺗﺒﺪﻳﻞ ﻧﻮع ﺟﺎ در ﺣﺎﻓﻈﻪ )ﺑﺎﻳﺖ( ﺗﻌﺪاد ارﻗﺎم ﺑﺎ ﻣﻌﻨﻲ ﺑﻌﺪاز ﻣﻤﻴﺰ
دﻗﺖ ﻣﻀﺎﻋﻒ double
)(double
8
15
دﻗﺖ ﺳﺎده * single
)(single
4
7
)(int16
2
N/A
)(int8
1
N/A
)(logical
1
N/A
)(char
1
N/A
ﺻﺤﻴﺢ ﺑﺰرگ ** long integer ﺻﺤﻴﺢ ﻛﻮﭼﻚ *** short integer ﻣﻨﻄﻘﻲ logical
ﻛﺎراﻛﺘﺮي **** character
ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن
single
دﻗﺖ ﺳﺎده از ﻟﺤﺎظ ﺑﺎزه ﻣﺤﺪودﺗﺮ از دﻗﺖ ﻣﻀﺎﻋﻒ اﺳﺖ. اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع singleﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ .اﻣﺎ اﮔﺮ ﻣﺎﻳﻞ ﺑﺎﺷﻴﻢ ﻣﺜﻼً ﻋﻤﻞ ﺟﻤﻊ را ﺑﺮاي ﻧﻮع single
ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ ،ﺑﺎﻳﺪ ﻳﻚ ﻣﺘﺪ )ﺗﺎﺑﻊ( ﺑﺮاي اﻳﻦ ﻛﺎر ﺗﻌﺮﻳﻒ و در دﻳﺮﻛﺘﻮري ) @singleﻣﻨﺸﻌﺐ از دﻳﺮﻛﺘﻮري (workﻗﺮار دﻫﻴﻢ .ﺑﺮاي ﺗﻮﺿﻴﺢ ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺜﺎل ﻓﺼﻞ ﺗﻮاﺑﻊ ﻛﺎرﻳﺮ -ﺗﻌﺮﻳﻒ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ.
ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن
int
ﺗﺒﺪﻳﻞ ﺑﻪ ﻫﺮ ﻧﻮع ﻋﺪد ﺻﺤﻴﺢ ارﻗﺎم ﺑﻌﺪاز ﻣﻤﻴﺰ را ﺣﺬف ﻣﻲﻛﻨﺪ. ﺑﺎزه ﻋﺪد ﺻﺤﻴﺢِ ﻫﺸﺖ ﺑﻴﺘﻲ -128ﺗﺎ +127اﺳﺖ. اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع intﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ .اﮔﺮ ﻣﺎﻳﻞ ﺑﺎﺷﻴﻢ ﻣﺜﻼً ﻋﻤﻞ ﺿﺮب را ﺑﺮاي ﻧﻮع intﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ، ﺑﺎﻳﺪ ﺑﺎ روﺷﻲ ﻣﺸﺎﺑﻪ آنﭼﻪ در ﻣﻮرد singelآﻣﺪ ﻋﻤﻞ ﻛﻨﻴﻢ.
ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن charو ﺗﺮﻛﻴﺐ اﻧﻮاع داده ﻛﺎراﻛﺘﺮي در ﻣﺤﺪوده اﺳﻜﻲ ﻣﻌﺎدل ﻋﺪد ﺻﺤﻴﺢ ﻫﺸﺖ ﺑﻴﺘﻲ اﺳﺖ. در ﺗﺮﻛﻴﺐ ﻛﺎراﻛﺘﺮ ،ﻣﻨﻄﻖ ،و ﻋﺪد ،ﺑﺮﺗﺮي ﺑﺎ ﻋﺪد ﺑﻮده و ﺣﺎﺻﻞ از ﻧﻮع ﻋﺪدي ﺧﻮاﻫﺪ ﺑﻮد. 25
ﻣﺜﺎل ﻫﺎ: داده اﻋﺸﺎري double ﺑﺮاي ﻧﻤﺎﻳﺶ ارﻗﺎم ﺑﻴﺸﺘﺮي از ﻳﻚ ﻋﺪد >> format long e % )>> e = exp(1 ﺑﺮاي ﺑﻪ دﺳﺖ آوردن ﻋﺪد ﻧﭙﺮي از ﺗﺎﺑﻊ ﻛﺘﺎﺑﺨﺎﻧﻪاي )( expاﺳﺘﻔﺎده ﻛﺮدهاﻳﻢ % e = 2.718281828459046e+000 )'>> isa(e,'double ans = 1 ))>> pi, 4*atan(1), imag(log(-1 ans = 3.141592653589793e+000 ans = 3.141592653589793e+000 ans = 3.141592653589793e+000
داده اﻋﺸﺎري single )>> y = single(e y = 2.718281745910645e+000 )'>> isa(y,'single ans = 1
ﻧﻮع singleﻋﺪد اﻋﺸﺎري اﺳﺖ ﻛﻪ ﺗﺎ ﻫﻔﺖ رﻗﻢ ﺑﻌﺪاز ﻣﻤﻴﺰ دﻗﻴﻖ اﺳﺖ ،ﻟﺬا ﻧﻤﺎﻳﺶ آن ﻓﻘﻂ ﺗﺎ رﻗﻢ ﻫﻔﺘﻢ اﻋﺘﺒﺎر دارد ،و ارﻗﺎم ﺑﻌﺪاز آن ﻓﺎﻗﺪ اﻋﺘﺒﺎر ﻫﺴﺘﻨﺪ )ﺑﺎ ﻧﻤﺎﻳﺶ eﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ(. ﻋﻤﻠﻴﺎت ﺑﺎ ﻧﻮع single اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع singleﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ. )>> si1 = single(2.2), si2 = single(3.5 si1 = 2.2000 si2 = 3.5000 >> si1 * si2 * >== ??? Error using Function '*' is not defined for values of class 'single'.
اﻧﻮاع اﻋﺪاد ﺻﺤﻴﺢ ﻃﺒﻖ ﭘﻴﺶﻓﺮض ﻣﺘﻠﺐ ﺑﻪ ﺻﻮرت ﻋﺪد اﻋﺸﺎري ﺑﺎ دﻗﺖ اﻓﺰوده ﻧﮕﻪداري ﻣﻲﺷﻮد %
>> format ;>> x1 = 125.6
)>> ix1 = int8(x1 ix1 = 125 )'>> isa(ix1,'int8 ans = 1 )>> ix2 = int16(x1 ix2 = 125 )'>> isa(ix2,'int16 ans = 1
ﻋﻤﻠﻴﺎت ﺑﺎ ﻧﻮع int اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع intﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ. )>> it1 = int16(14.4), it2=int16(12.3 it1 = 14 it2 = 12 >> it1 + it2 ??? Error using ==> + Function '+' is not defined for values of class 'int16'.
26
داده ﻛﺎراﻛﺘﺮي و ﺗﺮﻛﻴﺐ اﻧﻮاع >> x = 66; % double >> cx = char(x) % character cx = B در ﺗﺮﻛﻴﺐ ﻛﺎراﻛﺘﺮ ،ﻣﻨﻄﻖ ،و ﻋﺪد ،ﺣﺎﺻﻞ ﻋﺪدي اﺳﺖ >> ar = 'A' + logical(1) + 1.3 % var = 67.3000
داده ﻣﻨﻄﻘﻲ >> t = [0 1]; % double )>> tL = logical(t tL = 0 1
ﻣﺸﺎﻫﺪه در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر دادهﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه در ﻣﺤﻴﻂ ﻣﺘﻠﺐ در ﻓﻀﺎي ﻛﺎر )ﻣﺸﺎﺑﻪ ﺷﻜﻞ (1-2ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ .ﻟﺬا ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد ﻫﻤﻮاره ار اﻧﺘﺨﺎب Viewاز ﻣﻨﻴﻮي اﺻﻠﻲ ،ﭘﻨﺠﺮه Workspaceرا ﺗﻴﻚ ﺑﺰﻧﻴﺪ ﺗﺎ ﺑﺘﻮاﻧﻴﺪ ﻣﺸﺨﺼﻪﻫﺎي ﻣﺘﻐﻴﺮﻫﺎي ﺧﻮد را در ﻓﻀﺎي ﺣﺎﻓﻈﻪ ﻣﺸﺎﻫﺪه ﻧﻤﺎﺋﻴﺪ .اﮔﺮ ﺑﻪ روي ﻳﻚ ﻣﺘﻐﻴﺮ در ﭘﻨﺠﺮه Workspaceﻛﻠﻴﻚ-ﻛﻠﻴﻚ ﻛﻨﻴﺪ ،دﺳﺖرﺳﻲ ﺑﻴﺶﺗﺮي ﺑﻪآن ﭘﻴﺪا ﻛﺮده ،ﺣﺘﻲ ﻣﻲﺗﻮاﻧﻴﺪ آن را ادﻳﺖ ﻛﻨﻴﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(.
ﺷﻜﻞ 1-2
ﻣﺘﻐﻴﺮﻫﺎي داﺧﻠﻲ ﻳﺎ ﺗﻮﻛﺎر ﻣﺘﻠﺐ ﺑﻌﻀﻲ از ﻣﺘﻐﻴﺮﻫﺎ ﻛﻪ در داﺧﻞ ﻣﺘﻠﺐ ﭘﻴﺶ -ﺗﻌﺮﻳﻒ ﺷﺪهاﻧﺪ ،در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ: ﻧﺎم
ﻣﻘﺪار )ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﻣﻦ(
ﺗﻌﺮﻳﻒ ansﻣﺘﻐﻴﺮ داﺧﻠﻲ ﻛﻪ
آﺧﺮﻳﻦ ﻣﻘﺪار ﺣﺴﺎب ﺷﺪه
آﺧﺮﻳﻦ ﻣﻘﺪار ﺣﺴﺎب ﺷﺪه را ﻧﮕﻪ ﻣﻲدارد )pow2(1,-52 epsﻓﺎﺻﻠﻪ ﺑﻴﻦ 1و ﺑﺰرگﺗﺮﻳﻦ ﻋﺪد اﻋﺸﺎري ﺑﻌﺪ از آن )2^(-52 2.220446049250313e-016 1.797693134862316e+308 realmaxﺑﺰرگﺗﺮﻳﻦ ﻋﺪد ﻣﻤﻜﻦ ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ
realminﻛﻮﭼﻚﺗﺮﻳﻦ ﻋﺪد ﻣﻤﻜﻦ ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ
)4*atan(1 ))imag(log(-1 3.141592653589793e+000
piﻋﺪد ﭘﻲ Inf, inf NaN,nan
2.225073858507201e-308
Infinityﻧﺘﻴﺠﻪ ﺗﻘﺴﻴﻢ ﻋﺪد ﺑﺮ ﺻﻔﺮ Not a Numberﺗﻘﺴﻴﻢ infﺑﺮ infو ﺻﻔﺮ ﺑﺮ ﺻﻔﺮ
n * ﺗﺎﺑﻊ ) pow2(m,nﻣﻌﺎدل اﺳﺖ ﺑﺎ . m × 2
27
دﺳﺘﻮر ﻓﺮﻣﺖ
format
دﺳﺘﻮر formatﻓﻘﻂ روش ﻧﻤﺎﻳﺶ اﻋﺪاد در ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ ،و ﺗﺄﺛﻴﺮي در دﻗﺖ ﻧﮕﻪداري اﻋﺪاد در ﺣﺎﻓﻈﻪ ﻧﺪارد .ﻓﻘﻂ اﻋﺪاد ﺻﺤﻴﺢ ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ و ﻧﻤﺎﻳﺶ در ﻣﺒﻨﺎي ﺷﺎﻧﺰده ﻫﺴﺘﻨﺪ ،ﻟﺬا ﻫﺮ ﻋﺪد را ﺑﺎﻳﺪ اﺑﺘﺪا ﺑﻪ ﻋﺪد ﺻﺤﻴﺢ ﺗﺒﺪﻳﻞ و ﺳﭙﺲ آنرا ﺑﺎ ﻓﺮﻣﺖ ﻫﮕﺰ ﻧﻤﺎﻳﺶ داد. در ﺟﺪول زﻳﺮ ﭼﻨﺪ ﻧﻮع روش ﻧﻤﺎﻳﺶ اﻋﺪاد آﻣﺪه اﺳﺖ ،ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ help formatرا اﺟﺮا ﻛﻨﻴﺪ. ﻧﺎم ﻓﺮﻣﺖ ﺑﺎﻧﻜﻲ )ﻓﻘﻂ ﺑﺮاي اﻋﺪاد ﺣﻘﻴﻘﻲ( ﻓﺮﻣﺖ ﻛﻮﺗﺎه ﻓﺮﻣﺖ ﺑﻠﻨﺪ ﻓﺮﻣﺖ ﺑﻠﻨﺪِ ﻧﻤﺎﺋﻲ ﻓﺮﻣﺖ ﻣﺒﻨﺎي ﺷﺎﻧﺰده )ﻓﻘﻂ ﺑﺮاي اﻋﺪاد ﺻﺤﻴﺢ( ﻧﻤﺎﻳﺶ ﺑﻪ ﺻﻮرت ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ
ارﻗﺎم ﺑﻌﺪ از ﻧﻘﻄﻪ -اﻋﺸﺎر
دﺳﺘﻮر format bank
2
format format short format long
4 14
format long e
15
format hex
N/A
format rational
N/A
ﻣﺜﺎل ﻫﺎ: ارزش ﻣﺤﺎﺳﺒﺎﺗﻲ eps ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻳﻦﻛﻪ دﺳﺘﻮر format long eﺧﺮوﺟﻲ را ﺑﺎ ﺗﻌﺪاد ارﻗﺎم زﻳﺎد و ﺑﻪ ﺻﻮرت ﻧﻤﺎﺋﻲ ﭼﺎپ ﻣﻲﻛﻨﺪ. 1 - epsرا ﺑﺎ اﻳﻦ ﻓﺮﻣﺖ ﻧﻤﺎﻳﺶ دﻫﻴﺪ. >> format long e >> a = 1 - eps a = 9.999999999999998e-001
ارزش ﻣﺤﺎﺳﺒﺎﺗﻲ realmin ﺑﺎ ﻓﺮﻣﺖ ﻓﻮق ﻣﻘﺪار epsو realmin + epsرا ﻧﻤﺎﻳﺶ دﻫﻴﺪ. >> eps ans = 2.220446049250313e-016 >> realmin + eps ans = 2.220446049250313e-016
ﻫﺮ دو ﻣﻘﺪار ﻣﺴﺎوي ﻫﺴﺘﻨﺪ ،ﻟﺬا ﻧﺘﻴﺠﻪ ﻣﻲﮔﻴﺮﻳﻢ ﻛﻪ ﻛﻮﭼﻚﺗﺮﻳﻦ ﻋﺪدي ﻛﻪ ارزش ﻣﺤﺎﺳﺒﺎﺗﻲ دارد epsاﺳﺖ. ﻣﺒﻨﺎي ﺷﺎﻧﺰده ;)>> ix = int8(125 >> format hex >> ix ix1 = 7d
ﻓﺮﻣﺖ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ >> format rational >> pi ans = 355/113 >> format
28
ﺿﺮﻳﺐ در ﻧﻤﺎﻳﺶ اﻋﺪاد در ﺻﻮرت دور ﺑﻮدن ﻣﻘﺪار ﻋﻨﺎﺻﺮ ﻳﻚ ﺑﺮدار از ﻫﻢ ،اﻋﺪاد ﺑﺎ ﺿﺮﻳﺒﻲ ﺑﻪ ﻧﺎم scale factorدر ﻣﻘﺎﺑﻠﺸﺎن ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ ،ﻛﻪ ﺑﺎﻳﺴﺘﻲ اﻳﻦ ﺿﺮﻳﺐ را در ﻋﺪد ﺿﺮب ﻛﺮد.
ﻣﺜﺎل: 0.00000001
>> format long ]>> x = [1e6 1e7 1e-1 * x = 1.0e+007 0.100000000 ↑ scale factor
1.00000000
2-2ﻋﻤﻠﮕﺮﻫﺎ ﻋﻤﻠﮕﺮﻫﺎي آراﻳﻪ اي اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ ﺑﺮ روي آراﻳﻪﻫﺎي ﻣﻮرد ﻋﻤﻞ ﺑﻪ ﺻﻮرت ﻋﻨﺼﺮ ﺑﻪ ﻋﻨﺼﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ و در ﻣﻘﺎﺑﻞ ﻋﻤﻠﮕﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ ﻗﺮار دارﻧﺪ ﻛﻪ ﺗﻌﺎرﻳﻒ ﺧﺎص ﺧﻮد را دارﻧﺪ .ﺟﻤﻊ و ﺗﻔﺮﻳﻖ آراﻳﻪاي و ﻣﺎﺗﺮﻳﺴﻲ ﻳﻚﺳﺎن ﻫﺴﺘﻨﺪ .ﻣﺎﺗﺮﻳﺲﻫﺎ ﻳﺎ ﺑﺮدارﻫﺎﺋﻲ ﻛﻪ در ﻋﻤﻞ آراﻳﻪاي ﻣﺸﺎرﻛﺖ دارﻧﺪ ﺑﺎﻳﺪ ﻫﻤﺴﺎن ﺑﺎﺷﻨﺪ. ﻋﻤﻠﮕﺮ ﺗﺮاﻧﻬﺎد Transposeﺑﺎ ﻋﻼﻣﺖ آﭘﻮﺳﺘﺮوف ،ﺟﺎي ﺳﺘﻮن و ردﻳﻒ ﻣﺎﺗﺮﻳﺲ را ﻋﻮض ﻣﻲﻛﻨﺪ ،و در ﻣﻮرد ﺑﺮدارﻫﺎ ﺑﺮدار ردﻳﻔﻲ را ﺑﻪ ﺑﺮدار ﺳﺘﻮﻧﻲ )و ﺑﺎﻟﻌﻜﺲ( ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ.اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ. ﺟﻤﻊ ﺗﻔﺮﻳﻖ ﺗﻮان ﺿﺮب ﺗﻘﺴﻴﻢ )ﻣﻌﻤﻮﻟﻲ( ﺗﻘﺴﻴﻢ راﺳﺖ ﺑﻪ ﭼﭗ ﺗﺮاﻧﻬﺎد Transpose +
-
^.
*.
./
\.
'
ﻣﺜﺎل ﻫﺎ: ﺿﺮب و ﺗﻘﺴﻴﻢ آراﻳﻪاي
4.0000 0.2500
;]>> a = [2 4 8 ;]>> b = [3 2 2 >> a .* b ans = 6 8 16 >> a ./ b ans = 0.6667 2.0000 >> ar = a .\ b ar = 1.5000 0.5000
ﺗﺮاﻧﻬﺎد )ﺗﺮاﻧﺴﭙﻮز( ' ]>> a = [2 3 -4.5 '>> at = a at = 2.00 3.00 -4.50 ;>> b = 0:30:180 ]')>> table = [b' sin(b*pi/180 table = 0 0 30.000 0.500 60.000 0.866 90.000 1.000 120.000 0.866 150.000 0.500 180.000 0.000
در ﻣﺜﺎل ﻓﻮق tableﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻋﺪدي اﺳﺖ و زواﻳﺎ و ﺳﻴﻨﻮس زواﻳﺎي ﺑﻴﻦ ﺻﻔﺮ و 180درﺟﻪ را ﻧﮕﻪﻣﻲدارد. 29
اوﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ ﺗﺮاﻧﻬﺎد ﭘﺮاﻧﺘﺰ
اوﻟﻮﻳﺖ
ﺗﻮان ﺿﺮب و ﺗﻘﺴﻴﻢ ﺟﻤﻊ و ﺗﻔﺮﻳﻖ ﻛﺎﻟﻦ ﭼﭗ ﺑﻪ راﺳﺖ ﭼﭗ ﺑﻪ راﺳﺖ
اوﻟﻮﻳﺖ در ﺻﻮرت ﻫﻢراﻫﻲ
3-2ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي ﻳﻜﻲ از ﻗﺎﺑﻠﻴﺖﻫﺎي ﻣﻬﻢ ﻣﺘﻠﺐ داﺷﺘﻦ ﺗﻌﺪاد ﻣﻌﺘﻨﺎﺑﻬﻲ ﺗﻮاﺑﻊ ﺗﻮﺳﺎﺧﺖ built in functionsﻳﺎ ﺗﻮاﺑﻊ داﺧﻠﻲ ﻳﺎ ﺗﻮاﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي اﺳﺖ ،ﻛﻪ ﻧﻴﺎزﻫﺎي ﮔﻮﻧﺎﮔﻮن اﻧﻮاع ﻛﺎرﺑﺮان را ﻋﻤﺪﺗﺎٌ ﺑﺮآورده ﻣﻲﺳﺎزﻧﺪ .ﻣﻌﺮﻓﻲ ﭼﻨﺪ ﺗﺎﺑﻊ در زﻳﺮ آﻣﺪه:
ﺗﻮﻟﻴﺪ ﻋﺪد ﺗﺼﺎدﻓﻲ ﺗﺎﺑﻊ ) rand(m,n,pﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ pﺻﻔﺤﻪاي ﺑﺎ ﺻﻔﺤﺎﺗﻲ داراي mردﻳﻒ و nﺳﺘﻮن ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ .ﺑﺮاي اﻳﺠﺎد Nﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﻴﻦ MinNو MaxNاز ﻓﺮﻣﻮل زﻳﺮ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ: rd = round((MaxN - MinN) * rand(1, N))+ MinN
ﻣﺜﺎل ﻫﺎ: ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ دو ﺻﻔﺤﻪاي 0.1763 0.4057 0.0579 0.3529
0.9355 0.9169 0.8132 0.0099
)>> B = rand(2,3,2 B(:,:,1) = 0.9218 0.7382 B(:,:,2) = 0.4103 0.8936
ﺑﺮدار ﻋﺪدي ﺑﺎ nﻋﻨﺼﺮ ﺗﺼﺎدﻓﻲ 0.2140
0.6435
در ﻣﺜﺎل ﻓﻮق ﻣﺎﺗﺮﻳﺴﻲ ﺑﺎ
0.4387
0.4983
) p = 1ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ،ﺗﻚ ﺻﻔﺤﻪ(
)>> d1 = rand(1,6 d1 = 0.9901 0.7889
) m = 1ﺗﻚ ردﻳﻒ(
6) n = 6ﺳﺘﻮن( ﺗﻮﻟﻴﺪ ﻣﻲﺷﻮد. ﺑﺮدار ﻋﺪدي ﺑﺎ nﻋﻨﺼﺮ ﺗﺼﺎدﻓﻲ ،و ﺗﻌﻴﻴﻦ ﺑﺰرﮔﺎي ﻫﺮ ﻋﻀﻮ >> rd = round(9 * rand(1, 6))+ 1 rd = 4 10 8 5 8
3
ﺗﻮﻟﻴﺪ آراﻳﻪ ﺑﺎ ﺗﻜﺮار آراﻳﻪ دﻳﮕﺮ ﺗﺎﺑﻊ ) B = repmat(A,M,Nآراﻳﻪ Aرا Mﺑﺎر اﻓﻘﻲ و Nﺑﺎر ﻋﻤﻮدي ﺗﻜﺮار ﻛﺮده و در آراﻳﻪ Bﻗﺮار ﻣﻲدﻫﺪ.
ﻣﺜﺎل: ﻳﻚ ﺑﺮدار ﺑﺎ ده ﻋﻀﻮ ﻣﺘﻨﺎوب ﺻﻔﺮ وﻳﻚ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ.
1
0
0
1
0
1
;]>> A = [1 0 )>> B = repmat(A, 1, 5 B = 1 0 1 0
ﺗﻮاﺑﻊ ﺗﺤﻠﻴﻞ داده ﻫﺎ ﺑﺮﺧﻲ از ﺗﻮاﺑﻊ ﻛﻪ ﺟﻬﺖ ﺗﺤﻠﻴﻞ آﻣﺎري ﻣﺠﻤﻮﻋﻪاي از دادهﻫﺎ ﺑﻪ ﻛﺎر ﻣﻴﺮوﻧﺪ در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ. ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻓﺼﻞ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺜﺎلِ ﺗﺤﻠﻴﻞ آﻣﺎري ﻧﻤﺮات داﻧﺸﺠﻮﻳﺎن ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ. ﻧﺎم ﺗﺎﺑﻊ ﺧﺮوﺟﻲ ﺗﺎﺑﻊ 30
)(max
)(min
)(mean
ﻋﻨﺼﺮ ﻣﺎﻛﺰﻳﻤﻢ ﻋﻨﺼﺮ ﻣﻲﻧﻴﻤﻢ ﻣﻘﺪار ﻣﻴﺎﻧﮕﻴﻦ ﻋﻨﺎﺻﺮ
)(hist
ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر
ﻧﺎم ﺗﺎﺑﻊ
)(std
)(sort
)(sum
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ
ﻣﻘﺪار اﻧﺤﺮاف ﻣﻴﺎﻧﻪ ﻋﻨﺎﺻﺮ
ﻣﺮﺗﺐﺳﺎزي ﻋﻨﺎﺻﺮ
ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ
ﺗﻮاﺑﻊ زﻣﺎﻧﻲ ﺟﺪول زﻳﺮ ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ زﻣﺎﻧﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ: ﺷﺮح
دﺳﺘﻮر ticﺷﺮوع ﺗﺎﻳﻤﺮ
tocﻧﺸﺎن دﻫﻨﺪه زﻣﺎن ﺗﺎﻳﻤﺮ clockروز و ﺳﺎﻋﺖ ) etime(t1,t2ﻓﺎﺻﻠﻪ ﺑﻴﻦ t1و t2
cputimeزﻣﺎن CPUﺑﻌﺪ از ﺷﺮوع ﻣﺘﻠﺐ dateﺗﺎرﻳﺦ روز calendarﺗﻘﻮﻳﻢ ﻣﺎه ﺟﺎري ) calendar(yyyy,mmﺗﻘﻮﻳﻢ ﺳﺎل و ﻣﺎه ﻣﻌﻴﻦ
ﻣﺜﺎل ﻫﺎ: ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺑﻴﻦ ﻧﻮﺷﺘﻦ ticو toc >> tic >> toc elapsed_time = 2.0330
ﻧﻤﺎﻳﺶ ﺗﺎرﻳﺦ ،روز و ﺳﺎﻋﺖ )>> fix(clock ﺑﺮاي ﻧﻤﺎﻳﺶ واﺿﺢﺗﺮ از ﺗﺎﺑﻊ )( fixاﺳﺘﻔﺎده ﻛﺮدهاﻳﻢ% . 33
8
26
11
ans = 2002
5
ﻧﻤﺎﻳﺶ ﺗﺎرﻳﺦ ﻛﺎﻣﭙﻴﻮﺗﺮ >> date ans = 26-May-2002
ﺗﻮاﺑﻊ ﺧﺎص ﻧﻤﻮﻧﻪﻫﺎﺋﻲ از ﺗﻮاﺑﻊ ﭘﻴﺸﺮﻓﺘﻪ رﻳﺎﺿﻲ در زﻳﺮ آﻣﺪهاﻧﺪ: ﺗﺎﺑﻊ ﻟﮋاﻧﺪر
ﺗﺎﺑﻊ ﺑﺴﻞ
ﺗﺎﺑﻊ ﮔﺎﻣﺎ
t x −1 e −t dt
∞
∫0
= )Γ( x
ﺗﺎﺑﻊ ﺑﺘﺎ
) Γ ( x )Γ ( y ) Γ( x + y
)beta(x
)gamma(x) bessel(n,x) legendre(n,x ﺑﺮاي ﻛﺴﺐ اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد ﺗﻮاﺑﻊ ﺧﺎص از helpﻣﺮﺑﻮط ﺑﻪ آن ﺗﺎﺑﻊ اﺳﺘﻔﺎده ﻛﻨﻴﺪ.
ﺗﻮاﺑﻊ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ ﺗﻮاﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي ﻣﺘﻠﺐ ﺑﺎ ﺗﻤﺎم ﮔﺴﺘﺮدﮔﻲ ﺗﻤﺎم ﻧﻴﺎزﻫﺎ را ﺑﺮآورده ﻧﻤﻲﻛﻨﻨﺪ ،ﻟﺬا ﻛﺎرﺑﺮان ﻣﻲﺗﻮﻧﻨﺪ ﺗﻮاﺑﻊ ﻣﻮرد ﻧﻴﺎز و ﺧﺎص ﺧﻮد را در ﻓﺎﻳﻞﻫﺎﺋﻲ ﺑﻪ ﻧﺎم Function M-Fileﺗﻌﺮﻳﻒ و ﻣﺸﺎﺑﻪ ﺑﺎ ﺗﻮاﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي از آنﻫﺎ اﺳﺘﻔﺎده ﻛﻨﻨﺪ .ﺷﺮح ﺑﻴﺸﺘﺮ در ﻓﺼﻮل ﺑﻌﺪ ﻣﻲآﻳﺪ.
31
ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ رﻳﺎﺿﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي ﺗﺎﺑﻊ
ﻧﺎم
)abs(x
ﻗﺪر ﻣﻄﻠﻖ
)sqrt(x
رﻳﺸﻪي دوم x
)exp(x
e
)log(x
ﻟﮕﺎرﻳﻢ ﻃﺒﻴﻌﻲ ﺗﻮاﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ
)log10(x log10x )sin(x), cos(x), tan(x),cot(x
ﺗﻮاﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ ﻣﻌﻜﻮس
)asin(y), acos(y * ]atan(y) [-π/2, π/2 * ]atan2(y,x) [-π, π
ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ x
** )round(x
ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ xدر ﺟﻬﺖ ﺻﻔﺮ
** )fix(x
ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ xدر ﺟﻬﺖ ∞+
** )ceil(x
ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ xدر ﺟﻬﺖ ∞-
** )floor(x
ﺑﺎﻗﻲﻣﺎﻧﺪه ﺗﻘﺴﻴﻢ ،ﺑﺎ ﻋﻼﻣﺖ ﻣﻮاﻓﻖ x
*** )rem(x,y
ﺑﺎﻗﻲﻣﺎﻧﺪه ﺗﻘﺴﻴﻢ ،ﺑﺎ ﻋﻼﻣﺖ ﻣﻮاﻓﻖ y
*** )mod(x,y
ﺑﺰرگﺗﺮﻳﻦ ﻣﻘﺴﻮم ﻋﻠﻴﻪ ﻣﺸﺘﺮك
)gcd(x,y
ﻛﻮﭼﻚﺗﺮﻳﻦ ﻣﻀﺮب ﻣﺸﺘﺮك
)lcm(x,y
ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﺑﻪ xﺑﻪ ﺻﻮرت t/n
)[t,n] = rat(x )rat(x
ﻧﻤﺎﻳﺶ xﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻲ از ﻋﺪدﺻﺤﻴﺢ و ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ
* *** ،** ،اﻳﻦ ﺗﻮاﺑﻊ ﻋﻤﻞﻛﺮدﻫﺎي ﻣﺘﻔﺎوت اﻣﺎ ﻧﺰدﻳﻚ ﺑﻪﻫﻢ دارﻧﺪ ،ﺑﺮاي اﻃﻼع ﺑﻴﺶﺗﺮ ﺑﻪ helpﻫﺮﻳﻚ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ.
4-2اﻋﺪاد و ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ در ﻣﺘﻠﺐ اﻋﺪاد ﻣﺨﺘﻠﻂ وﺟﻮد دارﻧﺪ و رﻳﺸﻪ دوم -1ﺑﺎ ﺣﺮف iﻧﺸﺎن داده ﻣﻲﺷﻮد .ﺣﺮف jﻫﻢ ﺑﻪ ﻫﻤﺎن ﻣﻌﻨﺎ اﺳﺖ.
ﻣﺜﺎل: >> sqrt(-1), i, j ans = 0 + 1.0000i ans = 0 + 1.0000i ans = 0 + 1.0000i
ﺗﻮاﺑﻊ ﻣﺮﺑﻮط ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ ﺗﻮاﺑﻊ ﻣﺨﺘﻠﻂ را ﻧﺴﺒﺖ ﺑﻪ ﻣﺘﻐﻴﺮ z = a + jbاﻋﻤﺎل ﻣﻲﻛﻨﻴﻢ .ﻧﺘﺎﻳﺞ ﺣﺎﺻﻠﻪ در ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ.
ﻓﺮم ﻧﻮﺷﺘﺎري ﻋﺪد ﻣﺨﺘﻠﻂ ﻋﺪد ﻣﺨﺘﻠﻂ zرا ﻣﻲﺗﻮان ﺑﻪﻳﻜﻲ از اﺷﻜﺎل ﻣﺸﺮوح در ﺣﺪول زﻳﺮ ﻧﻮﺷﺖ .وﻗﺘﻲ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﻪ ﻋﻨﻮان ﻳﻚ ﻋﻀﻮ در ﻣﺎﺗﺮﻳﺲ ﻗﺮار ﻣﻲﮔﻴﺮد ،ﺑﺎﻳﺪ ﺑﻴﻦ ﻋﺪدﻫﺎ ،ﻋﻼﺋﻢ ،و ﺣﺮفِ iﻓﺎﺻﻠﻪ ﻧﺒﺎﺷﺪ.
32
ﺗﺎﺑﻊ
ﻣﻘﺪار
ﺷﺮح
) real(zﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ را ﺑﺮﻣﻲﮔﺮداﻧﺪ
a
) imag(zﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ را ﺑﺮﻣﻲﮔﺮداﻧﺪ
b
) abs(zﻗﺪر ﻣﻄﻠﻖ | |zرا ﺑﺮﻣﻲﮔﺮداﻧﺪ a2 + b2 )atan2(b,a ) angle(zزاوﻳﻪ را ﺑﺮﻣﻲﮔﺮداﻧﺪ a - jb
) conj(zﻣﺰدوج zرا ﺑﺮﻣﻲﮔﺮداﻧﺪ ﺗﻮاﺑﻊ ﻣﺮﺑﻮط ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ ﻓﺮم ﻧﻮﺷﺘﺎري
ﺗﻮﺿﻴﺢ
z = a + jbﺑﺎﻳﺪ jﺑﻪ bﭼﺴﺒﻴﺪه ﺑﺎﺷﺪ. z = a + j*b z = a + ibﺑﺎﻳﺪ iﺑﻪ bﭼﺴﺒﻴﺪه ﺑﺎﺷﺪ. z = a + i*b )z = mg * exp(j*ang
)mg = abs(z )ang = angle(z
ﻓﺮمﻫﺎي ﻧﻮﺷﺘﺎري ﻋﺪد ﻣﺨﺘﻠﻂ
ﻣﺜﺎل: ﻣﺎﺗﺮﻳﺲ ﻣﺨﺘﻠﻂ pxرا ﺑﺎ ﻗﺴﻤﺖﻫﺎي ﺣﻘﻴﻘﻲ و ﻣﺠﺎزي im,reﺑﻪ دو ﻓﺮم ﻗﺎﺋﻢ و ﻗﻄﺒﻲ ﺑﻨﻮﻳﺴﻴﺪ .ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آنرا mag,tetﺑﮕﻴﺮﻳﺪ. 3.0000 - 6.0000i
3.0000 - 6.0000i
;]>> re = [1 2 3]; im = [-4 -5 -6 >> px = re + j*im px = 1.0000 - 4.0000i 2.0000 - 5.0000i )>> tet = angle(px), mag = abs(px tet = -1.3258 -1.1903 -1.1071 mag = 4.1231 5.3852 6.7082 )>> px = mag .* exp(j*tet px = 1.0000 - 4.0000i 2.0000 - 5.0000i
33
5-2ﺗﻤﺮﻳﻦ -1ﺑﺎ ﻓﺮﻣﺖﻫﺎي ﻣﺨﺘﻠﻒ ﻣﻘﺪار rmn ± epsرا ﻧﻤﺎﻳﺶ دﻫﻴﺪ.rmn = 2.22044604925031e-6 . -2ﺑﺎ format longﻣﻘﺪار ] m = [1e6 -1e7 1را ﺑﺎ ﻧﻤﺎﻳﺶ دﻫﻴﺪ scale factor .را ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ .ﺳﭙﺲ ﺑﺎ format long eﺗﻜﺮار ﻛﻨﻴﺪ. -3ﻋﺪد ﭘﻲ را ﺑﺎ اﻧﻮاع ﻣﻀﺎﻋﻒ ،ﻣﺤﺪود ،و ﺻﺤﻴﺢ در ﺣﺎﻓﻈﻪ ﻧﮕﻪداري ﻛﻨﻴﺪ ،ﺳﭙﺲ ﺑﺎ ﻓﺮﻣﺖﻫﺎي ﻣﺨﺘﻠﻒ ﻧﺸﺎن دﻫﻴﺪ .ﻧﺘﺎﻳﺞ را ﺑﺎ )( isaاﻣﺘﺤﺎن و در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ. -4ﺑﺎ ﻧﺤﻮه ﻧﻤﺎﻳﺶ ،format longو ﺑﺎ ﺗﻜﺮار ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ nﭼﻪ ﻋﺪد ﺻﺤﻴﺤﻲ ﺑﺎﺷﺪ ﻛﻪ رﻗﻢ ﻳﻚ در اﻋﺪاد ﺑﻌﺪاز ﻣﻤﻴﺰ ﺣﺎﺻﻞِ ﻋﺒﺎرت 1 + n*epsﻇﺎﻫﺮ ﺷﻮد .ﺑﻪ اﻳﻦ ﺷﻜﻞ1.00000000000001 :
-5ﻣﺘﻐﻴﺮ x = 42235.62567889404296875را ﺑﺎ ) single(xﺑﻪ ﺗﺎﺑﻊ ﻳﻜﺎ ﺗﺒﺪﻳﻞ و ﺑﺎ ﻓﺮﻣﺖ ﺑﻠﻨﺪ ،ﻛﻮﺗﺎه و ﻓﺮﻣﺖ ﺑﺎﻧﻚ format bankﻧﻤﺎﻳﺶ دﻫﻴﺪ .ﻣﺘﻐﻴﺮ xرا ﺗﻘﺴﻴﻢ ﺑﺮ ﺻﻔﺮ ﻛﺮده ﺑﺮاﺑﺮ yﻗﺮار دﻫﻴﺪ. -6ﻋﻤﻠﻴﺎت آراﻳﻪاي را در ﻣﻮرد ﺑﺮدارﻫﺎي ] a = [-2.1 4 8و ] b = [3 0 2اﻣﺘﺤﺎن ﻛﻨﻴﺪ .ﺑﺮدارﻫﺎ را ﺗﺮاﻧﻬﺎد )ﺗﺮاﻧﺴﭙﻮز( و ﻋﻤﻠﻴﺎت را ﺗﻜﺮار ﻛﻨﻴﺪ. -7ﺟﺪول ﻛﺴﻴﻨﻮس زواﻳﺎي ﺑﻴﻦ -360,+360درﺟﻪ را ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ و ﻧﻤﺎﻳﺶ دﻫﻴﺪ. -8ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ 5×4ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ. -9ﻳﻚ ﺑﺮدار ﻋﺪدي ﺑﺎ 14ﻋﻨﺼﺮ ﺗﺼﺎدﻓﻲ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ ،ﻛﻪ ﺑﺰرﮔﺎي ﻫﺮ ﻋﻀﻮ آن ﺑﻴﻦ 10ﺗﺎ 100ﺑﺎﺷﺪ. -10ﺑﺎ )( repmatﻳﻚ ﺑﺮدار ﺑﺎ دهﻫﺰار ﺻﻔﺮ ﺗﺎ ﻧُﻪ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ. -11ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺑﻴﻦ ﻧﻮﺷﺘﻦ ticو tocرا در ﻛﺎﻣﭙﻴﻮﺗﺮ ﺧﻮدﺗﺎن ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ. -12ﺑﺎ اﺳﺘﻔﺎده از clockﻓﻘﻂ ﺗﺎرﻳﺦ را ﺑﻪ ﻓﺮم ﻣﻨﺎﺳﺐ ﻧﻤﺎﻳﺶ دﻫﻴﺪ. -13ﺗﺎﺑﻊ ) calendar(2002,01را اﻣﺘﺤﺎن ﻛﻨﻴﺪ. -14ﻣﺘﻐﻴﺮ tرا ﻣﺴﺎوي ﺻﻔﺮ ﺗﻌﺮﻳﻒ ﻛﺮده f = sin(t)/tرا ﺑﻪ دﺳﺖ آورﻳﺪ. -15ﺗﻮاﺑﻊ realmaxو realminرا اﻣﺘﺤﺎن ﻛﻨﻴﺪ .ﻋﺒﺎرات type realmaxو type realminرا ﻣﺠﺪداً اﺟﺮا و ﺑﺮرﺳﻲ ﻛﻨﻴﺪ. -16ﻋﺪد ﮔﻨﮓِ eرا ﺑﺎ ﻓﺮﻣﻮل )) e = exp(1ﻃﺮف راﺳﺖ e1 ،اﺳﺖ( ﺑﻪ دﺳﺖ آورده ﺑﺎ ﻫﺮ دو ﻓﺮﻣﺖ ﻛﻮﺗﺎه و ﺑﻠﻨﺪ و ﻓﺮﻣﺖ ﻛﺴﺮي format rationalﻧﻤﺎﻳﺶ دﻫﻴﺪ .راﻫﻨﻤﺎ e :ﻳﻚ ﻣﺘﻐﻴﺮ داﺧﻠﻲ ﻧﻴﺴﺖ. -17ﺗﻮاﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ زاوﻳﻪ 30درﺟﻪ را ﭘﻴﺪا ﻛﺮده در ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻧﻤﺎﻳﺶ دﻫﻴﺪ. -18ﺗﻮاﺑﻊ )( roundو )( fixو )( ceilو )( floorرا ﺑﺮاي 13/7و -13/7ﺑﻪ دﺳﺖ آورﻳﺪ. -19ﻣﺘﻐﻴﺮ x = 0.34را ﺑﻪ ﺗﻨﻬﺎﺋﻲ ﺑﻪ ﺻﻮرت ﻳﻚ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ و ﻣﺨﻠﻮﻃﻲ از ﻋﺪد و ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﻧﺸﺎن دﻫﻴﺪ. -20ﺑﺎ اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﻣﺨﺘﻠﻂ ﻣﻘﺪار اﻣﭙﺪاﻧﺲ و ﺿﺮﻳﺐ ﺗﻮان ﻣﺪار زﻳﺮ را ﺑﺎ ﻣﻘﺎدﻳﺮ داده ﺷﺪه ﭘﻴﺪا ﻛﻨﻴﺪ. 1000rad/s
34
= ω
R = 1Ω, L = 1mH, C = 1µF,
ﻓﺼﻞ 3ﻣﺎﺗﺮﻳﺲ ﻫﺎ 1-3ﺗﺸﺎﺑﻪ ﻣﺎﺑﻴﻦ ﻣﺎﺗﺮﻳﺲ ﻫﺎ راﺑﻄﻪ ﺗﺸﺎﺑﻪ ﺑﻪ ﻳﻜﻲ از اﺷﻜﺎل زﻳﺮ ﻣﺎﺑﻴﻦ ﻣﺎﺗﺮﻳﺲﻫﺎ ﺑﺮﻗﺮار اﺳﺖ .در اﻳﻦ ﻣﺘﻦ از اﺻﻄﻼح ﻫﻢﺳﺎن اﺳﺘﻔﺎده زﻳﺎدي ﻣﻲﺷﻮد. ﻧﺎم
ﺗﻌﺮﻳﻒ
ﻫﻢردﻳﻒ -ﻫﻢﺳﺘﻮن )ﻫﻢﺳﺎن(
ﻛﺎرﺑﺮد
ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻣﺴﺎوي
ﺗﺮﺳﻴﻤﺎت... ،
ﻫﻢ ردﻳﻒ -ﺑﺎ ﺳﺘﻮن )ﺿﺮبﭘﺬﻳﺮ( دو ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎي ﻳﻜﻲ ﻣﺴﺎوي ﺳﺘﻮنﻫﺎي دﻳﮕﺮي ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ ﻣﺴﺎوي )ﻳﻜﺴﺎن(
ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ
ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻣﺴﺎوي و ﻣﻘﺪار دراﻳﻪﻫﺎي ﻣﺴﺎوي
ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ
ﻋﻤﻠﻴﺎت ﻣﺎﺗﺮﻳﺴﻲ
ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد دراﻳﻪﻫﺎي ﻣﺴﺎوي اﻣﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻧﺎﻣﺴﺎوي
2-3ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﭘﺎﻳﻪ
Elementary Matrices
ﻣﺎﺗﺮﻳﺲﻫﺎﺋﻲ ﻧﻈﻴﺮ )( zeros(), ones(), rand(), eyeدر ﻣﺘﻠﺐ ﻣﺎﺗﺮﻳﺲ ﭘﺎﻳﻪ ﻧﺎم دارﻧﺪ .راﻫﻨﻤﺎي آنﻫﺎ و ﺑﻌﻀﻲ اﻃﻼﻋﺎت دﻳﮕﺮ ﺑﺎ اﺟﺮاي help elmatروي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ.
ﻣﺎﺗﺮﻳﺲ ﻳﮕﺎﻧﻲ
identity matrix
دﺳﺘﻮر) eye(n,mﻣﺎﺗﺮﻳﺴﻲ ﺑﺎ ﻗﻄﺮي ﻣﺘﺸﻜﻞ از ﻳﻚﻫﺎ و ﺳﺎﻳﺮ ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ ﺻﻔﺮ اﻳﺠﺎد ﻣﻲﻛﻨﺪ .دﺳﺘﻮر )eye(n
ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻳﮕﺎﻧﻲ ﻣﺮﺑﻌﻲ n × nاﻳﺠﺎد ﻣﻲﻛﻨﺪ.
ﻣﺜﺎل: 0 0 1
ﻣﺎﺗﺮﻳﺲ ﻫﺎي )( onesو
)>> x = eye(3 x = 1 0 0 1 0 0
)(zeros
دﺳﺘﻮر) ones(n,mﻣﺎﺗﺮﻳﺲ n × mﺑﺎ ﻋﻨﺎﺻﺮ ﻳﻚ و دﺳﺘﻮر) zeros(n,mﻣﺎﺗﺮﻳﺲ n × mﺑﺎ ﻋﻨﺎﺻﺮ ﺻﻔﺮ ﻣﻲ- ﺳﺎزﻧﺪ .دﺳﺘﻮرﻫﺎي) ones(nو ) zeroz(nﻣﺎﺗﺮﻳﺲﻫﺎي ﻣﺮﺑﻌﻲ n × nاﻳﺠﺎد ﻣﻲﻛﻨﻨﺪ.
ﻣﺜﺎل: )>> zeros(3,2 ans = 0 0 0 0 0 0 )>> zeros(2 ans = 0 0 0 0 )>> ones(2 ans = 1 1 1 1
35
3-3اﻳﺠﺎد ﺗﻐﻴﻴﺮات ﺑﺮ روي ﻣﺎﺗﺮﻳﺲ اﺳﺘﺨﺮاج ﻗﺴﻤﺘﻲ از ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺑﺮاي اﺳﺘﺨﺮاج ﻗﺴﻤﺘﻲ از ﻳﻚ ﻣﺎﺗﺮﻳﺲ اﺑﺘﺪا ردﻳﻒﻫﺎ و ﺳﭙﺲ ﺳﺘﻮنﻫﺎي ﻣﺴﺘﺨﺮﺟﻪ از آنردﻳﻒﻫﺎ را ﻣﻲﻧﻮﻳﺴﻴﻢ .ﻣﺜﻼً ﻋﺒﺎرت ) A(1:2,2:3ﻧﺸﺎن دﻫﻨﺪه ردﻳﻒ 1ﺗﺎ ردﻳﻒ 2ﻣﺤﺪود ﺑﻴﻦ ﺳﺘﻮن 2ﺗﺎ ﺳﺘﻮن 3اﺳﺖ.
ﻣﺜﺎل ﻫﺎ: اﺳﺘﺨﺮاج ﻳﻚ ردﻳﻒ از ﻣﺎﺗﺮﻳﺲ ;]>> A = [1 2 3; 4 5 6 ردﻳﻒ 1را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ >> A1 = A(1,:) % 3
2
A1 = 1
اﺳﺘﺨﺮاج ﻳﻚ ﺳﺘﻮن از ﻣﺎﺗﺮﻳﺲ ;]>> A = [1 2 3; 4 5 6 ﺳﺘﻮن 2را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ >> A2 = A(:,2) % A2 = 2 5 -2
اﺳﺘﺨﺮاج ﻗﺴﻤﺘﻲ از ﻣﺎﺗﺮﻳﺲ ;]>> A = [1 2 3; 4 5 6 ﺳﺘﻮنﻫﺎي 2و 3از ردﻳﻒﻫﺎي 1و 2را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ >> A23 = A(1:2,2:3) % 3 6
A23 = 2 5
ﺗﻐﻴﻴﺮ ﻣﻘﺪار ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻣﺜﺎل: ⎤⎡1 1 1 ⎤⎡1 0 0 ⎤⎡1 4 7 ⎢ ⎥ ⎢ ⎥ ﻣﺎﺗﺮﻳﺲ ⎥⎥ b = ⎢⎢2 5 8را ﺗﻮﻟﻴﺪ و ﺑﺎ آن ﻣﺎﺗﺮﻳﺲﻫﺎي ⎥ b1 = ⎢2 0 0و ⎥ b2 = ⎢2 1 1را ﺑﺴﺎزﻳﺪ. ⎦⎥⎢⎣3 6 9 ⎦⎥⎢⎣3 6 9 ⎦⎥⎢⎣3 6 9 اﺑﺘﺪا ﻣﺎﺗﺮﻳﺲ bرا ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ .ﺑﺎ اﺳﺘﻔﺎده از ﺗﺮاﻧﻬﺎد bرا راﺣﺖﺗﺮ ﺗﻌﺮﻳﻒ ﻛﺮدهاﻳﻢ.
']>> b = [1:3;4:6;7:9 b = 1 4 7 2 5 8 3 6 9
ﻣﺎﺗﺮﻳﺲ b1را ﻣﺴﺎوي bﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ: 0 0 9.00
;>> b1 = b )>> b1(1:2,2:3) = zeros(2 b1 = 1.00 0 2.00 0 3.00 6.00
ﻣﺎﺗﺮﻳﺲ b2را ﻣﺴﺎوي bﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ: 1.00 1.00 9.00
36
;>> b2 = b )>> b2(1:2,2:3) = ones(2 b2 = 1.00 1.00 2.00 1.00 3.00 6.00
ﻗﺮار دادن ﻳﻚ ﻣﺎﺗﺮﻳﺲ در ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ ﻋﺒﺎرت d(:) = bﻋﻨﺎﺻﺮ bرا ﺑﻪ ﺗﺮﺗﻴﺐ ﺳﺘﻮن در داﺧﻞ dﺟﺎﺳﺎزي ﻣﻲﻛﻨﺪ.
ﻣﺜﺎل: دو ﻣﺎﺗﺮﻳﺲ dو bﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ اﻣﺎ ﻧﺎﻫﻢﺳﺎن ﻫﺴﺘﻨﺪ .ﻋﻨﺎﺻﺮ bرا داﺧﻞ dﻗﺮار دﻫﻴﺪ. )>> d = zeros(3,2 d = 0 0 0 0 0 0 ]>> b = [1:3; 4:6 b = 1 2 3 4 5 6 >> d(:) = b d = 1 5 4 3 2 6
اﺳﺘﺨﺮاج ﻳﺎ ﺣﺬف ردﻳﻒ و ﺳﺘﻮن ﻋﺒﺎرت ) a(:,nﺳﺘﻮن ، nو ﻋﺒﺎرت ) a(m,:ردﻳﻒ mرا ﺑﺮﻣﻲﮔﺮداﻧﻨﺪ.
ﻣﺜﺎل: ﺳﺘﻮن دوم و ردﻳﻒ اول ﻣﺎﺗﺮﻳﺲ '] b = [1:3;4:6;7:9را ﺣﺬف ﻛﻨﻴﺪ. ']>> b = [1:3;4:6;7:9 b = 1 4 7 2 5 8 3 6 9 )>> b(:,2 ans = 4 5 6 )>> b(1,: ans = 1 4 7 ][=)>> b(:,2 b = 1 7 2 8 3 9 ][=)>> b(1,: b = 2 8 3 9
4-3ﻋﻤﻞ ﮔﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ ﻋﻼﺋﻢ ﺿﺮب ،ﺗﻘﺴﻴﻢ ،و ﺗﻮان ،ﺑﺪون ﻧﻘﻄﻪ در ﺳﻤﺖ ﭼﭗ ،ﻋﻤﻠﮕﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ ﻫﺴﺘﻨﺪ و ﺑﻪ ﺻﻮرت ﻋﻨﺼﺮ ﺑﻪ ﻋﻨﺼﺮ ﻋﻤﻞ ﻧﻤﻲﻛﻨﻨﺪ .ﺟﻤﻊ و ﺗﻔﺮﻳﻖ آراﻳﻪاي و ﻣﺎﺗﺮﻳﺴﻲ ﻳﻚﺳﺎن ﻫﺴﺘﻨﺪ .اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ. ﺗﻮان ﺿﺮب ﺗﻘﺴﻴﻢ راﺳﺖ ﺑﻪ ﭼﭗ ﺟﻤﻊ ﺗﻘﺴﻴﻢ )ﻣﻌﻤﻮﻟﻲ( ﺗﻔﺮﻳﻖ ^
*
\
+
/
-
ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ ﭘﺮﻛﺎرﺑﺮدﺗﺮﻳﻦ ﻋﻤﻞ ﻣﺎﺗﺮﻳﺴﻲ اﺳﺖ .اﮔﺮ cﺣﺎﺻﻞﺿﺮب aدر bﺑﺎﺷﺪ ،ﻋﻨﺎﺻﺮ ردﻳﻒ ﻳﻚ aدر ﻋﻨﺎﺻﺮ ﺳﺘﻮن ﻳﻚ bﺑﻪ ﺗﺮﺗﻴﺐ ﺿﺮب و ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﻲﺷﻮﻧﺪ ،ﻧﺘﻴﺠﻪ ﻋﻨﺼﺮ ) c(1,1اﺳﺖ .ﻋﻨﺎﺻﺮ ردﻳﻒ ﻳﻚ aدر ﻋﻨﺎﺻﺮ 37
ﺳﺘﻮن دو bﺑﻪ ﺗﺮﺗﻴﺐ ﺿﺮب و ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﻲﺷﻮﻧﺪ ،ﻧﺘﻴﺠﻪ ﻋﻨﺼﺮ ) c(1,2اﺳﺖ .و ﺑﻪ ﻫﻤﻴﻦ ﺗﺮﻧﻴﺐ ﻣﺎﺗﺮﻳﺲ cﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ .ﺣﺎﺻﻞﺿﺮب دو ﻣﺎﺗﺮﻳﺲ در ﺻﻮرﺗﻲ ﺑﺪون ﺧﻄﺎ ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ ﻛﻪ ﺳﺘﻮنﻫﺎي aﺑﺎ ﺳﻄﺮﻫﺎي bﺑﺮاﺑﺮ ﺑﺎﺷﻨﺪ .اﮔﺮ ﺑﺨﻮاﻫﻴﻢ a * bو b * aﻫﺮ دو ﻣﻌﻨﻲدار ﺑﺎﺷﻨﺪ ،ﻋﻼوه ﺑﺮ اﻳﻦﻛﻪ ﺑﺎﻳﺪ ﺳﺘﻮنﻫﺎي aﺑﺎ ﺳﻄﺮﻫﺎي bﺑﺮاﺑﺮ ﺑﺎﺷﻨﺪ ،دو ﻣﺎﺗﺮﻳﺲ ﺑﺎﻳﺪ ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ ﻫﻢ ﺑﺎﺷﻨﺪ ،وﮔﺮﻧﻪ ﺑﺎ ﭘﻴﻐﺎم ﺧﻄﺎ ﻣﻮاﺟﻪ ﺧﻮاﻫﻴﻢ ﺷﺪ .اﮔﺮ a * bو b * aﻫﺮ دو ﻣﻌﻨﻲدار ﺑﺎﺷﻨﺪ از ﺗﻌﺮﻳﻒ ﺿﺮب ﭘﻴﺪاﺳﺖ ﻛﻪ a * bﻣﺴﺎوي b * aﻧﺨﻮاﻫﺪ ﺑﻮد.
ﻣﺜﺎل ﻫﺎ: ﺣﺎﺻﻞ اﺳﻜﺎﻟﺮ ;]am = [2 4 8 ;]bm = [3; 2; 2 cm = am * bm = 30
>> >> >> cm
ﺣﺎﺻﻞ ﻣﺎﺗﺮﻳﺴﻲ ]>> a = [1 2 -6; 3 0 -3 a = 1 2 -6 3 0 -3 ]>> b = [2 5 6; 0 1 4; 2 6 -8 b = 2 5 6 2 6 -8 0 1 4 >> c = a * b c = -10 -29 62 0 -3 42
ﺧﻄﺎ در ﻧﺘﻴﺠﻪ ﺟﺎﺑﺠﺎﺋﻲ ﻋﻮاﻣﻞ ﺿﺮب >> ci = b * a * >== ??? Error using Inner matrix dimensions must agree.
دو ﺟﻮاب ﻣﺨﺘﻠﻒ در ﻧﺘﻴﺠﻪ ﺟﺎﺑﺠﺎﺋﻲ ﻋﻮاﻣﻞ ﺿﺮب ]3 0 -3 -6 -3 ]1 ; 2 6
-27 -3 -30:
;>> a = [1 2 -6 a = 1 2 3 0 >> b = [2 5 ; 0 b = 2 5 0 1 2 6 >> a * b ans = -10 -29 0 -3 >> b * a ans = 17 4 3 0 20 4
ﺗﻮان ﻣﺎﺗﺮﻳﺴﻲ a ^ 2ﻛﻪ ﻣﻌﺎدل a * aاﺳﺖ ﻓﻘﻂ ﺑﺮاي ﻣﺎﺗﺮﻳﺲ ﻣﺮﺑﻌﻲ ﻣﻌﻨﻲ دارد a ^ 2 .ﺑﺎ a .^ 2ﺗﻔﺎوت اﺳﺎﺳﻲ دارد.
38
5-3ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﻣﺎﺗﺮﻳﺴﻲ ﭼﻨﺪ ﺗﺎﺑﻊ ﻣﻌﻤﻮل ﻧﺎم
ﻧﺘﻴﺠﻪ
ﺗﺎﺑﻊ
) det(aدﺗﺮﻣﻴﻨﺎن ﻣﺎﺗﺮﻳﺲ a دﺗﺮﻣﻴﻨﺎن determinant a ﺗﻮان ﻧﭙﺮي ﻣﺎﺗﺮﻳﺴﻲ expm(a) matrix exponent e ) inv(aﻣﻌﻜﻮس ﻣﺎﺗﺮﻳﺲ a ﻣﺎﺗﺮﻳﺲ ﻣﻌﻜﻮس inverse matrix
اﺳﺘﺨﺮاج ﻣﺎﺗﺮﻳﺲ از ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ ﻧﺎم
ﺗﺎﺑﻊ
ﻧﺘﻴﺠﻪ
diag() diagonalﻗﻄﺮ ﻣﺎﺗﺮﻳﺲ را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ tril() lower triangleﻣﺜﻠﺚ ﭘﺎﺋﻴﻦ ﻣﺎﺗﺮﻳﺲ را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ triu() upper triangleﻣﺜﻠﺚ ﺑﺎﻻي ﻣﺎﺗﺮﻳﺲ را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ
ﺗﻮاﺑﻌﻲ ﻛﻪ ﺑﻪ روي ﻣﺠﻤﻮﻋﻪ ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﻣﺎﻧﻨﺪ )( cumpro(),sum(),prod(),diffﺑﻪ روي ﻣﺠﻤﻮﻋﻪ ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ. ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ helpﻫﺮ ﺗﺎﺑﻊ ﻣﺮاﺟﻌﻪ ﺷﻮد.
ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪي )ﻓﻀﺎﺋﻲ( ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪيِ m × n × pداراي pﺻﻔﺤﻪ اﺳﺖ ﻛﻪ ﻫﺮ ﺻﻔﺤﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي m × nاﺳﺖ. اﻧﺘﺨﺎب ﻣﻘﺎدﻳﺮ m, n, pدلﺧﻮاه اﺳﺖ ،اﻣﺎ ﺑﺎﻳﺪ دﻗﺖ ﻛﺮد ﻛﻪ nو mﺑﺮاي ﺗﻤﺎﻣﻲ ﺻﻔﺤﺎت ﻳﻜﺴﺎن ﺑﺎﺷﻨﺪ .در ﺷﻜﻞ زﻳﺮ ﺷﻤﺎي ﻓﻀﺎﺋﻲ ﻣﺎﺗﺮﻳﺲ Eﻧﺸﺎن داده ﺷﺪه ﻛﻪ در آن p = 4اﺳﺖ: D C
←E B A
ﺻﻔﺤﺎت 3 ،2 ،1و 4ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ Eﺑﻪ اﻳﻦ ﺻﻮرت ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮﻧﺪ: A B C D
= = = =
)E(:,:,1 )E(:,:,2 )E(:,:,3 )E(:,:,4
Aو Bو Cو Dﻣﺎﺗﺮﻳﺲﻫﺎي دو ﺑﻌﺪي ﻫﺴﺘﻨﺪ ﻛﻪ ﻗﺒﻼٌ ﺗﻌﺮﻳﻒ ﺷﺪهاﻧﺪ. در زﺑﺎن ﻣﺘﻠﺐ ﺗﻌﺮﻳﻒ ﺻﻔﺤﻪي nام از ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪي ﺑﻪ ﻧﺎم Eﺑﻪﺻﻮرت E(:,:,n) = Mاﺳﺖ .ﺻﻔﺤﻪ- ﻫﺎي ﺗﺸﻜﻴﻞ دﻫﻨﺪه ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ ﺑﺎﻳﺪ ﻫﻢﺳﺎن )ﻫﻢردﻳﻒ و ﻫﻢﺳﺘﻮن( ﺑﺎﺷﻨﺪ size(E).ﺗﻌﺪاد ردﻳﻒ ،ﺳﺘﻮن ،و ﺻﻔﺤﻪﻫﺎي ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ .ﻋﺒﺎرت ) E(:ﻳﻚ ﺑﺮدار ﺗﻚﺳﺘﻮﻧﻲ ﻣﺘﺸﻜﻞ از ﺗﻤﺎم ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ اﻳﺠﺎد ﻣﻲﻛﻨﺪ .ﻋﺒﺎرت ) E(:,:ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ﻣﺘﺸﻜﻞ از ﻣﺎﺗﺮﻳﺲﻫﺎي ﺳﺎزﻧﺪهي Eاﻳﺠﺎد ﻣﻲﻛﻨﺪ.
39
ﻣﺜﺎل: ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ ﺑﺎ ﭼﻬﺎر ﺻﻔﺤﻪ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ .ﺗﻌﺪاد ردﻳﻒ و ﺳﺘﻮنِ ﻫﺮ ﺻﻔﺤﻪ ،و ﺗﻌﺪاد ﺻﻔﺤﻪﻫﺎي آنرا ﺑﺎ ﺗﺎﺑﻊ داﺧﻠﻲ )( sizeﻧﻤﺎﻳﺶ دﻫﻴﺪ .ﺑﻌﺪ آن را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ داﺧﻠﻲ)( ndimsﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ. ;][2 -5; 16 7.6; 13.3 -9 ;] [-2 -5.2; 6 7.3; 5 1.4 ;] [-2 2 ; 7 3; 1.55 1.4 ;] [-2.2 12 ; 7.3 30; 5.5 1.4
= = = =
A B C D
>> >> >> >>
;>> E(:,:,1) = A ;>> E(:,:,2) = B ;>> E(:,:,3) = C >> E(:,:,4) = D E(:,:,1) = 2.0000 -5.0000 16.0000 7.6000 13.3000 -9.0000 E(:,:,2) = -2.0000 -5.2000 6.0000 7.3000 5.0000 1.4000 E(:,:,3) = -2.0000 2.0000 7.0000 3.0000 1.5500 1.4000 E(:,:,4) = -2.2000 12.0000 7.3000 30.0000 5.5000 1.4000 ))>> size(E), ndims(E), length(size(E ans = 3 2 4 ans = 3 ans = 3
6-3ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﻧﻤﻮﻧﻪ ﻣﺎﺗﺮﻳﺲ ﺟﺎدوﺋﻲ دﺳﺘﻮر) magic(nﻳﻚ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ n*nﻣﻲﺳﺎزد .ﺧﺎﺻﻴﺖ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ اﻳﻦ اﺳﺖ ﻛﻪ ﺣﺎﺻﻞﺟﻤﻊ ﻋﻨﺎﺻﺮ آن در ﻃﻮلِ ردﻳﻒ ،ﻗﻄﺮ ،و ﺳﺘﻮن ﺑﺮاﺑﺮﻧﺪ.
ﻣﺜﺎل: ﻳﻚ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ 3×3ﺑﻪ ﻧﺎم Mgﺑﺴﺎزﻳﺪ .ﺑﺎ ﺗﻜﺮار Mgﻳﻚ ﻣﺎﺗﺮﻳﺲ 6×3ﺑﻪ ﻧﺎم Mgrﺑﺴﺎزﻳﺪ. )>> Mg = magic(3 Mg = 8 1 6 3 5 7 4 9 2 )>> Mgr = repmat(Mg,2,1 Mgr = 8 1 6 3 5 7 4 9 2 8 1 6 3 5 7 4 9 2
ﻣﺎﺗﺮﻳﺲ Mgrﻳﻚ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ ﻧﻴﺴﺖ
40
ﻣﺎﺗﺮﻳﺲ ﭘﺎﺳﻜﺎل ﻣﺎﺗﺮﻳﺴﻲ اﺳﺖ ﻛﻪ از ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل ﺗﺸﻜﻴﻞ ﻣﻲﺷﻮد .ﻳﻚ ﻧﻤﻮﻧﻪ ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل در زﻳﺮ آﻣﺪه اﺳﺖ:
1
1 6
1 4 1 10 5 20 15
1 3 6 10 15
1 1 1 1 1 1 1
1 2 3 4 5 6
در ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل ﺳﺘﻮنﻫﺎ ﺿﺮاﺋﺐ ﺑﻴﻨﻢ binomial coefficientﻫﺴﺘﻨﺪ ،ﻛﻪ از راﺑﻄﻪ زﻳﺮ ﺑﻪ دﺳﺖ ﻣﻲآﻳﻨﺪ: )n ⎞ n(n-1)(n-2)...(n-r+1 =⎟ !r ⎠r
⎛ + n-1 ( nr ) = r!( n-n! r )! = ( n-1 ⎜ ﻛﻪ ﺧﻼﺻﻪﺗﺮ آن اﻳﻦ اﺳﺖ ) r ) ( r-1 ⎝
ﻧﺘﻴﺠﻪ اﻳﻦ راﺑﻄﻪ ﺗﻌﺪاد ﭼﻴﻨﺶ rﺷﻴﺊ از ﻣﻴﺎن nﺷﻴﺊ ﻣﺘﻤﺎﻳﺰ اﺳﺖ. ﺑﺎ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﻣﻲﺗﻮان ﺿﺮاﺋﺐ ﺑﻴﻨﻢ را ﻣﺤﺎﺳﺒﻪ ﻛﺮد .ﺑﺮاي اﻃﻼع در ﻣﻮردﺣﻠﻘﻪ forﺑﻪ ﻓﺼﻞ ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﺗﻜﺮار ﻣﺮاﺟﻌﻪ ﻓﺮﻣﺎﺋﻴﺪ. ;ncr = 1 ;r = ... ;n = ... for k = 1:r ;ncr = ncr*(n-k+1)/k end )disp(ncr
ﻣﺜﻼٌ اﮔﺮ ﻳﻚ ﺑﺎر rرا ﻣﺴﺎوي 2و ﻳﻚﺑﺎر آن را ﻣﺴﺎوي 3ﺑﮕﻴﺮﻳﻢ ،و ﻫﺮ ﺑﺎر nرا ﺑﻴﻦ 2ﺗﺎ 6ﺗﻐﻴﻴﺮ دﻫﻴﻢ ﺳﺘﻮنﻫﺎي ﺳﻮم و ﭼﻬﺎرم ﻣﺜﻠﺚ ﺑﻪ دﺳﺖ ﻣﻲآﻳﻨﺪ .ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل اول ﺑﺎر ﺗﻮﺳﻂ ﺣﻜﻴﻢ ﻋﻤﺮ ﺧﻴﺎم ﻛﺸﻒ ﺷﺪ و داراي ﺧﻮاﺻﻲ اﺳﺖ ﻛﻪ در رﻳﺎﺿﻴﺎت ﻫﻨﻮز ﻫﻢ ﻣﻮرد ﺗﺤﻘﻴﻖ ﻫﺴﺘﻨﺪ ،از ﺟﻤﻠﻪ اﻳﻦ ﻛﻪ ﻫﺮ ﻋﻨﺼﺮ آن از ﺣﺎﺻﻞ ﺟﻤﻊ ﻗﻄﺮ ﺑﺎﻻي ﺳﺮش ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ.
ﻣﺜﺎل: ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﭘﺎﺳﻜﺎل 4×4ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ. 1 4 10 20
7-3
)>> ps = pascal(4 ps = 1 1 1 1 2 3 1 3 6 1 4 10
ﺑﺮدار Vector
ﻋﻤﻠﮕﺮ ﻛﺎﻟﻦ ﻋﻤﻠﮕﺮ ﻛﺎﻟﻦ در ﻣﺘﻠﺐ ﺑﺮاي ﺗﻌﻴﻴﻦ داﻣﻨﻪ rangeو ﮔﺎم stepﺑﺮدار ﺑﻪ ﻛﺎر ﻣﻲرود.
ﻣﺜﺎل:
1.0000
ﺗﺎﺑﻊ
0.5000
0
>> x = 1:5 x = 1 2 3 4 5 >> x = -1: 0.5: 1 x = -1.0000 -0.5000
)(linspace
ﺗﺎﺑﻊ ) linspace(m,n,pﺗﻌﺪاد pﻋﻨﺼﺮ ﺑﻴﻦ اﻋﺪاد mو nﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ .ﭘﻴﺶﻓﺮض pﻳﻚﺻﺪ ﻋﻨﺼﺮ اﺳﺖ.
41
ﻣﺜﺎل: ده ﻋﺪد ﺑﻴﻦ ﺻﻔﺮ و piرا داﺧﻞ ﺑﺮدار xﻗﺮار دﻫﻴﺪ .ﺳﭙﺲ xرا ﺑﻪ درﺟﻪ ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ. >> format bank )>> x = linspace(0,pi,10 x = 0 0.35 0.70 1.05 1.40 1.75 2.09 2.44 2.79 3.14 >> dgx = x * 180/pi dgx = 0 20.00 40.00 60.00 80.00 100.00 120.00 140.00 160.00 180.00
ﻛﺎرﺑﺮد ﻳﻚ ﺑﺮدار در ﺗﻌﺮﻳﻒ ﺑﺮدار دﻳﮕﺮ ﻣﺜﺎل:
0.50
3.00
;]>> a = [2 3 -4.5 ;]>> b = [-2.2 3 0.5 ]>> c = [a b c = 2.00 3.00 -4.50
-2.20
ﺑﺮدار ﺗﻬﻲ ﻋﺒﺎرت ][ = xﺑﺮدار ﺗﻬﻲ را ﺑﻪ xﻧﺴﺒﺖ ﻣﻲدﻫﺪ .اﻳﻦ ﺗﻌﺮﻳﻒ ﺑﺎ x = 0ﻳﺎ ﭘﺎك ﻛﺮدن (clear x) xﻓﺮق دارد.
ﻣﺜﺎل: ﺑﺮاي ﺣﺬف ﻋﻨﺼﺮ 2آن را ﺑﺮاﺑﺮ ﺑﺮدار ﺗﻬﻲ ﻗﺮار ﻣﻲدﻫﻴﻢ )ﺗﻮﺿﻴﺢ ﺑﻴﺸﺘﺮ راﺟﻊ ﺑﻪ ﺷﻤﺎره ﻋﻨﺎﺻﺮ ﺑﻌﺪاٌ ﻣﻲآﻳﺪ(. ;]0.5 -0.5000
3
-3.0000
>> c = [2 3 -4.5 ][ = )>> c(2 c = -2.0000 4.5000
-2.2 2.2000
اﻧﺪﻳﺲ اﻋﻀﺎء ﺑﺮدار ﻫﺮ ﻋﻨﺼﺮ از ﺑﺮدار ﺟﺎيﮔﺎه ﻳﺎ اﻧﺪﻳﺴﻲ دارد ﻛﻪ ﺑﺎ آن ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮد .در ﻣﺘﻠﺐ ﺷﻤﺎره ﺟﺎيﮔﺎه ﺑﺎ 1ﺷﺮوع ﻣﻲﺷﻮد ،ﻟﺬا ﻣﺮاﺟﻌﻪ ﺑﻪ ﻳﻚ ﻋﻀﻮ ﺑﺮدار ﺑﺴﻴﺎر آﺳﺎنﺗﺮ از زﺑﺎﻧﻲ ﻣﺎﻧﻨﺪ C++اﺳﺖ ﻛﻪ در آن اﻧﺪﻳﺲ از ﺻﻔﺮ ﺷﺮوع ﻣﻲﺷﻮد ﻣﺜﺎل زﻳﺮ روشﻫﺎي ﻣﺮاﺟﻌﻪ ﺑﻪ ﻋﻨﺎﺻﺮ ﺑﺮدار را ﺗﻮﺿﻴﺢ ﻣﻲدﻫﺪ.
ﻣﺜﺎل ﻫﺎ: ﻣﺮاﺟﻌﻪ ﺑﻪ ﻋﻨﺎﺻﺮ ﺑﺮدار ﺑﺎ ﭼﻨﺪ روشﻫﺎ 21
18
15
12
6
9
9 18
12 21
>> x = 0:3:23 x = 0 3 )>> x(1), x(3 ans = 0 ans = 6 )>> x(2:4 ans = 3 6 )>> x(1:2:8 ans = 0 6 )]>> x([1 5 8 ans = 0 12
ﺣﺬف ﻋﻨﺎﺻﺮ اول ،دوم ،و ﻫﻔﺘﻢ ﺑﺮدار 7
6
5
4 6
42
>> x = 1:7 x = 1 2 3 ][ = )]>> x([1 2 7 x = 3 4 5
8-3ﺑﺮدارﻫﺎي ﻣﻨﻄﻘﻲ ﻋﻨﺎﺻﺮ ﺑﺮدار ﻣﻨﻄﻘﻲ ،ﻣﺠﻤﻮﻋﻪاي از ﺻﻔﺮ و ﻳﻚﻫﺎي ﻣﻨﻄﻘﻲ ﻫﺴﺘﻨﺪ .ﺻﻔﺮ و ﻳﻚ ﻣﻨﻄﻘﻲ از ﻟﺤﺎظ ﻧﻮع ﺑﺎ ﺻﻔﺮ و ﻳﻚ ﻋﺪدي ﻓﺮق دارﻧﺪ .ﻣﺜﺎلﻫﺎي زﻳﺮ اﻳﻦ ﻣﻮرد را ﺗﻮﺿﻴﺢ ﻣﻲدﻫﻨﺪ .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ help logicalرا اﺟﺮا ﻛﻨﻴﺪ.
ﺗﺒﺪﻳﻞ ﺑﺮدار ﻋﺪدي ﺑﻪ ﻣﻨﻄﻘﻲ ﺑﺎ ﺗﺎﺑﻊ
)(logical
ﺗﺎﺑﻊ )( ، logicalﻳﻚ ﺑﺮدار ﺑﺎ اﻋﻀﺎء ﻋﺪدي را ﺑﻪ ﻳﻚ ﺑﺮدار ﺑﺎ اﻋﻀﺎء ﺻﻔﺮ و ﻳﻚِ ﻣﻨﻄﻘﻲ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ .ﻣﺘﻐﻴﺮ ﻣﻨﻄﻘﻲ ﻓﻘﻂ دو ﻣﻘﺪار درﺳﺘﻲ )ﻣﻨﻄﻖ ﻳﻚ( و ﻧﺎدرﺳﺘﻲ )ﻣﻨﻄﻖ ﺻﻔﺮ( را ﻣﻲﮔﻴﺮد ،ﻛﻪ از ﻟﺤﺎظ ﻧﻮع typeﺑﺎ 0و 1ﻋﺪدي ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ .ﻣﻘﺎدﻳﺮ ﻣﻨﻄﻘﻲ ﻳﻚ ﺑﺎﻳﺖ از ﺣﺎﻓﻈﻪ را اﺷﻐﺎل ﻣﻲﻛﻨﻨﺪ ،در ﺣﺎﻟﻲﻛﻪ ﻣﻘﺎدﻳﺮ ﻋﺪدي )از ﻧﻮع doubleﻛﻪ ﭘﻴﺶﻓﺮض ﻣﺘﻠﺐ اﺳﺖ( ﻫﺸﺖ ﺑﺎﻳﺖ ﺟﺎ ﻣﻲﮔﻴﺮﻧﺪ .اﮔﺮﭼﻪ آراﻳﻪﻫﺎي ﻋﺪدي ﺑﺎ اﻋﻀﺎء ﻏﻴﺮ از ﺻﻔﺮ و ﻳﻚ را ﻣﻲﺗﻮان ﺑﻪ آراﻳﻪ ﻣﻨﻄﻘﻲ ﺗﺒﺪﻳﻞ ﻛﺮد ،اﻣﺎ ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد ﻓﻘﻂ آراﻳﻪﻫﺎﺋﻲ ﺑﺎ اﻋﻀﺎء ﺻﻔﺮ و ﻳﻚِ ﻋﺪدي ﺑﻪ آراﻳﻪ ﻣﻨﻄﻘﻲ ﺗﺒﺪﻳﻞ ﺷﻮﻧﺪ .ﻣﻨﻄﻘﻲ ﺑﻮدن ﻳﻚ آراﻳﻪ ﺑﺎ ﺗﺎﺑﻊ )( islogicalاﻣﺘﺤﺎن ﻣﻲﺷﻮد. ﺗﻮاﺑﻌﻲ ﻛﻪ ﺻﺤﺖ ﻳﺎ ﺳﻘﻢِ اﻣﺮي را اﻣﺘﺤﺎن ﻣﻲﻛﻨﻨﺪ ،در ﺻﻮرت ﺻﺤﺖ ،ﻣﻨﻄﻖ ﻳﻚ و در ﺻﻮرت ﻛﺬب ،ﻣﻨﻄﻖ ﺻﻔﺮ ﺑﺮﻣﻲ- ﮔﺮداﻧﻨﺪ .ﻣﻌﻤﻮﻻٌ اﻳﻦ ﮔﻮﻧﻪ ﺗﻮاﺑﻊ ﺑﺎ is...ﺷﺮوع ﻣﻲﺷﻮﻧﺪ.
ﻣﺜﺎل ﻫﺎ: ﺳﺎﺧﺘﻦ ﺑﺮدار ﻣﻨﻄﻘﻲ ;]1
0
0
0
1
1
>> oz = [1 0 )>> islogical(oz ans = 0
ﻣﻘﺎدﻳﺮ ﺑﺮدار ozﻳﻚ وﺻﻔﺮ ﻋﺪدي ﻫﺴﺘﻨﺪ. 1
0
0
)>> ozL = logical(oz ozL = 1 0 1 1 0 8 )>> islogical(ozL ans = 1
اﮔﺮﭼﻪ ﻣﻘﺎدﻳﺮ دو ﺑﺮدار ozو ozLﺷﺒﻴﻪ ﻫﺴﺘﻨﺪ اﻣﺎ ﻧﻮع آنﻫﺎ ﻣﺘﻔﺎوت اﺳﺖ Workspace .را ﺑﺒﻴﻨﻴﺪ. ﻣﺸﺎﻫﺪه در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر Workspace ad = 1 = 1 )ag = logical(1 = 1 Workspace
>> ad >> ag
ﺷﻜﻞ 1-3
ﺣﺬف ﺑﻌﻀﻲ ﻋﻨﺎﺻﺮ آراﻳﻪ اﮔﺮ ﺑﺮدار ﻣﻨﻄﻘﻲ را اﻧﺪﻳﺲ ﺑﺮدار ﻋﺪدي ﻗﺮار دﻫﻴﻢ )اﻧﺪﻳﺲﮔﺬاري ﻣﻨﻄﻘﻲ ( Logical Indexingﻓﻘﻂ ﻋﻨﺎﺻﺮ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﻳﻚﻫﺎي ﻣﻨﻄﻘﻲ ﺑﺎﻗﻲ ﻣﻲﻣﺎﻧﻨﺪ .ﻋﻨﺎﺻﺮ ﺑﺮدار اﻧﺪﻳﺲ ﻣﻲﺗﻮاﻧﺪ از ﻋﻨﺎﺻﺮ ﺑﺮدار ﻋﺪدي ﻛﻢﺗﺮ ﺑﺎﺷﺪ ،اﻣﺎ ﺑﻴﺶﺗﺮ ﻧﻤﻲ- ﺗﻮاﻧﺪ ﺑﺎﺷﺪ. 43
ﻣﺜﺎل ﻫﺎ: ﺣﺬف ﭼﻨﺪ ﻋﻨﺼﺮ ;]10 11 12 ;)]1 0 1 1 1 0 1 Logical Indexing 6 8 10 12
>> Li = [2 4 5 6 8 >> Lg = logical([1 >> LiEv = Li(Lg) % LiEv = 2 4
ﻧﮕﻪ داري ﭼﻨﺪ ﻋﻨﺼﺮ ;]>> Li = [2 4 5 6 8 10 11 12 ;)]>> Lg = logical([1 1 1 )>> LiEv = Li(Lg LiEv = 2 4 5
ﺿﺮب ﺑﺮدار ﻋﺪدي در ﺑﺮدار ﻣﻨﻄﻘﻲ ﺑﺮاي ﺿﺮب ﻋﻨﺼﺮ ﺑﻪ ﻋﻨﺼﺮ ،ﻋﻼﻣﺖ ﺿﺮب آراﻳﻪاي * .ﺑﻪ ﻛﺎر ﻣﻲرود ،و دو آراﻳﻪ ﺑﺎﻳﺪ ﻫﻤﺴﺎن ﺑﺎﺷﻨﺪ .ﻧﺘﻴﺠﻪ ﺿﺮب ﻣﻨﻄﻖ در ﻋﺪد از ﻧﻮع ﻋﺪدي اﺳﺖ..
ﻣﺜﺎل ﻫﺎ: ﻣﺸﺎﺑﻪ ﺿﺮب ﻋﺪد در ﻋﺪد
12
10
0
;]>> Li = [2 4 5 6 8 10 11 12 ;)]>> Lg = logical([1 1 0 1 1 1 0 1 >> Lip = Li .* Lg Lip = 2 4 0 6 8 )>> islogical(Lip ans = 0 )>> isnumeric(Lip ans = 1
اﺳﺘﺨﺮاج ﺑﺮدار از ﺑﺮدار دﻳﮕﺮ 0 0
0 0
; >> r = 1 : 5 )>> rL = (r <= 3 rL = 1 1 1 >> s = r .* rL s = 1 2 3
ﻳﺎﻓﺘﻦ ﻣﺤﻞ ﻋﻨﺎﺻﺮي ﺑﺎ ﻣﻘﺪار ﻣﻌﻴﻦ ﻣﺜﺎل: ﻣﺤﻞ ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ 9ﺑﺮدار ] ab = [2 0 9 5 0 1.5 -6 9 0 -4.35را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ .ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ دو ﻋﻼﻣﺖ ﻣﺴﺎوي ﭘﻴﻮﺳﺘﻪ )==( ﺗﺴﺎوي دو ﺑﺮدار را ﺗﺴﺖ ﻣﻲﻛﻨﺪ. 0
0
1
0
;]>> ab = [2 0 9 5 0 1.5 -6 9 0 -4.35 >> ab == 9 ans = 0 0 1 0 0 0
ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ ِ 9ﺑﺮدار abدر ﻣﻜﺎنﻫﺎي ﺳﻮم و ﻫﺸﺘﻢ ﻗﺮار دارﻧﺪ.
ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ ﻣﻮرد ﻧﻈﺮ ﺑﺎ ﺗﺎﺑﻊ
)(find
ﺗﺎﺑﻊ )( findاﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ ﻣﻮرد ﻧﻈﺮ را در ﻳﻚ ﺑﺮدار دﻳﮕﺮ ﻗﺮار داده و ﺑﺮﻣﻲﮔﺮداﻧﺪ ،و آرﮔﻮﻣﺎن آن ﺑﺎﻳﺪ ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ ﺑﺎﺷﺪ .ﻋﺒﺎرت ) find(aﺑﺎ ) find(a ~= 0ﻣﻌﺎدل اﺳﺖ.
44
ﻣﺜﺎل ﻫﺎ: ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ 9 ;]>> ab = [2 0 9 5 0 1.5 -6 9 0 -4.35 )>> find(ab == 9 ans = 3 8 )>> ab(3),ab(8 ans = 9 ans = 9
راه ﺣﻞ دﻳﮕﺮ: 0
0
1
0
0
)>> k = (ab == 9 k = 0 0 1 0 0 )find(k ans = 3 8 )>> ab(3),ab(8 ans = 9 ans = 9
kﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ اﺳﺖ ﻛﻪ در ازاي ﻋﻨﺎﺻﺮ ﻣﺴﺎوي 9ﺑﺮدارِ abداراي ﻣﻨﻄﻖ ﻳﻚ )درﺳﺘﻲ( اﺳﺖ. ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ :ﻏﻴﺮﺻﻔﺮ ،ﻣﻨﻔﻲ ،و ﻧﺎﻣﻮﺟﻮد 10
;]>> ab = [2 0 9 5 0 1.5 -6 9 0 -4.35 )>> af1 = find(ab af1 = 1 3 4 6 7 8 )>> af2 = find(ab < 0 af2 = 7 10 find(ab == 8) % Not found ans = Empty matrix: 1-by-0
45
9-3ﺗﻤﺮﻳﻦ -1ﻋﺒﺎرات ][ = xو x = 0و clear xرا اﺟﺮا ﻛﻨﻴﺪ و ﻧﺘﺎﻳﺞ آنﻫﺎ را در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ﺑﺒﻴﻨﻴﺪ. -2ﻋﻨﺼﺮ ﺷﻤﺎره 5از ﺑﺮدار c = 1:10را ﺣﺬف ﻛﻨﻴﺪ. -3ﻋﻨﺎﺻﺮ ﺷﻤﺎر 1و 2و 8را از ﺑﺮدار x = 10:-1:1ﺣﺬف ﻛﻨﻴﺪ. -4ﻧﻤﺮهﻫﺎي ﺗﺮم ﺧﻮد را داﺧﻞ ﻳﻚ ﺑﺮدار ﻗﺮار دﻫﻴﺪ و ﺑﺎ ﻳﻚ دﺳﺘﻮر ﻣﻌﺪل را ﺣﺴﺎب ﻛﻨﻴﺪ. -5ﺧﺮﻳﺪﻫﺎي ﻣﺎه ﺧﻮد را داﺧﻞ ﻳﻚ ﺑﺮدار ﻗﺮار دﻫﻴﺪ و ﺑﺎ ﻳﻚ دﺳﺘﻮر ﺟﻤﻊ آنﻫﺎ را ﺣﺴﺎب ﻛﻨﻴﺪ. -6ﻳﻚ ﺑﺮدار ﻋﺪدي و ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ ﺑﺴﺎزﻳﺪ .ﺑﺮدار ﻣﻨﻄﻘﻲ را اﻧﺪﻳﺲ Rvﻗﺮار دﻫﻴﺪ .در Rvﺿﺮب ﻛﻨﻴﺪ. -7ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻋﺪدي 3×6ﺑﺎ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ 3×3ﺑﺴﺎزﻳﺪ ،ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ را در ﻣﻮرد آن اﺟﺮا ﻛﻨﻴﺪ. -8ﻳﻚ ﺑﺮدار ﻋﺪديِ ﺳﺘﻮﻧﻲ ﺑﻪ ﻧﺎم Rhﺑﺎ 5ﻋﻨﺼﺮ ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ .ﺑﺮدار y = Rh.^2را ﺑﻪ دﺳﺖ آورﻳﺪ. -9ﻣﺎﺗﺮﻳﺲ ﻣﺨﺘﻠﻂ pxرا ﺑﺎ ﻗﺴﻤﺖﻫﺎي ﺣﻘﻴﻘﻲ و ﻣﺠﺎزي im,reﺑﻪ دو ﻓﺮم ﻗﺎﺋﻢ و ﻗﻄﺒﻲ ﺑﻨﻮﻳﺴﻴﺪ .ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آنرا mag,tetﺑﮕﻴﺮﻳﺪ. ;]re = [-1 2 3.5]; im = [-4.5 5 6.2 -10ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ ﺳﻪ ﺻﻔﺤﻪاي ﺑﺎ ﺻﻔﺤﺎت 4×3ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ .از ﺻﻔﺤﻪﻫﺎي ﺳﺎزﻧﺪهي ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ ﻓﻮق:
ﻳﻚ ﻣﺎﺗﺮﻳﺲ دوﺑﻌﺪي ،و ﻳﻚ ﺑﺮدار ﺗﻚ ﺳﺘﻮﻧﻲ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ .ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ را در ﻣﻮرد اﻳﻦ ﻣﺎﺗﺮﻳﺲﻫﺎ اﺟﺮا و ﻧﺘﺎﻳﺞ را ﺑﺮرﺳﻲ ﻛﻨﻴﺪ. -11ﻣﺎﺗﺮﻳﺲ Bرا از ﺳﺘﻮن 2و ﺳﺘﻮن 4ﻣﺎﺗﺮﻳﺲ Aاﺳﺘﺨﺮاج ﻛﻨﻴﺪ .ﻣﺎﺗﺮﻳﺲ Cرا از ردﻳﻒ 2و ردﻳﻒ 3ﻣﺎﺗﺮﻳﺲ A
اﺳﺘﺨﺮاج ﻛﻨﻴﺪ. ];A = [1 2 3 -8; 4 -5 0 9; -1 -2 3 0 -13ﺑﺮدار a = 0:4را دو ﺑﺎر ﺗﻜﺮار ﻛﻨﻴﺪ .ﺑﺎ اﺳﺘﻔﺎده از ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ ﺻﻔﺮﻫﺎي aرا ﺣﺬف ﻛﻨﻴﺪ. -14اﻳﻦ ﺑﺮدار ﻋﺪدي را درﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ5] :
4
8
9
4
7
4
1
0
rv = [2ﺑﺎ اﺳﺘﻔﺎده
از ﺑﺮدار ﻣﻨﻄﻘﻲ ﻋﻨﺎﺻﺮ ﻛﻮﭼﻚﺗﺮ از ﻳﺎ ﻣﺴﺎوي ﺑﺎ 4ﺑﺮدار rvرا در nvﻗﺮار دﻫﻴﺪ. -15ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺘﺎﻳﺞ زﻳﺮ ﻣﻘﺪار ﺑﺮدار aرا ﺣﺪس ﺑﺰﻧﻴﺪ: 0
1
1 3
1 2
1 1
0 0
1 3
1 2
>> a4 = a < 4 a4 = 1 1 )>> a(a4 ans = 0 1
-16ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺘﻴﺠﻪ زﻳﺮ ﺑﺮدار abرا ﺑﺎ 10ﻋﻨﺼﺮ ﺑﻨﻮﻳﺴﻴﺪ ،آﻳﺎ afﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ اﺳﺖ؟ 10
8
7
6
)>> af = find(ab af = 1 3 4
-17ﺑﺎ داﺷﺘﻦ) Vk = magic(3ﻧﺘﺎﻳﺞ ﺣﺎﺻﻞ از اﺟﺮاي دﺳﺘﻮرات زﻳﺮ را ﺑﻪ دﺳﺖ آورﻳﺪ. 'b6 = (Vk < 7), b = Vk(b6), b )bn = Vk(1:1,1:3 )b1 = repmat(bn,1,3), b2 = repmat(bn,3,1), b3 = repmat(bn,3,3 )diag(Vk), tril(Vk), triu(Vk) inv(Vk), expm(Vk), det(Vk -18ﻣﺎﺗﺮﻳﺲ ﭘﺎﺳﻜﺎل ) ps = pascal(5را ﺑﺎ ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ.
46
>> >> >> >>
ﻓﺼﻞ 4دﺳﺘﻮرﻫﺎ و ﺗﻮاﺑﻊ ورودي ﺧﺮوﺟﻲ 1-4درﻳﺎﻓﺖ ورودي ﻣﻌﻤﻮﻻً در ﻳﺎﻓﺖ ﻣﺘﻐﻴﺮﻫﺎ از ﺻﻔﺤﻪ ﻛﻠﻴﺪ از داﺧﻞ ﺑﺮﻧﺎﻣﻪ اﻧﺠﺎم ﻣﻲﺷﻮد .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﻪ ﻓﺼﻞ ﻣﺮﺑﻮﻃﻪ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ.
درﻳﺎﻓﺖ ﺑﺎ
)(input
اﻳﻦ دﺳﺘﻮر ﻣﻘﺪار ﻳﻚ ﻣﺘﻐﻴﺮ )آراﻳﻪ( را از ﺻﻔﺤﻪ ﻛﻠﻴﺪ درﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ .ﭘﻴﻐﺎم ﻻزم را ﻧﻴﺰ ﻣﻲﺗﻮان در آن ﮔﻨﺠﺎﻧﺪ. در ﺟﻮاب )( inputﻣﻲﺗﻮان ﻳﻚ ﻣﺎﺗﺮﻳﺲ ،ﻳﻚ ﺗﺎﺑﻊ داﺧﻠﻲِ ﻣﺘﻠﺐ )ﻣﺜﻞ ،(rand ():ﻳﺎ ﻳﻚ ﻣﺤﺎﺳﺒﻪ )ﻣﺜﻞ ،(a+b :را وارد ﻛﺮد ﺑﻪ ﺷﺮﻃﻲ ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﻴﺮﻫﺎي ﻣﻮﺟﻮد در آنﻫﺎ از ﻗﺒﻞ ﻣﻌﻴﻦ ﺑﺎﺷﺪ.
ﻣﺜﺎل ﻫﺎ: درﻳﺎﻓﺖ ﺑﺮدار ﻋﺪدي )' >> a = input('Enter a number vector: ]Enter a number: [2 2.5 3 3.5 a = 2 2.5 3 3.5
ورود ﺗﺮﻛﻴﺒﻲ از ﻳﻚ ﻋﺪد و ﻳﻚ ﻣﺘﻐﻴﺮ از ﭘﻴﺶ ﺗﻌﺮﻳﻒ ﺷﺪه ) aﻣﺜﺎل ﻓﻮق( )' >> b = input('Enter another number using a: )Enter another number using a: 3 + a(1 b = 5
ورود ﻳﻜﻲ از ﺗﻮاﺑﻊ ﺗﻮﺳﺎﺧﺖ ﻣﺘﻠﺐ )' >> d = input('Enter a function using previous variables: )Enter a function using previous variables: rand(a,b d = 0.9501 0.6068 0.8913 0.4565 0.8214 0.2311 0.4860 0.7621 0.0185 0.4447
درﻳﺎﻓﺖ رﺷﺘﻪ )'>> nam = input('Enter the student name: ','s ﻗﺮار دادن ' 'sﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن دوم )( inputﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﺑﺘﻮاﻧﻴﻢ ﻳﻚ رﺷﺘﻪ را ﺑﻪ wrﻧﺴﺒﺖ دﻫﻴﻢ % Enter the student name: Mostafa nam = Mostafa
درﻳﺎﻓﺖ ﺑﺎ
keyboard
دﺳﺘﻮر keyboardﻣﺎ را آزاد ﻣﻲﮔﺬارد ﻛﻪ ﻫﺮ ﺗﻌﺪاد ﻣﺘﻐﻴﺮ از ﻫﺮ ﻧﻮع را ﻣﻘﺪار دﻫﻲ ﻛﻨﻴﻢ ،ﺑﺮاي ﻣﻘﺪار دﻫﻲ ﺑﺎﻳﺪ ﻧﺎم ﻣﺘﻐﻴﺮ و ﻋﻼﻣﺖ ﺗﺴﺎوي را در ﻣﻘﺎﺑﻞ ﻧﺸﺎﻧﻪي >> Kﺑﻨﻮﻳﺴﻴﻢ .ﺑﺮاي ﺧﺮوج از ﻣﺤﻴﻂ keyboardﺑﺎﻳﺪ >
ﻣﺜﺎل: >> disp('Enter A, B, C'), keyboard Enter A, B, C ;'K>> A=-1:3; B=[9 -4.5]; C = 'new
2-4ارﺳﺎل ﺧﺮوﺟﻲ ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ،دﺳﺘﻮر
)disp(var
آرﮔﻮﻣﺎن )( dispﻳﻚ آراﻳﻪ اﺳﺖ ،و اﻋﻀﺎء آن ﺑﺎﻳﺪ از ﻳﻚ ﻧﻮع ﺑﺎﺷﻨﺪ .اﮔﺮ آرﮔﻮﻣﺎن ﻳﻚ ﺑﺮدار ﺳﻠﻮﻟﻲ ﺑﺎﺷﺪ .ﻫﺮ ﻋﻀﻮ ﺟﺪاﮔﺎﻧﻪ ﻧﺸﺎن داده ﺧﻮاﻫﺪ ﺷﺪ. 47
ﻣﺜﺎلﻫﺎ: ﻣﺘﻐﻴﺮﻫﺎي ﻧﺎﻫﻢﺟﻨﺲ ;' >> x = 6.5; mv = 'MATLAB Version is ;)])>> disp([mv num2str(x MATLAB Version is 6.5 ﺗﺎﺑﻊ ) num2str(xﻋﺪد را ﺑﻪ رﺷﺘﻪ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ.
ﻣﺘﻐﻴﺮﻫﺎي ﻫﻢﺟﻨﺲ ;>> v = version ;)]>> disp([mv v )MATLAB Version is 6.5.0.180913a (R13 versionﻳﻚ ﻣﺘﻐﻴﺮِ رﺷﺘﻪايِ داﺧﻠﻲ ﻣﺘﻠﺐ اﺳﺖ ،ﻛﻪ وﻳﺮاﺳﺖ آن را ﻧﮕﻪداري ﻣﻲﻛﻨﺪ.
آراﻳﻪ ﺳﻠﻮﻟﻲ ;}>> C ={ 'MATLAB Version is ', 6.5 ;)>> disp(C ' 'MATLAB Version is ][6.5000
ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ،دﺳﺘﻮر
)(fprintf
اﻳﻦ ﺗﺎﺑﻊ ﻛﺎﻣﻼٌ ﻣﺸﺎﺑﻪ ﻧﻈﻴﺮش در زﺑﺎن C++اﺳﺖ و اﻣﻜﺎن ﺗﺮﻛﻴﺐ ﻋﺪد و رﺷﺘﻪ و دادن ﻓﺮم دلﺧﻮاه ﺑﻪ اﻋﺪاد را در ﺧﺮوﺟﻲ ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ .ﻋﻼﺋﻢ %d, %i, %o, %u, %x, %X, %f, %e, %E, %g, %G, %c, %s :ﻋﻼﺋﻢ ﺗﻌﻴﻴﻦ ﻓﺮﻣﺖ ﺧﺮوﺟﻲ Format Specifierﻫﺴﺘﻨﺪ .ﻋﻼﺋﻢ \n, \t, \b, ...دﺳﺘﻮرﻫﺎي ﭼﺎﭘﻲ ﻳﺎ escape codeﻫﺴﺘﻨﺪ .ﻓﺮﻣﺖ (good) %gﻣﺸﺎﺑﻪ %fو ﺑﺎ اﻧﺘﺨﺎب ﻓﺮم ﻣﻨﺎﺳﺐ ﻋﻤﻞ ﻣﻲﻛﻨﺪ .ﻋﻼﺋﻢ %sو %fﺑﻪ ﺗﺮﺗﻴﺐ ﻓﺮﻣﺖ ﭼﺎپ رﺷﺘﻪ ) (stringو اﻋﺸﺎري ) (floatﻫﺴﺘﻨﺪ .ﻋﺒﺎرت %7.2fﻫﻔﺖ ﻣﻜﺎن ﺑﺮاي ﭼﺎپ ﻣﻌﺪل اﺧﺘﺼﺎص داده و ارﻗﺎم ﺑﻌﺪاز ﻣﻤﻴﺰ را ﺑﻪ دو رﻗﻢ ﮔﺮد ﻣﻲﻛﻨﺪ .ﻋﻼﻣﺖ (new line) \nاداﻣﻪ ﭼﺎپ را ﺑﻪ ﺳﻄﺮ ﺑﻌﺪ ﻣﻨﺘﻘﻞ ﻣﻲﻛﻨﺪ .ﭼﻴﻨﺶ ﭘﻴﺶﻓﺮض ﺧﺮوﺟﻲ راﺳﺖﭼﻴﻦ اﺳﺖ ،ﻋﻼﻣﺖ ﻣﻨﻔﻲ ﺑﻌﺪ از %ﺧﺮوﺟﻲ را ﭼﭗﭼﻴﻦ ﻣﻲﻛﻨﺪ. ﻛﺎرﺑﺮد ﺑﻌﻀﻲ از اﻳﻦ ﻋﻼﺋﻢ در ﻣﺜﺎلﻫﺎ آﻣﺪهاﻧﺪ .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ help fprintfﻣﺮاﺟﻌﻪ ﻧﻤﺎﺋﻴﺪ.
ﻣﺜﺎل ﻫﺎ: ﮔﺮد ﻛﺮدن ﺗﺎ ﺳﻪ رﻗﻢ ﺑﻌﺪ از ﻧﻘﻄﻪ ﻣﻤﻴﺰ ،راﺳﺖﭼﻴﻦ ﻛﺮدن داﺧﻞ ﻛﺮﺳﻲ ;]>> av = [17.4537 4.57 15.3 17.869 3.7 ;'>> nam = 'Students Average: ;)>> fprintf('%s\n', nam);fprintf('%7.3f\n', av Students Average: 17.454 4.570 15.300 17.869 3.700
ﭼﭗﭼﻴﻦ ﻛﺮدن داﺧﻞ ﻛﺮﺳﻲ ;)>> fprintf('%s\n', nam);fprintf('%-7.3f\n', av Students Average: 17.454 4.570 15.300 17.869 3.700
48
دﺳﺘﻮر
echo off/on
echo offﻧﻤﺎﻳﺶ دﺳﺘﻮرات ﺑﺮﻧﺎﻣﻪ ﺑﺮ روي ﭘﻨﺠﺮه را ﻣﺘﻮﻗﻒ و ﻓﻘﻂ ﻧﺘﺎﻳﺞ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ .اﻳﻦ دﺳﺘﻮر ﻓﻘﻂ از داﺧﻞ ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻠﻴﺖ اﺟﺮاﺋﻲ دارد و ﻧﺒﺎﻳﺪ ﻣﺴﺘﻘﻴﻤﺎً از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﺷﻮد .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺜﺎلﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ echo on .ﺑﺮﻋﻜﺲ ﻋﻤﻞ ﻣﻲﻛﻨﺪ .ﺑﺮاي ﻃﻼع ﺑﻴﺸﺘﺮ help echoرا ﺟﺮا ﻛﻨﻴﺪ.
دﺳﺘﻮر
pause
اﻳﻦ دﺳﺘﻮر اﺟﺮا را دراﻧﺘﻈﺎر ﻋﻤﻞ ﻛﺎرﺑﺮ ﻣﺘﻮﻗﻒ ﻣﻲﻛﻨﺪ pause(n) .ﺑﻪ اﻧﺪازه nﺛﺎﻧﻴﻪ ﻣﻲاﻳﺴﺘﺪ و ﺳﭙﺲ اداﻣﻪ ﻣﻲدﻫﺪ.
3-4ﺿﺒﻂ ﺑﺮ روي دﻳﺴﻚ ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﻓﺎﻳﻞ ﻣﺘﻦ
.TXT
ﻣﻲﺗﻮان آنﭼﻪ را ﻛﻪ ﺑﺮروي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻣﻲآﻳﺪ ﺑﺎ دﺳﺘﻮر)( fprintfدر ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ ﺿﺒﻂ ﻛﺮد. ﻧﺎم اﻳﻦ ﻓﺎﻳﻞ ﺑﺮ روي دﻳﺴﻚ اﺧﺘﻴﺎري اﺳﺖ و ﻣﻌﻤﻮﻻٌ ﺑﺎ ﭘﺴﻮﻧﺪ .TXTاﻧﺘﺨﺎب ﻣﻲﺷﻮد. ﻫﻨﮕﺎم ﺑﺎز ﺷﺪن ﻓﺎﻳﻞ ﻳﻚ ﻧﺎم ﻣﺴﺘﻌﺎر ﺑﻪ آن اﺧﺘﺼﺎص ﻣﻲﻳﺎﺑﺪ .ﻧﺎم ﻣﺴﺘﻌﺎر ﻳﻚ ﻋﺪد اﺳﺖ ﻛﻪ ﻣﺘﻠﺐ در دﺳﺘﻮرات داﺧﻠﻲ ﺧﻮد از آن اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ .در دﺳﺘﻮرات ﺳﻴﺴﺘﻤﻲ ﻧﺎم دﻳﺴﻜﻲ ﻓﺎﻳﻞ ﻣﻲآﻳﺪ .ﻳﻚ ﻣﺜﺎلِ ﺑﺎز ﻛﺮدن ﻓﺎﻳﻞ ﺑﺮاي ﻧﻮﺷﺘﻦ ﭼﻨﻴﻦ اﺳﺖ: ;)'myf = fopen('nam.txt','w ↑ ↑ ↑ ↑
ﺑﺮاي ﻧﻮﺷﺘﻦ ﻧﺎم ﻓﺎﻳﻞ دﺳﺘﻮر ﺑﺎز ﻛﺮدن ﻧﺎم ﻣﺴﺘﻌﺎر
ﻣﺜﺎل: ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ .TXTاﻳﺠﺎد ﻣﻲﻛﻨﻴﻢ .آراﻳﻪ ﻧﻤﺮات و ﻋﻨﻮان را در آن ﻧﻮﺷﺘﻪ ،ﻓﺎﻳﻞ را ﻣﺸﺎﻫﺪه )ﺷﻜﻞ (1-4و ﺳﭙﺲ ﭘﺎك ﻣﻲﻛﻨﻴﻢ .ﻧﺎم ﻣﺴﺘﻌﺎر ﻓﺎﻳﻞ ، myfو ﻧﺎم دﻳﺴﻜﻲ ﻓﺎﻳﻞ nam.txtاﺳﺖ. >> av = ... ;][17.4537 4.57 15.3 17.869 3.7 ;'>> Tit = 'Students Average: ;)'>> myf = fopen('nam.txt','w ;)>> fprintf(myf,'%s\n',Tit اﺳﺘﻔﺎده از ﻧﺎم ﻣﺴﺘﻌﺎر ﻓﺎﻳﻞ % ;)>> fprintf(myf,'%7.3f\n',av ;)>> fclose(myf اﻳﻦ دﺳﺘﻮر را ﺣﺘﻤﺎٌ ﺑﻨﻮﻳﺴﻴﺪ % ﺷﻜﻞ 1-4
>> open nam.txt اﺳﺘﻔﺎده از ﻧﺎم دﻳﺴﻜﻲ ﻓﺎﻳﻞ در دﺳﺘﻮر ﺳﻴﺴﺘﻤﻲ % >> delete nam.txt
ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﻣﺘﻦ
.TXT
ﻣﺜﺎل: ﺑﺮﻧﺎﻣﻪاي ﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻣﻘﺎدﻳﺮ x = 0.1: 0.1: 1را ﻫﻢراه ) log10(xﺑﻪ ﺻﻮرت ﻳﻚ ﻣﺎﺗﺮﻳﺲ در ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ ﻧﮕﻪداري ﻛﻨﺪ .ﻓﻀﺎي ﻛﺎر را ﭘﺎك ﻛﺮده اﻃﻼﻋﺎت ﻓﺎﻳﻞ ﻣﺘﻦ را وارد ﻓﻀﺎي ﻛﺎر ﻛﺮده ،و ﻣﺎﺗﺮﻳﺲ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ .ﻓﺎﻳﻞ ﻣﺘﻦ را ﺣﺬف ﻣﻲﻛﻨﻴﻢ.
49
>> x = 0.1: 0.1: 1; >> y = [x; log10(x)]; >> fl = fopen('lgt.txt','w'); % open to write >> fprintf(fl,'%f %f\n',y); >> fclose(fl); >> load lgt.txt >> lgt >> delete lgt.txt >> tx
lgt = 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 .MAT
-1.0000 -0.6990 -0.5229 -0.3979 -0.3010 -0.2218 -0.1549 -0.0969 -0.0458 0
ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﺑﺎﻳﻨﺮي
دﺳﺘﻮر، ﺿﺒﻂ ﻣﻲﻛﻨﺪfilename.mat ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻓﻀﺎي ﻛﺎر را در ﻓﺎﻳﻞ ﺑﺎﻳﻨﺮيsave filename دﺳﺘﻮر در اﺟﺮاﻫﺎي، ﻣﺘﻐﻴﺮﻫﺎي ﺿﺒﻂ ﺷﺪه در ﻓﺎﻳﻞ. را در ﻓﺎﻳﻞ ﺿﺒﻂ ﻣﻲﻛﻨﺪvar ﻓﻘﻂ ﻣﺘﻐﻴﺮsave filename var fclose() اﺟﺮاي دﺳﺘﻮر. دوﺑﺎره در ﻓﻀﺎي ﺣﺎﻓﻈﻪ ﺑﺎر ﻣﻲﺷﻮﻧﺪload filename ﺑﻌﺪي ﻣﺘﻠﺐ ﺑﺎ دﺳﺘﻮر
.ﻓﺮاﻣﻮش ﻧﺸﻮد
:ﻣﺜﺎل >> >> >> >> >>
x = 0.1: 0.1: 1; y = [x; log10(x)]; y = y'; save lgm y % saves only variable y mtt
:در اﺟﺮاي ﺑﻌﺪي ﻣﺘﻠﺐ >> clear >> load lgm >> y
y = 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
-1.0000 -0.6990 -0.5229 -0.3979 -0.3010 -0.2218 -0.1549 -0.0969 -0.0458 0 port
ﺑﺎز ﻛﺮدن درﮔﺎه :ﻣﺜﺎل
. و آن را ﻣﻲﺑﺒﻨﺪﻳﻢ، ﺧﻮاص آن را ﻣﺸﺎﻫﺪه، را ﺑﺎز ﻛﺮدهCOM3 درﮔﺎه >> >> >> >>
sr = serial('COM3'); fopen(sr) sr fclose(sr)
Serial Port Object : Serial-COM3 Communication Settings Port: COM3 BaudRate: 9600 Terminator: 'LF' Communication State Status: open RecordStatus: off . . . .
50
4-4ﺗﻤﺮﻳﻦ -1ﻋﺪد in = 9322034.52347468را ﺑﺎ ﻓﺮﻣﺖﻫﺎي %eو %10.3fو %gﻧﻤﺎﻳﺶ دﻫﻴﺪ ،و از ﻛﺪﻫﺎي\tو \nﻧﻴﺰ اﺳﺘﻔﺎده ﻛﻨﻴﺪ. -2ﺳﻪ ﻋﺪد av1 = 17.45و av2 = 18.34و av3 = 15.8را در ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎم num.txtﺑﻨﻮﻳﺴﻴﺪ. ﻓﺎﻳﻞ را )( fcloseﻛﻨﻴﺪ .ﻓﺎﻳﻞ را ﺑﺮاي ﻣﺸﺎﻫﺪه ﺑﺎز ﻛﻨﻴﺪ .ﻓﺎﻳﻞ را ﺑﺎ دﺳﺘﻮر load num.txtﺑﻪ ﺻﻮرت ﻳﻚ آراﻳﻪ ﺑﻪ ﻧﺎم numوارد ﺣﺎﻓﻈﻪ ﻛﺮده و ﻣﻘﺪار آن را ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ .ﻓﺎﻳﻞ num.txtرا ﭘﺎك ﻛﻨﻴﺪ .راﻫﻨﻤﺎ :اﻋﺪادي ﻛﻪ ﺑﻪ ﺻﻮرت آراﻳﻪ در ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ ﻧﮕﻪداري ﺷﻮﻧﺪ ﺑﺎ دﺳﺘﻮر load filenameدر ﺣﺎﻓﻈﻪ ﺑﻪ ﺻﻮرت ﻣﺘﻐﻴﺮ ﺑﺎر ﻣﻲﺷﻮﻧﺪ.
51
ﻓﺼﻞ 5آﺷﻨﺎﺋﻲ ﺑﺎ ﺗﺮﺳﻴﻤﺎت 1-5ﺻﻔﺤﻪ ﻫﺎي ﻣﺨﺘﺼﺎت ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ اﻋﻠﺐ ﺗﺮﺳﻴﻤﺎت ﻣﺘﻠﺐ در ﻣﻴﺎن دو ﻣﺤﻮر )ﺳﻪ ﻣﺤﻮر ﺑﺮاي رﺳﻢ ﺳﻪ ﺑﻌﺪي( رﺳﻢ ﻣﻲﺷﻮﻧﺪ .ﻣﺤﻮرﻫﺎي اﻓﻘﻲ ،ﻋﻤﻮدي ،و ﻓﻀﺎﺋﻲ در ﻣﺘﻠﺐ ﺑﻪ ﺗﺮﺗﻴﺐ Xو ) Yو Zﺑﺮاي رﺳﻢ ﺳﻪ ﺑﻌﺪي( ﻧﺎم دارﻧﺪ .ﻣﺨﺘﺼﺎت ﻧﻘﺎطِ ﺳﺎزﻧﺪه ﻣﻨﺤﻨﻲ ﻫﺎ )ﺳﻄﻮح ﺑﺮاي رﺳﻢ ﺳﻪ ﺑﻌﺪي( روي اﻳﻦ ﻣﺤﻮرﻫﺎ ﻣﺸﺨﺺ ﻣﻲﺷﻮﻧﺪ. ﺑﻌﻀﻲ از دﺳﺘﻮرات ﺗﺮﺳﻴﻤﻲ ﻧﻈﻴﺮ ﺧﺎﻧﻮادهي )( plotﺗﻮﺳﻂ ﻣﺘﻠﺐ درون ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ)ﻃﻮل ، Xﻋﺮض (Y رﺳﻢ ﻣﻲﺷﻮﻧﺪ.
ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ دﺳﺘﻮراﺗﻲ ﻧﻈﻴﺮ)( compass(),polarدرون ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ )زاوﻳﻪ ، θﺑﺰرﮔﻲ (rرﺳﻢ ﻣﻲﺷﻮﻧﺪ.
ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ و ﻗﻄﺒﻲ ﻧﺤﻮه ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻧﻘﻄﻪي Aﺑﺎ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ) (x,yو ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ) rو (thetaدر ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ. ﻧﻮع ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت
ﻓﺮﻣﻮل )[theta,r] = cart2pol(x,y
ﻗﺎﺋﻢ ﺑﻪ ﻗﻄﺒﻲ
)[x,y] = pol2cart(theta,r
ﻗﻄﺒﻲ ﺑﻪ ﻗﺎﺋﻢ
2-5ﺑﺮدار و رﺳﻢ ﻣﻨﺤﻨﻲ ،دﺳﺘﻮرﻫﺎي
)(plot(), comet
ﻛﺎر ﺗﺮﺳﻴﻢ آراﻳﻪﻫﺎ ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ )ﻳﺎ ﺗﺮﺳﻴﻢ ﺗﻮاﺑﻌﻲ ﻛﻪ آراﻳﻪﻫﺎ را ﺑﻪ ﻫﻢ رﺑﻂ ﻣﻲدﻫﻨﺪ( ﺑﺴﻴﺎر آﺳﺎن اﺳﺖ. دﺳﺘﻮر) plot(t,xﻋﻨﺎﺻﺮ ﺑﺮدار xرا ﺑﺮ ﺣﺴﺐ ﺑﺮدار tﻧﻈﻴﺮ ﺑﻪ ﻧﻈﻴﺮ ﺑﻪ ﺻﻮرت ﻧﻘﺎﻃﻲ روي ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ ﻗﺮار ﻣﻲدﻫﺪ) ،ﻫﺮ دو ﺑﺮدار ﺑﺎﻳﺪ ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ ﺑﺎﺷﻨﺪ( ﺳﭙﺲ آنﻫﺎ را ﺑﻪ ﻫﻢ وﺻﻞ و ﻣﻨﺤﻨﻲ ﻣﻮرد ﻧﻈﺮ را اﻳﺠﺎد ﻣﻲﻛﻨﺪ. ﻣﺜﺎل ﺗﻮﺿﻴﺤﻲ زﻳﺮ اﺻﻮل ﻛﺎر را ﺑﻴﺎن ﻣﻲﻛﻨﺪ.
ﻣﺜﺎل: ﺑﺮاي رﺳﻢ ﻣﻌﺎدﻟﻪ ﻳﻚ ﺳﻬﻤﻲ اﺑﺘﺪا ﻳﻚ آراﻳﻪ ﺷﺎﻣﻞ ﻣﻘﺎدﻳﺮ xﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ: ;]>> x = [-4 -3 -2 -1 0 1 2 3 4
ﺳﭙﺲ ﺗﺎﺑﻊ ﻣﻮرد ﻧﻈﺮ را ﻣﻴﻨﻮﻳﺴﻴﻢ: ;]-7 -13
-3
-1
-1
-3
-7
>> y = [-21 -13
و ﺑﺎ ﻳﻚ دﺳﺘﻮر ﺳﺎده yرا ﺑﺮ ﺣﺴﺐ xﻧﻘﻄﻪ ﺑﻪ ﻧﻘﻄﻪ رﺳﻢ ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ (1-5 )'>> plot(x,y,'o
اﮔﺮ ﭘﺎراﻣﺘﺮ ' 'oرا از دﺳﺘﻮر ﺣﺬف ﻛﻨﻴﻢ ،ﻧﻘﺎط ﺑﻪ ﺻﻮرت اﺗﻮﻣﺎﺗﻴﻚ ﺑﻪ ﻳﻚدﻳﮕﺮ وﺻﻞ و ﺗﺮﺳﻴﻢ ﺷﻜﻞ ﻣﻨﺤﻨﻲ ﺑﻪ ﺧﻮد ﻣﻲ- ﮔﻴﺮد .ﺑﺮاي داﺷﺘﻦ ﻣﻨﺤﻨﻲ ﺑﺪون ﺷﻜﺴﺖ ﺑﺎﻳﺪ ﻧﻘﺎط ﺑﻴﺸﺘﺮي را ﺑﻪ xو ﻧﺘﻴﺠﺘﺎٌ ﺑﻪ yﻧﺴﺒﺖ داد .دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺑﺮاي رﺳﻢ دو آراﻳﻪ ﻋﺪدي ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ آن دو ﺑﺎﻳﺪ ﻫﻢﺳﺎن ﺑﺎﺷﻨﺪ .ﺻﻮرت ﻓﺮﻣﻮﻟﻲ ﻣﻌﺎدﻟﻪ ﺳﻬﻤﻲ ﭼﻨﻴﻦ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد: y = -x.^2 + x - 1
ﺑﺮاي ﺑﻪ ﺗﻮان رﺳﺎﻧﺪن ﺗﻚﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ )ﺗﻮان آراﻳﻪاي( از ﻋﻼﻣﺖ ^ .اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ. دﺳﺘﻮر )( cometﻋﻴﻨﺎً ﺷﺒﻴﻪ )( plotﻋﻤﻞ ﻣﻲﻛﻨﺪ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ رﺳﻢ را ﺑﺎ ﺣﺮﻛﺖ آﻫﺴﺘﻪ ﺑﻪ ﺻﻮرت ﭘﻮﻳﺎ ﻧﻤﺎﺋﻲ اﻧﺠﺎم ﻣﻲدﻫﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(.
52
)plot(x,y
)'plot(x,y,'o ﺷﻜﻞ 1-5
دﺳﺘﻮرﻫﺎي
figure(), subplot(), hold on/off, clf
دﺳﺘﻮرﻫﺎي زﻳﺎدي در ارﺗﺒﺎط ﺑﺎ ﺗﺮﺳﻴﻤﺎت وﺟﻮد دارﻧﺪ ﻛﻪ ﺟﻬﺖ آﺷﻨﺎﺋﻲ ﺑﺮﺧﻲ از ﻣﻌﻤﻮلﺗﺮﻳﻦ آنﻫﺎ را ذﻛﺮ ﻣﻲﻛﻨﻴﻢ: دﺳﺘﻮر clfﭘﻨﺠﺮه ﺟﺎري ﮔﺮاف را ﭘﺎك ﻛﺮده و ﺑﺮاي ﮔﺮاف ﺟﺪﻳﺪ ﺑﺎز ﻧﮕﻪﻣﻲدارد. دﺳﺘﻮر hold onﭘﻨﺠﺮه ﺟﺎري را ﺑﺮاي ﮔﺮاف ﺟﺪﻳﺪ ﺑﺎز ﻧﮕﻪﻣﻲدارد. دﺳﺘﻮر) subplot(2,2,nﺻﻔﺤﻪ ﮔﺮاف را ﺑﻪ ﭼﻬﺎر ﻗﺴﻤﺖ ﻣﺴﺎوي ﺗﻘﺴﻴﻢ ﻣﻲﻛﻨﺪ ،ﻋﺪد 4>= n >=1ﻳﻜﻲ از اﻳﻦ ﭼﻬﺎر ﻗﺴﻤﺖ را ﻓﻌﺎل ﻣﻲﻛﻨﺪ .دﺳﺘﻮر) subplot(1,2,mو دﺳﺘﻮر ) subplot(2,1,mﺻﻔﺤﻪ ﮔﺮاف را ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﻪ دوﻗﺴﻤﺖ ﻋﻤﻮدي و اﻓﻘﻲ ﺗﻘﺴﻴﻢ ﻣﻲﻛﻨﻨﺪ . 2>= m >=1اﻣﺘﺤﺎن ﻛﻨﻴﺪ. دﺳﺘﻮر ) figure(pﻳﻚ ﭘﻨﺠﺮه ﺟﺪﻳﺪ ﮔﺮاف ﺑﺎ ﺷﻤﺎره pﺑﺎز و آن را ﭘﻨﺠﺮه ﺟﺎري ﻣﻲﻛﻨﺪ.
اﻓﺰودن ﺗﻮﺿﻴﺤﺎت روي ﻣﻨﺤﻨﻲ ﺟﺪول زﻳﺮ ﺑﻌﻀﻲ از ﺗﻮﺿﻴﺤﺎﺗﻲ را ﻛﻪ ﻣﻲﺗﻮان ﺑﺮروي ﮔﺮاف آورد ﻧﺸﺎن ﻣﻲدﻫﺪ .ﺳﻪ ﻧﻘﻄﻪ ﻳﻌﻨﻲ ﺷﺮح ﻣﻮرد ﻧﻈﺮ ﺧﻮدﺗﺎن: ﺷﺮح
ﻋﻨﻮان ﻣﻨﺤﻨﻲ
ﺑﺮﭼﺴﺐ ﻣﺤﻮر x
ﺑﺮﭼﺴﺐ ﻣﺤﻮر y
دﺳﺘﻮر )'ylabel('...') xlabel('...') title('... 'ylabel '... 'xlabel '... 'title '...
ﭘﻨﺠﺮه
ﺑﺮﭼﺴﺐ رﻧﮓ ﭼﻨﺪ ﻣﻨﺤﻨﻲ )(legend
Data Statistics
اﮔﺮ ﭘﺲ از رﺳﻢ ﻧﻤﻮدار در ﭘﻨﺠﺮه Figureزﻳﺮ -ﻣﻨﻴﻮي Tools_Data Statisticsرا اﻧﺘﺨﺎب ﻛﻨﻴﻢ ،ﺗﺮﺗﻴﺐ ﻣﻨﺤﻨﻲﻫﺎ روي ﭘﻨﺠﺮه Figureﻧﺸﺎن داده ﺷﺪه ،و ﭘﻨﺠﺮه Data Statisticsﻇﺎﻫﺮ ﻣﻲﺷﻮد اﻳﻦ ﭘﻨﺠﺮه ﻣﻘﺎدﻳﺮ آﻣﺎري ﻣﻨﺤﻨﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ .اﮔﺮ در ﻣﻘﺎﺑﻞ ﻫﺮﻳﻚ ازاﻳﻦ ﻣﻘﺎدﻳﺮ ﭼﻚﻣﺎرك ﺑﺰﻧﻴﻢ ،ﻣﻘﺪار آن روي ﻣﻨﺤﻨﻲ ﻫﻢ ﻧﺸﺎن داده ﺧﻮاﻫﺪ ﺷﺪ.
ﭼﻨﺪ ﻣﻨﺤﻨﻲ در ﻳﻚ ﺻﻔﺤﻪ ﻋﺒﺎرت ) plot(x,y1,x,y2ﻣﻨﺤﻨﻲﻫﺎي y1و y2را ﺑﺎ دو رﻧﮓ ﻣﺨﺘﻠﻒ ﺑﺮ ﺣﺴﺐ xرﺳﻢ ﻣﻲﻛﻨﺪ.
ﻣﺜﺎل ﻫﺎ: ﭘﺮﺗﺎﺑﻪ ﻋﻤﻮدي ﺑﺎ )(plot ﺳﻨﮕﻲ ﺑﺎ ﺳﺮﻋﺖ اوﻟﻴﻪ 60در زﻣﺎن ﺻﻔﺮ ،ﻋﻤﻮدي ﺑﻪ ﺑﺎﻻ ﭘﺮﺗﺎب ﻣﻲﺷﻮد ،ﻧﻤﻮدار ﻣﺴﺎﻓﺖ -زﻣﺎن را ﺗﺎ زﻣﺎن 12.3ﺑﺎ ﮔﺎم 0.1رﺳﻢ ﻛﻨﻴﺪ.
53
;g = 9.8 ; v0 = 60 ;t = 0: 0.1: 12.3 ; x = v0*t - g/2 * t.^2 )plot(t,x
>> >> >> >> >>
ﺷﻜﻞ 2-5
ﺑﺮﭼﺴﺐ ﻫﺎ ﺑﺮاي ﻣﺜﺎل ﻓﻮق ﺑﺮﭼﺴﺐ ﻫﺎي ﻣﻨﺎﺳﺐ ﺑﺮاي ﻋﻨﻮان ،و ﻣﺤﻮرﻫﺎي xو yرا اﻳﺠﺎد ﻛﺮده و اﺛﺮ آنﻫﺎ را ﺑﺮ روي ﮔﺮاف ﺑﺒﻴﻨﻴﺪ. >> title ... ''Trajectory Motion )'>> xlabel('Time )'>> ylabel('Displacement
ﺷﻜﻞ 3-5
اﻃﻼﻋﺎت آﻣﺎري Data Statistics ﺑﺮاي ﻣﻨﺤﻨﻲ ﻓﻮق ﺑﻌﻀﻲ از ﻣﻘﺎدﻳﺮ آﻣﺎري را روي ﭘﻨﺠﺮه Data Statisticsﻋﻼﻣﺖ ﺑﺰﻧﻴﺪ و ﻧﺘﺎﻳﺞ آنرا روي ﭘﻨﺠﺮه Figureﺑﺒﻴﻨﻴﺪ )ﺷﻜﻞ ..(4-5 ﻣﺪوﻻﺗﻮر داﻣﻨﻪ AM Modulator در ﻣﺪوﻻﺗﻮر داﻣﻨﻪ زﻳﺮ ،ﺳﻴﮕﻨﺎلِ 1000ﻫﺮﺗﺰي sigﺑﺎ ﻛﺮﻳﺮ 10000ﻫﺮﺗﺰي carrوداﻣﻨﻪ 4ﺑﺮاﺑﺮ sigﻣﺪوﻟﻪ ﻣﻲﺷﻮد. ﺧﺮوﺟﻲِ amو sigرا ﺑﺮﺣﺴﺐ زﻣﺎن رﺳﻢ ﻛﻨﻴﺪ )ﺷﻜﻞ .(5-5
54
ﺷﻜﻞ 4-5ﭘﻨﺠﺮه آﻣﺎر داده ﻫﺎ
Amplitude → am Modulator ↑ carr ;t = 0:12.5e-6:0.003 ;f = 1000 ;om = 2*pi*f ;omt = om*t ;)sig = cos(omt ;)carr = 4*cos(10*omt ;am = sig.*carr )plot(omt,sig,omt,am )'legend('Signal','AM )'title('AM )'xlabel('\omegat )'ylabel('Output
→ signal
>> >> >> >> >> >> >> >> >> >> >> >>
ﺷﻜﻞ 5-5
دﺳﺘﻮر legendرﻧﮓ ﻳﺎ اﺳﺘﻴﻞ ﻫﺮ ﻣﻨﺤﻨﻲ را ﺑﺮﭼﺴﺐ ﻣﻲﮔﺬارد. ﻋﻼﻣﺖ \omegatﻛﺎراﻛﺘﺮ TeXﻧﺎم دارد ﻛﻪ در ﮔﺮاف ﺑﻪ ﺻﻮرت ωtﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد ﻛﺎراﻛﺘﺮﻫﺎي ، TeXاز ﻣﻨﻮي Helpزﻳﺮ ﻣﻨﻮي MATLAB Helpرا اﺟﺮا و TeX charactersرا ﺟﺴﺘﺠﻮ ﻛﻨﻴﺪ.
3-5دﺳﺘﻮرﻫﺎي ﻫﻢ ﺧﺎﻧﻮاده
)(plot
دﺳﺘﻮرﻫﺎي ﺗﺮﺳﻴﻤﻲِ )( semilogx(), semilogy(), loglog(), plotyyﺑﺎ اﻧﺪﻛﻲ ﺗﻐﻴﻴﺮ ﻣﺸﺎﺑﻪ )( plotﻫﺴﺘﻨﺪ .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ help plotو ﻣﺜﺎلﻫﺎي ﻓﺼﻮل ﺑﻌﺪ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ. ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ دﺳﺘﻮر )( plotyyرا ﺑﺮرﺳﻲ ﻣﻲﻛﻨﻴﻢ .رﺳﻢ دو ﺗﺎﺑﻊ ﻛﻪ ﻣﻘﺎدﻳﺮ آنﻫﺎ ﺑﺎ ﻳﻚدﻳﮕﺮ ﻓﺎﺻﻠﻪ زﻳﺎد دارﻧﺪ روي ﻳﻚ ﮔﺮاف ﻧﺎﻣﻤﻜﻦ اﺳﺖ ،اﻣﺎ اﻣﻜﺎن اﺳﺘﻔﺎده از دو ﻣﺤﻮر ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر) plotyy(x1,y1x2,y2اﻳﻦ ﻣﺸﻜﻞ را ﺣﻞ ﻛﺮده و اﺟﺎزه رﺳﻢ دو ﺗﺎﺑﻊ ﺑﺎ ﻣﻘﺎدﻳﺮ دور از ﻫﻢ روي ﻳﻚ ﮔﺮاف را ﻣﻲدﻫﺪ.
ﻣﺜﺎل: ﺧﻂ و ﺳﻬﻤﻲ را ﺑﺎ ﻣﻘﺎدﻳﺮ دور ازﻫﻢ ﺑﺎ)( plotyyرﺳﻢ ﻛﻨﻴﺪ .ﺑﺮاي ﺑﺮﭼﺴﺐﮔﺬاري روي ﻣﺤﻮرﻫﺎي ﻋﻤﻮدي از ﮔﺰﻳﻨﻪ 55
Tools_Edit Plotﻳﺎ دﻛﻤﻪ Textاﺳﺘﻔﺎده ﻛﻨﻴﺪ .ﻣﺤﻮر اﻓﻘﻲ ﺑﺮاي ﻫﺮدو ﺗﺎﺑﻊ ﻳﻚﺳﺎن اﺳﺖ. ;]>> x = [-2: 0.1: 2 >> y1 = 2*x - 3;% Line ;>> y2 = 10 * y1.^2 %Parabola )>> plotyy(x,y1,x,y2
ﺷﻜﻞ 6-5
4-5روش ﻫﺎي دﻳﮕﺮ ﻧﻤﻮدار ﺳﺎزي ﻧﻤﻮدار
ﺳﺘﻮﻧﻲ )(bar
دﺳﺘﻮر ) bar(x,y,wﺑﺮدار yرا ﺑﺮﺣﺴﺐ ﺑﺮدار xﺑﻪ ﺻﻮرت ﻣﻴﻠﻪاي رﺳﻢ ﻣﻲﻛﻨﺪ .ﻣﻌﻤﻮﻻً از اﻳﻦ ﻧﻮع ﻧﻤﻮدار ﺑﺮاي ﻧﻤﺎﻳﺶ آﻣﺎري ﺑﺮدارﻫﺎي ﻛﻢﺗﻌﺪاد اﺳﺘﻔﺎده ﻣﻲﺷﻮد .ﭘﺎراﻣﺘﺮ wﻋﺮض ﻣﻴﻠﻪﻫﺎ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ ﻛﻪ ﭘﻴﺶﻓﺮض آن 0.8اﺳﺖ. دﺳﺘﻮرﻫﺎي )( stairs(), barh(), stemﻧﺰدﻳﻚ ﺑﻪ )( barﻫﺴﺘﻨﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(.
ﻣﺜﺎل: ﻧﻤﻮدار ﺳﺘﻮﻧﻲ درﺟﻪ ﺣﺮارت ﻳﻚ روز را ﺑﻴﻦ ﺳﺎﻋﺖ 8ﺗﺎ 24ﺑﺎ ﻓﺎﺻﻠﻪ دو ﺳﺎﻋﺘﻪ رﺳﻢ ﻛﻨﻴﺪ )ﺷﻜﻞ .(7-5
ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر
)(hist
اﻳﻦ ﺗﺎﺑﻊ ﻛﻪ ﭘﻴﺸﻴﻨﻪﻧﮕﺎر histogramرﺳﻢ ﻣﻲﻛﻨﺪ ،ﻳﻜﻲ از دﺳﺘﻮرات ﮔﺮاﻓﻴﻜﻲ ﻣﻬﻢ اﺳﺖ .ﻃﺮز ﻛﺎر آن اﻳﻦﮔﻮﻧﻪ اﺳﺖ ﻛﻪ اﺑﺘﺪا ﻣﺠﻤﻮﻋﻪاي از دادهﻫﺎ )اﺷﻴﺎء( را ﻣﺮﺗﺐ ﻣﻲﻛﻨﺪ ،و ﺳﭙﺲ در ﭼﻨﺪ ﻇﺮف )ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض 10ﻇﺮف( ﺟﺎ ﻣﻲدﻫﺪ. ﻫﺮ ﻇﺮف ،ﺣﺠﻤﻲ از دادهﻫﺎي ﻧﺰدﻳﻚ ﺑﻪ ﻫﻢ را درﺧﻮد ﻣﻲﮔﻨﺠﺎﻧﺪ .ﺳﭙﺲ ﻣﺤﺘﻮاي ﻫﺮ ﻇﺮف ﺑﺮﺣﺴﺐ درﺷﺘﻲ دادهﻫﺎي داﺧﻞ آنﻫﺎ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد.
ﻣﺜﺎل: ﻧﻤﺮات زﻳﺮ را در ﺗﻌﺪاد ﻇﺮفِ ﻣﻌﺎدل ﻳﻚﭼﻬﺎرم ﺗﻌﺪاد داﻧﺸﺠﻮ رﻳﺨﺘﻪ و ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر را ﺑﺎ ﺗﻮﺿﻴﺢ رﺳﻢ ﻛﻨﻴﺪ)ﺷﻜﻞ .(8-5 دﺳﺘﻮر)( strcatرﺷﺘﻪﻫﺎ را ﺳﺮﻫﻢ ﻣﻲﻛﻨﺪ .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ از ﺑﻪ ﻓﺼﻞ رﺷﺘﻪﻫﺎ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ. >> scr = [12 14.56 18.44 16 8.3 19.1 18.2 16 5.3 7.8 15 12 14.6 ;]8.8 17 11.2 13.25 12 13 9 14 11 12 11.5 15 15 7 4 6 11 12 8 9
ﻧﻤﻮدار داﻳﺮه
)(pie
دﺳﺘﻮر ) pie(p, w, mﻳﻚ داﻳﺮه را ﺑﻪ ﺗﻌﺪاد دادهﻫﺎ ﻗﻄﺎع ﻣﻲزﻧﺪ ،ﺑﻪ ﻧﺤﻮيﻛﻪ ﺑﻪ ﻫﺮ داده ﺳﻄﺤﻲ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﺑﺰرﮔﺎي آن اﺧﻨﺼﺎص ﻳﺎﺑﺪ .ﺑﺮاي ﻧﻤﻮدارﻫﺎي آﻣﺎري ﻧﺴﺒﻲ اﺳﺘﻔﺎده ﻣﻲﺷﻮد p .درﺻﺪ ﻳﺎ ﻣﺴﺎﺣﺖ ﻫﺮ ﻗﻄﺎع w ،ﻓﺎﺻﻠﻪ ﺑﻴﻦ ﻗﻄﺎعﻫﺎ ،و mﺗﻮﺿﻴﺢ ﻳﺎ ﺑﺮﭼﺴﺐ ﻫﺮ ﻗﻄﺎع اﺳﺖ .دﺳﺘﻮر )( pie3ﻫﻢ ﻣﺸﺎﺑﻪ )( pieاﺳﺖ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(.
ﻣﺜﺎل: ﻧﺴﺒﺖ ﺟﻤﻌﻴﺘﻲ ﭼﻨﺪ ﺷﻬﺮ را ﺑﺎ ﻧﻤﻮدار داﻳﺮهاي ﻧﻤﺎﻳﺶ دﻫﻴﺪ)ﺷﻜﻞ .(9-5
56
>> hr = 0:2:24; >> temp = [-4 -2 0 3 7... 10 12 16 15 13 10 5 2]; >> bar(hr,temp,0.6) >> xlabel('Hrs of The Day') >> ylabel('Temp Celsius')
7-5 ﺷﻜﻞ
>> Ls = length(scr); >> hist(scr,Ls/4) >> sp=repmat(... [' '],1,8); >> xb = strcat([sp,sp,... 'Poor',sp,... 'Moderate',sp,... 'Good',sp, ... 'Excellent']); % string addition >> xlabel(xb)
8-5
ﺷﻜﻞ
>> p = [10,3,6,5,2]; >> w = [0.5 1 1 0.5 1]; >> m = {'Tehran','Shiraz',... 'Isfahan','Tabriz','Ahvaz'} % m is a cell array >> pie(p, w, m)
9-5 ﺷﻜﻞ
57
5-5رﺳﻢ ﻧﻤﻮداري ﻣﺎﺗﺮﻳﺲ ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻣﺎﺗﺮﻳﺲ وﻗﺘﻲ ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ رﺳﻢ ﺷﻮد ،ﻫﺮ ردﻳﻒ در ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺟﺪاﮔﺎﻧﻪ از ﻣﻴﻠﻪﻫﺎ ﻫﻢراه ﺑﺎ ﺷﻤﺎره ردﻳﻒ ﻧﺸﺎن داده ﻣﻲﺷﻮد.
ﻧﻤﻮدار ﻣﻨﺤﻨﻲ ﻣﺎﺗﺮﻳﺲ وﻗﺘﻲ ﻧﻤﻮدار ﻣﻨﺤﻨﻲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ رﺳﻢ ﺷﻮد ،ﻫﺮ ﺳﺘﻮن در ﻳﻚ ﻣﻨﺤﻨﻲ ﺟﺪاﮔﺎﻧﻪ ﻧﺸﺎن داده ﻣﻲﺷﻮد .ﺑﺮاي ﺗﻔﻜﻴﻚ ﻣﻨﺤﻨﻲﻫﺎ از دﺳﺘﻮر )( legendﻳﺎ از ﭘﻨﺠﺮه Data Statisticsاﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ.
ﻣﺜﺎل ﻫﺎ: ﻣﻴﺰان رﻳﺰش ﺑﺎران ﭘﻨﺞ ﺳﺎل ﻣﺘﻮاﻟﻲ ﻣﻴﺰان رﻳﺰش ﺑﺎران ﻫﺮ ﻓﺼﻞ را در ﭘﻨﺞ ﺳﺎل ﭘﻴﺎﭘﻲ در ردﻳﻒﻫﺎي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻗﺮار دﻫﻴﺪ .ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻣﻴﺰان ﺑﺎران ﻫﺮ ﺳﺎل را ﻧﻤﺎﻳﺶ دﻫﻴﺪ .ﻣﻨﺤﻨﻲ را ﺧﻮدﺗﺎن رﺳﻢ ﻛﻨﻴﺪ. ;>> rain = [110 70 125 152 % 1st year ;210 55 104 223 % 2nd year ;120 56 173 156 % 3rd year ;195 72 211 178 % 4th year ;]118 58 123 149 % 5th year )>> bar(rain )'>> xlabel('Year 1 to year 5'), ylabel('Amount of rain per season )'>> legend('Spring','Sumer','Fall','Winter
درﺟﻪ ﺣﺮارت ﭼﻬﺎر روز ﻣﺘﻮاﻟﻲ درﺟﻪ ﺣﺮارت ﺻﺒﺢ ،ﻇﻬﺮ ،و ﻏﺮوب ﭼﻬﺎر روز ﭘﻴﺎﭘﻲ را در ﺳﺘﻮنﻫﺎي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻗﺮار دﻫﻴﺪ .ﻧﻤﻮدار ﻣﻨﺤﻨﻲ درﺟﻪ ﺣﺮارت ﻫﺮ روز را ﻧﻤﺎﻳﺶ دﻫﻴﺪ .ﻣﻴﺎﻧﮕﻴﻦ درﺟﻪ ﺣﺮارت روز ﭼﻬﺎرم را ﺑﺎ اﺳﺘﻔﺎده از ﭘﻨﺠﺮه Data Statistics
ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ. temp = ... ;[11 12 14 15 ;17 18 20 22 ;];12 13 15 16 )plot(temp )'ylabel('Temp / Celsius legend( ... '1st day','2nd day',... )''3rd day','4th day
ﺷﻜﻞ 10-5
ﭘﺲ از رﺳﻢ ﻣﻨﺤﻨﻲﻫﺎ زﻳﺮﻣﻨﻴﻮي Tools_Data Statisticsرا از ﭘﻨﺠﺮه Figureاﻧﺘﺨﺎب ﻛﺮده ،ﺑﺮاي ﻧﻤﺎﻳﺶ ﻣﻴﺎﻧﮕﻴﻦ روز ﭼﻬﺎرم ﺑﺮ روي ﻧﻤﻮدار ،ﻣﻘﺎﺑﻞ ﻣﻘﺪار ﻣﺮﺑﻮﻃﻪ ﻋﻼﻣﺖ ﻣﻲزﻧﻴﻢ.
58
ﺷﻜﻞ 11-5
ﻧﻤﻮدار ﻗﻄﺒﻲ ﻋﺒﺎرت ) polar(theta,rﻣﻘﺎدﻳﺮ rرا ﺑﺮ ﺣﺴﺐ زاوﻳﻪ thetaروي ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﻧﺸﺎن ﻣﻲدﻫﺪ .ﻧﻤﻮدار ﻗﻄﺒﻲ )( polarﻫﻤﺎن ﻛﺎر را ﻛﻪ )( plotﺑﺎ x,yاﻧﺠﺎم ﻣﻲدﻫﺪ ﺑﺎ theta,rاﻧﺠﺎم ﻣﻲدﻫﺪ.
ﻣﺜﺎل: ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آراﻳﻪاي از ﺑﺮدار -ﻫﻨﺪﺳﻲﻫﺎي اﻓﺰاﻳﻨﺪه ﺑﻪ ﺻﻮرت ﻣﺎرﭘﻴﭻ را ﺗﻌﺮﻳﻒ و ﺑﺰرﮔﻲ ﻫﺮ ﺑﺮدار -ﻫﻨﺪﺳﻲ را ﺑﺮﺣﺴﺐ زاوﻳﻪاش رﺳﻢ ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ .(12-5 ;)>> tet = linspace(0, 2*pi, 40 ;)>> r = linspace(0,10,40 )>> polar(tet,r
ﺷﻜﻞ 12-5
ﻧﻤﻮدار ﻋﻘﺮﺑﻪ اي ،دﺳﺘﻮر
)(compass
دﺳﺘﻮر ) compass(x,yﻳﻚ ﺑﺮدار -ﻫﻨﺪﺳﻲ ﺑﺎ ﻃﻮل و ﻋﺮض ﻗﺎﺋﻢ x,yرا درون ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ. از اﻳﻦ ﻧﻤﻮدار ﺑﺮاي ﻧﻤﺎﻳﺶ ﻫﻨﺪﺳﻲ اﻋﺪاد ﻣﺨﺘﻠﻂ ﻧﻴﺰ اﺳﺘﻔﺎده ﻣﻲﺷﻮد.
ﻣﺜﺎل ﻫﺎ: ﺑﺮدار -ﻫﻨﺪﺳﻲ ﺷﺶ ﻧﻘﻄﻪ ﺑﺮاي دﻳﺪن دﺳﺘﻮرات و ﺗﺮﺳﻴﻢ ﺑﻪ ﺷﻜﻞ 13-5ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ.
ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢِ ﺑﺮدار -ﻫﻨﺪﺳﻲﻫﺎﺋﻲ ﺑﺎ ده ﻋﻨﺼﺮ زﻳﺎد ﺷﻮﻧﺪه. ﺑﺮاي دﻳﺪن دﺳﺘﻮرات و ﺗﺮﺳﻴﻢ ﺑﻪ ﺷﻜﻞ 14-5ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ. 59
>> x = [-5 4 -4.4 2 ... ;]5.5 6 >> y = [6 3 2 -2.2 ... ;]6.6 -3 )>> compass(x,y
ﺷﻜﻞ 13-5
>> tet = ... ;)linspace(0, 2*pi, 10 ;)>> r = linspace(0,10,10 ;)>> [x y] = pol2cart(tet,r )>> compass(x,y
ﺷﻜﻞ 14-5
ﻧﻤﺎﻳﺶ ﻫﻨﺪﺳﻲ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺎ
)(compass
ﺑﺮاي ﻧﻤﺎﻳﺶ ﺑﺮدار -ﻫﻨﺪﺳﻲِ اﻋﺪاد ﻣﺨﺘﻠﻂ از دﺳﺘﻮر )( compassاﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ .دﺳﺘﻮر ) compass(zﻣﻌﺎدل )) compass(real(z),imag(zﻣﻲﺑﺎﺷﺪ.
ﻣﺜﺎل ﻫﺎ: ﻧﻤﺎﻳﺶ ﺑﺮدار-ﻫﻨﺪﺳﻲ ﻓﺮم ﻗﺎﺋﻢ >> M = ... [-5+6*i, ;3*j+4 -4.4+2*i, ;2-2.2*i ;] 5.5+6.6*j, 6-3*j )>> compass(M
ﺷﻜﻞ 15-5
60
ﻧﻤﺎﻳﺶ ﺑﺮدرا -ﻫﻨﺪﺳﻲ ﻓﺮم ﻗﻄﺒﻲ ;>> tet = 0:pi/5:pi ))>> compass(exp(j*tet
ﺷﻜﻞ 16-5
رﺳﻢ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺎ
)(plot
اﮔﺮ zpﻣﺨﺘﻠﻂ ﺑﺎﺷﺪ plot(zp) ،ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ آنرا ﺑﺮﺣﺴﺐ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ رﺳﻢ ﻣﻲﻛﻨﺪ .اﮔﺮ zpﻣﺨﺘﻠﻂ و t
ﻳﻚ ﻣﺘﻐﻴﺮ ﺣﻘﻴﻘﻲ ﺑﺎﺷﺪ ،ﻋﺒﺎرت ) plot(t,zpﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ zpرا ﺑﺮﺣﺴﺐ tرﺳﻢ ﻛﺮده و از ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ ﺻﺮفﻧﻈﺮ ﻣﻲﺷﻮد.
ﻣﺜﺎل: ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ ﺗﺎﺑﻊ ﻣﺨﺘﻠﻂ)= r(cosθ+jsinθ
jθ
zp= reرا ﺑﺮﺣﺴﺐ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ آن رﺳﻢ ﻛﻨﺪ) .ﺗﻮﺟﻪ
ﻛﻨﻴﺪ ﻛﻪ ﻣﻨﺤﻨﻲ ﺳﻴﻨﻮس )ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ( ﺑﺮ ﺣﺴﺐ ﻛﺴﻴﻨﻮس )ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ( ﻳﻚ داﻳﺮه ﻣﺜﻠﺜﺎﺗﻲ ﺑﺎ ﺷﻌﺎع rاﺳﺖ ). (cos2θ + sin2θ = r2 ;)>> tet = linspace(0,2*pi,40 ;>> r = 3 ;)>> zp = r*exp(j*tet ))% or zp=r*(cos(tet)+j*sin(tet )>> plot(zp % Sine versus Cisine % is a circle >> axis equal
ﺷﻜﻞ 17-5
دﺳﺘﻮر axis equalﻣﻘﻴﺎس ﻋﺮﺿﻲ و ﻃﻮﻟﻲ ﻣﺎﻧﻴﺘﻮر را )ﻛﻪ ﻣﻌﻤﻮﻻٌ 6ﺑﻪ 5اﺳﺖ( ﻳﻜﺴﺎن ﻣﻲﻛﻨﺪ وﮔﺮﻧﻪ داﻳﺮه ،ﺑﻴﻀﻲ دﻳﺪه ﻣﻲﺷﻮد.
ﻣﺜﺎل: zpﻣﺜﺎل ﻓﻮق و ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ آن را ﺑﺮﺣﺴﺐ tetرﺳﻢ ﻣﻲﻛﻨﻴﻢ .ﻧﺘﻴﺠﻪ ﻫﺮ دو ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲﻫﺎي ﻛﺴﻴﻨﻮﺳﻲ ﻣﺸﺎﺑﻪ اﺳﺖ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(.
61
6-5رﺳﻢ آﺳﺎن ﺑﺎ
)(ezplot
در ﻣﺘﻠﺐ ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﺑﺪون ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻣﺘﻐﻴﺮ ﺑﺎ ﺗﻮاﺑﻌﻲ ﻣﺎﻧﻨﺪ)) ezplot(f(xرﺳﻢ ﻣﻲﺷﻮﻧﺪezplot() .
داﻣﻨﻪ ﻣﺘﻐﻴﺮ را ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض -2π < x < +2πﻗﺮار ﻣﻲدﻫﺪ .ﻓﺮم ]) ezplot(f(x),[min,maxﺑﺮاي ﺗﻌﻴﻴﻦ دﺳﺘﻲ داﻣﻨﻪ ﻣﺘﻐﻴﺮ ﺑﻪﻛﺎر ﻣﻲرود .آرﮔﻮﻣﺎن )( ezplotﻛﻪ ﻳﻚ ﺗﺎﺑﻊ اﺳﺖ ،ﺑﻪ ﺻﻮرت رﺷﺘﻪ ،ﮔﻴﺮه ﺗﺎﺑﻊ ،ﻳﺎ ﺗﺎﺑﻊ ﺳﻄﺮي inlineﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد )اﻳﻦﻫﺎ روشﻫﺎﺋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮاي ارﺳﺎل ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﺗﺎﺑﻊ دﻳﮕﺮ در ﻣﺘﻠﺐ وﺟﻮد دارﻧﺪ(. ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد آرﮔﻮﻣﺎن ﺗﺎﺑﻌﻲ ﻳﺎ ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﺑﻪ ﻣﺒﺎﺣﺚ ﺑﻌﺪي ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ.
رﺳﻢ ﺗﻮاﺑﻊ
آﺷﻜﺎر explicit functions
اﻳﻦﮔﻮﻧﻪ ﺗﻮاﺑﻊ ﺑﻪﺻﻮرت ) y = f(xﻣﻲآﻳﻨﺪ ﻣﺜﻞ . y = -2x2 + 3 :ﺗﻮاﺑﻊ آﺷﻜﺎر را ﻣﻲﺗﻮان ﺑﺎ )( plotرﺳﻢ ﻛﺮد ،اﻣﺎ رﺳﻢ ﺑﻌﻀﻲ از اﻳﻦ ﺗﻮاﺑﻊ ﻣﺜﻞ ) y = tan(xﻛﻪ در داﻣﻨﻪ ﻣﻌﻤﻮل xﻣﻘﺎدﻳﺮ ﺑﺰرگ ﭘﻴﺪا ﻣﻲﻛﻨﻨﺪ ﺑﻮﺳﻴﻠﻪ )( plotراﺣﺖ ﻧﻴﺴﺖ )ﺑﻪ ﻣﺜﺎل ﻣﺮاﺟﻌﻪ ﻧﻤﺎﺋﻴﺪ( .اﻣﺎ )( ezplotاﻳﻦﮔﻮﻧﻪ ﺗﻮاﺑﻊ را ﻫﻮﺷﻤﻨﺪاﻧﻪ و ﺑﻪراﺣﺘﻲ رﺳﻢ ﻣﻲ- ﻛﻨﺪ .داﻣﻨﻪ ﭘﻴﺶﻓﺮض ﺑﺎ ﮔﺎم ﻣﻨﺎﺳﺐ ﻧﻘﻄﻪﮔﺬاريﺷﺪه ،ﻓﺮﻣﻮل ﺗﺎﺑﻊ ،و ﺑﺮﭼﺴﺐ ﻣﺤﻮر xﻧﻴﺰ ﺧﻮدﺑﻪﺧﻮد ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ.
رﺳﻢ ﺗﻮاﺑﻊ ﺿﻤﻨﻲ
implicit functions
ﺗﻮاﺑﻊ ﺿﻤﻨﻲ ﺗﻮاﺑﻌﻲ ﻫﺴﺘﻨﺪ ﻛﻪ در آنﻫﺎ xو yﺑﻪ ﺻﻮرت ﻣﺨﻠﻮط ﻣﻲآﻳﻨﺪ ،ﻣﺜﻞ= 1 :
2
+ y
2
. xﻛﺎرﺑﺮد )(plot
ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﻴﻢ در اﻳﻦﮔﻮﻧﻪ ﻣﻮارد ﻧﺘﻴﺠﻪ ﻣﻄﻠﻮب ﻧﻤﻲدﻫﺪ ،اﻣﺎ )( ezplotﺑﻪراﺣﺘﻲ از ﻋﻬﺪه ﺑﺮﻣﻲآﻳﺪ .وﻗﺘﻲ ﻳﻚ ﺗﺎﺑﻊ ﺿﻤﻨﻲ ﺑﻪ )( ezplotارﺳﺎل ﺷﻮد درﻃﺮف راﺳﺖ ﻣﻌﺎدﻟﻪ ﺧﻮدﺑﻪﺧﻮد ﺻﻔﺮ ﻗﺮار ﻣﻲﮔﻴﺮد.
رﺳﻢ ﺗﻮاﺑﻊ ﭘﺎراﻣﺘﺮﻳﻚ اﮔﺮ fو gﺗﻮاﺑﻊ tﺑﺎﺷﻨﺪ ،ﺑﺎ ) ezplot(f,gﻣﻲﺗﻮان آن دو را ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ رﺳﻢ و ﭘﺎراﻣﺘﺮ tرا ﺣﺬف ﻛﺮد. داﻣﻨﻪ ﭘﻴﺶﻓﺮض tﻓﺎﺻﻠﻪ 0, πاﺳﺖ.
ﻣﺜﺎل ﻫﺎ: ﺗﺎﺑﻊ آﺷﻜﺎر ﺗﺎﺑﻊ) y = tan(xرا ﺑﺮ ﺣﺴﺐ xﺑﺎ )( plotو )( ezplotرﺳﻢ ﻛﻨﻴﺪ. ))plot(x, tan(x
))plot(x,tan(x
)')ezplot('tan(x ﺷﻜﻞ 18-5
62
)')>> ezplot('tan(x ;)>> x = linspace(-2*pi, 2*pi
ﺗﺎﺑﻊ ﺿﻤﻨﻲ ﻳﻚ داﻳﺮه ﺑﺎ ﺷﻌﺎع 6را ﺑﺎ )( ezplotرﺳﻢ ﻛﻨﻴﺪ. ;'>> fc = 'x^2 + y^2 - 36 )>> ezplot(fc >> axis equal
ﺷﻜﻞ 19-5
ﺗﺎﺑﻊ ﭘﺎراﻣﺘﺮﻳﻚ ;'>> f1 = 'cos(t)^3 ;'>> f2 = 'sin(t)^3 )>> ezplot(f2,f1
ﺷﻜﻞ 20-5
7-5ﺗﺎﺑﻊ داﺧﻠﻲ
)(fplot
ﻓﺮم ﻛﻠﻲ اﻳﻦ ﺗﺎﺑﻊ ﭼﻨﻴﻦ اﺳﺖ) fun . fplot(fun,limsﻳﻚ ﺗﺎﺑﻊ آﺷﻜﺎر از xاﺳﺖ ﻛﻪ ﻫﻤﺎﻧﻨﺪ آرﮔﻮﻣﺎن )( ezplotﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت ﻳﻚ ﻋﺒﺎرت رﺷﺘﻪاي ،ﮔﻴﺮهي ﺗﺎﺑﻊ ،ﻳﺎ ﺗﺎﺑﻊ inlineﺑﺎﺷﺪ )ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد آرﮔﻮﻣﺎن ﺗﺎﺑﻌﻲ ﺑﻪ ﻣﺒﺎﺣﺚ ﺑﻌﺪي ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ( lims .ﻣﺤﺪوده ﻣﺤﻮرﻫﺎ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ fun .ﻣﻲﺗﻮاﻧﺪ ﻳﻚ ﺑﺮدار از ﺗﻮاﺑﻊ ﮔﻮﻧﺎﮔﻮن ،ﻳﺎ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺑﺎﺷﺪ ﻛﻪ ﻫﺮ ﺳﺘﻮن آن ﻳﻚ ﺗﺎﺑﻊ ﺟﺪاﮔﺎﻧﻪ اﺳﺖ lims .ﻳﺎ ﺑﺎﻳﺪ ﺑﻪﺻﻮرت ][XMIN XMAXﺑﺎﺷﺪ ﻳﺎ ﺑﻪﺻﻮرت ] .[XMIN XMAX YMAX YMINدر ﺻﻮرت اول ﻣﺤﺪوده ﻣﺤﻮر ﻋﻤﻮدي ﺧﻮدﺑﻪﺧﻮد ﺗﻌﻴﻴﻦ ﺧﻮاﻫﺪ ﺷﺪ ،در ﺻﻮرت دوم ﻣﺤﺪوده ﻣﺤﻮر ﻋﻤﻮدي دﺳﺘﻲ ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮد. )( fplotﻣﻘﺎدﻳﺮ ﻧﺎﻫﻢﮔﻮنِ ﺗﻮاﺑﻊ را ﻃﻮري ﺗﻨﻈﻴﻢ ﻣﻲﻛﻨﺪ ﻛﻪ ﺗﺮﺳﻴﻢ ﺷﻜﻴﻠﻲ ﺣﺎﺻﻞ ﺷﻮد ،ﺑﻪﺧﺼﻮص وﻗﺘﻲ ﺗﻮاﺑﻊ داراي ﻣﻘﺎدﻳﺮ دور ازﻫﻢ ﺑﺎﺷﺪ 0ﺷﻜﻞ .(21-5
63
ﻣﺜﺎل: ﻣﻨﺤﻨﻲﻫﺎي ﺳﻴﻨﻮس ،ﻛﺴﻴﻨﻮس ،و ﺗﺎﻧﮋاﻧﺖ را ﺑﺮ روي ﻳﻚ ﮔﺮاف ﺑﺎ )( plotو )( fplotﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ .ﭼﻮن ﺗﻐﻴﻴﺮات ﺗﺎﻧﮋاﻧﺖ ﻧﺴﺒﺖ ﺑﻪ ﺳﻴﻨﻮس و ﻛﺴﻴﻨﻮس ﺳﺮﻳﻊ اﺳﺖ ،ﺑﺎ )( plotﻣﻨﺤﻨﻲ ﺧﻮﺑﻲ ﻧﺨﻮاﻫﻴﻢ داﺷﺖ. ;)x = linspace(-2*pi, 2*pi, 20 ))figure(1), plot(x,tan(x),x,sin(x),x,cos(x ;'])fs = '[tan(t) sin(t) cos(t )]figure(2), fplot(fs,[-2*pi 2*pi -5 5 )figure(2
>> >> >> >>
)figure(1
ﺷﻜﻞ 21-5
8-5وﻳﺮاﻳﺶ ﮔﺮاف ﺗﻌﻴﻴﻦ ﻣﺤﺪوده ﻣﺤﻮرﻫﺎ ﻣﺘﻠﺐ ﺧﻮد ﺑﻪ ﺧﻮد ﻣﻴﺰان ﻣﺤﻮرﻫﺎ را ﺗﻨﻈﻴﻢ ﻣﻲﻛﻨﺪ ،اﻣﺎ ﺑﺎ دﺳﺘﻮر زﻳﺮ ﻣﻲﺗﻮان درﺟﻪ ﻣﺤﻮرﻫﺎ را ﺑﻪ دﻟﺨﻮاه ﻋﻮض ﻛﺮد: ) ]axis( [xmin, xmax, ymin, ymax
دﺳﺘﻮر axis autoدرﺟﻪﮔﺬاري را ﺑﻪ ﺣﺎﻟﺖ ﻣﻌﻤﻮل ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
ﺗﻮري روي ﮔﺮاف از ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺗﻜﺮار gridدر ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺑﺮاي آوردوﺑﺮدِ ﺗﻮري روي ﮔﺮاف اﺳﺖ .از grid onو grid offﻫﻢ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻛﺮد )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(.
ﺑﺮﭼﺴﺐ ﮔﺬاري ﺑﺎ ﻣﺎوس )( gtextاﻣﻜﺎن ﺑﺮﭼﺴﺐ ﮔﺬاري در ﻫﺮ ﻣﺤﻞ ﺗﺮﺳﻴﻢ را ﺑﺎ ﻛﻠﻴﻚ ﻣﺎوس ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ .ﺑﺮاي اﻣﺘﺤﺎن روي ﻳﻚ ﮔﺮاف دﺳﺘﻮر )' gtext('labelرا اﺟﺮا ﻛﺮده و ﺑﺎ ﺧﻂ ﻣﻮي اﻳﺠﺎد ﺷﺪه روي ﻧﻘﻄﻪاي از ﮔﺮاف ﻛﻠﻴﻚ ﻛﻨﻴﺪ.
ﻣﺆﻟﻔﻪ ﻫﺎي
RGB
ﺟﺪول ﺷﻜﻞ 22-5ﺑﻌﻀﻲ از رﻧﮕﻬﺎﺋﻲ را ﻛﻪ از ﺗﺮﻛﻴﺐ ﺳﻪ رﻧﮓ اﺻﻠﻲ ﻗﺮﻣﺰ ،ﺳﺒﺰ ،آﺑﻲ RGBﺑﻪ دﺳﺖ ﻣﻲآﻳﻨﺪ ﻧﺸﺎن ﻣﻲ- دﻫﺪ .ﺑﺮاي ﻣﺸﺎﻫﺪه اﻳﻦ ﺟﺪول ﻣﻨﻴﻮي Help_MATLAB Helpرا اﻧﺘﺨﺎب و در ﻟﺒﻪ Indexﻛﻠﻤﻪ RGBرا ﺑﻨﻮﻳﺴﻴﺪ.
رﻧﮕﻲ ﻛﺮدن ﺑﺎ
)(fill
ﺗﺼﻮﻳﺮ را رﺳﻢ و آنرا ﺑﺎ رﻧﮓ ﻣﻮرد ﻧﻈﺮ ﭘﺮ ﻣﻲﻛﻨﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(.
ادﻳﺖ از روي ﭘﻨﺠﺮه ﮔﺮاف ﺑﺎ زدن دﻛﻤﻪ edit plotاز ﻣﻴﻠﻪ اﺑﺰار tool barﻳﺎ اﻧﺘﺨﺎب ﻣﻨﻴﻮي Tools_Edit Plotﭘﻨﺠﺮه
64
Property Editorﻇﺎﻫﺮ و اﻣﻜﺎن وﻳﺮاﻳﺶ دﺳﺘﻲ ﮔﺮاف ﻓﺮاﻫﻢ ﻣﻲﺷﻮد .ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ ﭘﻨﺠﺮه ﻣﻲﺗﻮان ﺷﺎﺧﺼﻪ- ﻫﺎي ﺻﻮرت ﮔﺮاف ، Surfaceﻛﻪ ﻫﻤﺎن ﻣﻨﺤﻨﻲ ﻳﺎ ﺳﻄﺢ رﺳﻢ ﺷﺪه اﺳﺖ ،و ﺷﺎﺧﺼﻪﻫﺎي ﻣﺤﻮرﻫﺎ )(Axesرا ﺗﻐﻴﻴﺮ داد )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(. آﺑﻲ
ﻗﺮﻣﺰ
رﻧﮓ ﺣﺎﺻﻞ
ﺳﺒﺰ 0 0
0
ﺳﻴﺎه
1 1
1
ﺳﻔﻴﺪ
0 0
1
ﻗﺮﻣﺰ
1 0
0
ﺳﺒﺰ
0 1
0
آﺑﻲ
1 0
1
زرد
0 1
1
ارﻏﻮاﻧﻲ
1 1
0
ﻓﻴﺮوزهاي
0.5 0.5
0.5ﺧﺎﻛﺴﺘﺮي
0 0
0.5ﻗﺮﻣﺰ ﺗﻴﺮه
1 0.62 0.40 0.8
0.4
ﻣﺴﻲ
0.6ﻛﺒﻮد
ﺷﻜﻞ 22-5
9-5ﮔﻴﺮه ﻫﺎي ﮔﺮاﻓﻴﻚ
graphics handles
ﻫﺮ ﮔﺮاف داراي 3ﻣﺆﻟﻔﻪ اﺳﺖ: اﻟﻒ -ﺷﻴﺊ ﻛﻪ ﺑﻪ ﺗﺮﺳﻴﻢ ﻳﺎ دﻛﻤﻪ ﻳﺎ ﻫﺮ ﻧﻮع ﺷﻴﺊ داﺧﻞ ﮔﺮاف ﮔﻔﺘﻪ ﻣﻲﺷﻮد. ﻛﻠﻤﻪ (get handle to current object) gcoﮔﻴﺮه ﺷﻴﺊ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. ب -ﻣﺤﻮرﻫﺎ ،ﻛﻪ ﻣﺤﻮﻃﻪ درون ﻣﺤﻮرﻫﺎ )ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت( اﺳﺖ. ﻛﻠﻤﻪ (get handle to current axes) gcaﮔﻴﺮه ﻣﺤﻮرﻫﺎ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. ج -ﭘﻨﺠﺮه ﺗﺼﻮﻳﺮ ﻛﻪ ﻣﺠﻤﻮﻋﻪ ﮔﺮاف اﺳﺖ( get handle to current figure) gcf .ﮔﻴﺮه ﭘﻨﺠﺮه ﺗﺼﻮﻳﺮ را ﺑﺮﻣﻲﮔﺮداﻧﺪ. ﺷﺎﺧﺼﻪﻫﺎي ﻫﺮ ﮔﻴﺮه ﺑﺎ دﺳﺘﻮر)( getﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ .ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ ﮔﻴﺮهﻫﺎ ﻣﻲﺗﻮان ﺷﺎﺧﺼﻪﻫﺎي ﮔﺮاﻓﻴﻚ را ﺑﺎ دﺳﺘﻮر)( setﺑﻪ دلﺧﻮاه ﺗﻨﻈﻴﻢ ﻛﺮد.
ﻣﺜﺎل: روي ﻣﻨﺤﻨﻲ ﻳﻚ ﮔﺮاف ﻛﻠﻴﻚ و ﺷﺎﺧﺼﻪﻫﺎي propertiesﮔﻴﺮه را ﺑﺎ دﺳﺘﻮر )( getﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﻢ. )>> get(gco
]Color = [0 0 1 EraseMode = normal = LineStyle]LineWidth = [0.5 Marker = none ... ﺳﭙﺲ ﺑﻌﻀﻲ از ﺷﺎﺧﺼﻪﻫﺎرا ﺑﺎ دﺳﺘﻮر )( setﺗﻨﻈﻴﻢ و ﻧﺘﺎﻳﺞ را ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ .ﺑﺮاي ﺣﺼﻮل ﻧﺘﻴﺠﻪ روي ﺷﻴﺊ ﻣﻮرد ﻧﻈﺮ
ﻛﻠﻴﻚ و آنرا ﺑﻪ ﺷﻴﺊ ﻓﻌﺎل ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ.ﻳﺮاي ﺑﻬﺘﺮ دﻳﺪن ﺷﻴﺊ ﻓﻌﺎل ﮔﺰﻳﻨﻪ edit plotرا از ﻣﻴﻠﻪ اﺑﺰار اﻧﺘﺨﺎب ﻛﻨﻴﺪ. )]>> set(gca, 'color', [1 1 0.5
65
)]>> set(gcf, 'color', [1 0.8 0.4 )'>> set(gco, 'marker', 'o )>> set(gco, 'linewidth', 4
10-5ﺗﻤﺮﻳﻦ -1ﻳﻚ ﻣﻨﺤﻨﻲ ﻣﺜﻠﺜﺎﺗﻲ را ﺑﺎ ﻫﺮ ﻳﻚ از اﻳﻦ ﻓﺮمﻫﺎ رﺳﻢ ﻛﻨﻴﺪ )'. plot(x,y,y,x,'rx') , plot(x,y,x,y,'rx -2ﻣﻘﺎدﻳﺮ ) log10(xرا ﺑﻪ ازاي x = 0.1: 0.1: 1را ﺑﻪ ﺻﻮرت ﻳﻚ ﺑﺮداردر ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ ﻧﮕﻪ- داري ﻛﺮده ،ﭘﺲ از ﺑﺎر ﻛﺮدن آن ﻓﺎﻳﻞ ﻣﻨﺤﻨﻲ ﻣﺮﺑﻮﻃﻪ را رﺳﻢ ﻛﻨﻴﺪ. -3در ﻳﻚ ﻣﺪار ﺳﺮي R=5,C=100e-6,L=4e-3و emfورودي 2وﻟﺖ اﺳﺖ .ﺷﺪت ﺟﺮﻳﺎن را در ﻣﺤﺪوده ﺻﻔﺮ ﺗﺎ 2000ﻫﺮﺗﺰ رﺳﻢ ﻛﻨﻴﺪ. -4ﺗﻮاﺑﻊ زﻳﺮ را ﺑﻪ ﺻﻮرت ﺣﺬف ﭘﺎراﻣﺘﺮ ﺑﺎ )( ezplotرﺳﻢ ﻛﻨﻴﺪ. ], range [0,pi ],range [0,4*pi
')sin(3*t)*sin(t ')t*sin(t
sin(3*t)*cos(t), t*cos(t),
-5ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آراﻳﻪاي ده ﻋﻨﺼﺮي از ﺑﺮدار -ﻫﻨﺪﺳﻲﻫﺎي ﻫﻢﻃﻮل وﭼﺮﺧﻨﺪه ﺑﻪ ﺻﻮرت ﻣﺪور را ﺗﻌﺮﻳﻒ و ﺑﺰرﮔﻲ ﻫﺮ ﺑﺮدار -ﻫﻨﺪﺳﻲ را ﺑﺮﺣﺴﺐ زاوﻳﻪاش رﺳﻢ ﻛﻨﻴﺪ .ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢِ اﻳﻦ ﺑﺮدار -ﻫﻨﺪﺳﻲﻫﺎ را ﺑﻪ دﺳﺖ آورده ،آنﻫﺎ را ﺑﺎ دﺳﺘﻮر )( compassدر ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ رﺳﻢ ﻛﻨﻴﺪ. -6ﺑﺮاي ﺗﺎﺑﻊ ، y1 = sinαﻣﻘﺎدﻳﺮ y1را ﺑﺮﺣﺴﺐ ﭼﻨﺪ ﻣﻘﺪار αروي ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﻧﺸﺎن داده و ﺑﺎ ﺟﺪول y1ﺑﺮﺣﺴﺐ αﻣﻄﺎﺑﻘﺖ ﻛﻨﺪ. -7ﻣﻨﺤﻨﻲ ﻳﻚ ﻣﻌﺎدﻟﻪ درﺟﻪ دو )ﺳﻬﻤﻲ( را ﺑﺮ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ و ﺑﺮ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ رﺳﻢ ﻛﻨﻴﺪ. sinx -8ﺗﺎﺑﻊ x 1 1 -9ﺗﺎﺑﻊ y = sinرا ﺑﺎ )( fplotرﺳﻢ ﻛﻨﻴﺪ .راﻫﻨﻤﺎ sin :وﻗﺘﻲ ﺑﻪ ﻳﻚ رﺷﺘﻪ ﻧﺴﺒﺖ داده ﻣﻲﺷﻮد x x ) sin(1/xﻧﻮﺷﺘﻪ ﺷﻮد ،ﻧﻪ )sin(1./x
را ﺑﺎ )( ezplotرﺳﻢ ﻛﻨﻴﺪ.
-10ﻧﻮﻳﺰ ﺗﻮزﻳﻊ -ﻳﻚﻧﻮاﺧﺘﻲ ﺑﺎ ﻓﺮﻛﺎﻧﺲﻫﺎي ﺑﻴﻦ 1000ﺗﺎ 10000اﻳﺠﺎد ﻛﻨﻴﺪ و ﻧﻤﻮدار آن را در ﺣﻮزه ﻓﺮﻛﺎﻧﺲ ﻧﻤﺎﻳﺶ دﻫﻴﺪ. -11ﭼﻨﺪ ﺗﺎﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ را ﺑﻪوﺳﻴﻠﻪ)( fillرا ﺑﺎ رﻧﮓﻫﺎي زﻳﺮ اﻣﺘﺤﺎن ﻛﻨﻴﺪ: ''r','g','b','c','m','y','w','k
66
ﻓﺼﻞ 6ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ 1-6ام -ﻓﺎﻳﻞ ﺗﺸﻜﻴﻞ ام -ﻓﺎﻳﻞ ﺑﺎ زدن دﻛﻤﻪ New M-Fileاز ﻣﻴﻠﻪ اﺑﺰار ﻳﺎ اﻧﺘﺨﺎب File_Newاز ﻣﻴﻠﻪ ﻣﻨﻴﻮ ﻳﻚ ادﻳﺘﻮر ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻣﻮﺳﻮم ﺑﻪ ادﻳﺘﻮر ام -ﻓﺎﻳﻞ ﺑﺎز ﻣﻲﺷﻮد .ﺑﺮﻧﺎﻣﻪي ﺷﺎﻣﻞ ﻣﺠﻤﻮﻋﻪاي از دﺳﺘﻮرات اﺳﺖ ﻛﻪ در M-Fileﻧﻮﺷﺘﻪ ،و ﺑﺎ ﻧﺎم ) Filename.mﺑﺪون ﻓﻀﺎي ﺧﺎﻟﻲ در ﺑﻴﻦ ﺣﺮوف( ﺿﺒﻂ ﻣﻲﺷﻮد Filename) .ﻳﻚ ﻛﻠﻤﻪ اﺧﺘﻴﺎري اﺳﺖ( .ﺑﺮاي اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﻲﺗﻮاﻧﻴﺪ ﭘﺲ از ﺿﺒﻂ ،ﻧﺎمِ ام -ﻓﺎﻳﻞ را ﻣﺎﻧﻨﺪ ﻳﻜﻲ از ﻓﺮاﻣﻴﻦ ﻣﺘﻠﺐ در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺑﻨﻮﻳﺴﻴﺪ )ذﻛﺮ ﭘﺴﻮﻧﺪ .m
ﺿﺮوري ﻧﻴﺴﺖ( ﻳﺎ از ﻣﻴﻠﻪ اﺑﺰار M-Fileدﻛﻤﻪ Save and Runرا ﻛﻠﻴﻚ ﻛﻨﻴﺪ .در ﻫﺮ ﺣﺎل ﻧﺘﻴﺠﻪ ﺑﻪ روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺧﻮاﻫﺪ آﻣﺪ. در ﻣﺜﺎلﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻧﺎم ام -ﻓﺎﻳﻞ در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺻﻮرت ﺗﻮﺿﻴﺢ )درﻣﻘﺎﺑﻞ ﻋﻼﻣﺖ (%ذﻛﺮ ﺷﺪه ﻛﻪ ﺑﻪ ﻫﻨﮕﺎم اﺟﺮا از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﻳﻦ ﻧﺎم )ﻣﻌﻤﻮﻻً ﺑﺪون ﭘﺴﻮﻧﺪ (.mﺗﺎﻳﭗ و اﺟﺮا ﻣﻲﺷﻮد echo off .ﺑﺎﻋﺚ ﻗﻄﻊ ﻧﻤﺎﻳﺶ دﺳﺘﻮرات ﺑﺮﻧﺎﻣﻪ ﺑﺮ روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻣﻲﺷﻮد.
ام -ﻓﺎﻳﻞِ اﺳﻜﺮﻳﭙﺖ و ام-ﻓﺎﻳﻞِ ﺗﺎﺑﻌﻲ ﻳﻚ ام -ﻓﺎﻳﻞ ﻛﻪ ﺷﺎﻣﻞ ﺑﺮﻧﺎﻣﻪ )ﻣﺠﻤﻮﻋﻪاي از دﺳﺘﻮرات( ﺑﺎﺷﺪ ام -ﻓﺎﻳﻞ اﺳﻜﺮﻳﭙﺖ Script M-Fileﻧﺎم دارد و ﺑﺎ وارد ﻛﺮدن ﻧﺎم آن از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻣﻲﺷﻮد .اﻣﺎ ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ Function M-Fileﺷﺎﻣﻞ ﻳﻚ ﺗﺎﺑﻊ ﻛﺎرﺑﺮ- ﺗﻌﺮﻳﻒ اﺳﺖ و ﻣﻌﻤﻮﻻً از داﺧﻞ ﺑﺮﻧﺎﻣﻪﻫﺎي دﻳﮕﺮ ﺻﺪا callزده ﻣﻲﺷﻮد .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺒﺤﺚ ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﻣﺮاﺟﻌﻪ ﺷﻮد .ﺗﺎ ﻗﺒﻞ از اﻳﻦ ﻣﺒﺤﺚ ﻛﻠﻴﻪ ام -ﻓﺎﻳﻞﻫﺎي ﻣﻮرد اﺳﺘﻔﺎده اﺳﻜﺮﻳﭙﺖ ﻫﺴﺘﻨﺪ.
2-6ﻣﺜﺎل ﻫﺎي رﻳﺎﺿﻲ ﻣﺤﺎﺳﺒﻪ ﺳﺮﻣﺎﻳﻪ ﻧﻬﺎﺋﻲ ﺑﺮ ﺣﺴﺐ ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﺎ ﻧﺎم BankIn.mﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺟﺪول ﺳﺮﻣﺎﻳﻪ ﻧﻬﺎﺋﻲ ﺑﺮ ﺣﺴﺐ ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ )ﺗﻮﻣﺎن( را ﺑﺎ ﻧﺮخ ﺳﻮد rﭘﺲ از n
ﺳﺎل ﺑﺮاي ﭘﻨﺞ ﻧﻤﻮﻧﻪ از ﻣﻘﺪار ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ ﺑﻪ دﺳﺖ دﻫﺪ.
177552.28 236736.37 710209.10 1183681.84 2367363.67
nama = 75000.00 100000.00 300000.00 500000.00 1000000.00
% BankIn.m ;echo off format bank A = [75000 100000 300000 ﻣﻘﺎدﻳﺮ ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ 500000 1000000]; % ;r = 0.09 ;n = 10 ;B = A * (1+r)^n ]'nama = [A' B >> BankIn.m
در ﻣﺤﺎﺳﺒﻪ ﻣﻘﺪار Bﺑﻪ ﻋﻼﻣﺖ ﺿﺮب ﺑﺪون ﻧﻘﻄﻪ )ﺿﺮب ﺑﺮدار در ﺳﻜﺎﻟﺮ( ،و اوﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ ﺗﻮﺟﻪ ﻛﻨﻴﺪ. ﺗﻘﺴﻴﻢ ﺻﻔﺮ ﺑﺮ ﺻﻔﺮ Sin x ﻣﻨﺤﻨﻲ x
را در ﻓﺎﺻﻠﻪ -4πﺗﺎ 4πرﺳﻢ ﻛﻨﻴﺪ.
67
ﻛﻪ ﺑﺮاي رﻓﻊ آن ﻣﻲﺗﻮان از روش ﺿﺮب ﺑﺮدار، در ﻣﺨﺮج ﺧﻄﺎي ﺗﻘﺴﻴﻢ ﺻﻔﺮ ﺑﺮ ﺻﻔﺮ ﺣﺎدث ﻣﻲﺷﻮدx ﺑﻪ ﻋﻠﺖ وﺟﻮد . اﺳﺘﻔﺎده ﻛﺮدeps ﻣﻨﻄﻘﻲ در %zbz.m echo off; x = -4*pi : pi/10 : 4*pi; y = sin(x)./x; % Warning: Divide by zero. x = x + (x == 0)*eps ; % equivalent to % x = x + (~x)*eps % this one is OK: % x = x + eps y = sin(x)./x; % No Warning plot(x,y) >> zbz 1-6 ﺷﻜﻞ
ﺗﻘﺴﻴﻢ ﺑﺮ ﺻﻔﺮ ﻫﻤﻴﻦ ﻣﻨﺤﻨﻲ را ﺑﺎ اﺳﺘﻔﺎده از. رﺳﻢ ﻛﻨﻴﺪ3π ﺗﺎ-3π را در ﻓﺎﺻﻠﻪy = tan(x) ﻣﻨﺤﻨﻲtn.m در ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﺎ ﻧﺎم . ﻣﺠﺪداٌ رﺳﻢ ﻛﻨﻴﺪy ﺑﺮدار ﻣﻨﻄﻘﻲ در ﺣﺬف ﻣﻘﺎدﻳﺮ ﺑﺰرگ
%tn.m echo off; x = -3*pi/2:pi/100:3*pi/2; y = tan(x); figure(1) plot(x,y) % results in very large y's % because of small x's y = y .* (abs(y) < 1e6); %removes large y's figure(2) plot(x,y) % good looking graph
Figure(1)
>> tn
2-6 ﺷﻜﻞ
Figure(2)
68
رﺳﻢ ﭘﺎراﻣﺘﺮﻳﻚ .ﺑﺎ اﺳﺘﻔﺎده از روش ﭘﺎراﻣﺘﺮﻳﻚ ﻳﻚ داﻳﺮه رﺳﻢ ﻛﻨﻴﺪ x1 = 'cos(alf)'; y1 = 'sin(alf)'; ezplot(x1,y1)
3-6 ﺷﻜﻞ
single ﺗﻌﺮﻳﻒ ﻋﻤﻞ رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع ﺑﻪ ﺻﻮرت ﻳﻚ ﻣﺘﺪsingle ﻣﺎ ﻋﻤﻞ ﺟﻤﻊ را ﺑﺮاي ﻧﻮع. ﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪsingle اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع .( ﻗﺮار ﻣﻲدﻫﻴﻢwork @ )ﻣﻨﺸﻌﺐ از دﻳﺮﻛﺘﻮريsingle )ﺗﺎﺑﻊ( ﺗﻌﺮﻳﻒ و در دﻳﺮﻛﺘﻮري >> si1 + si2 ??? Error using ==> + Function '+' is not defined for values of class 'single'. function F = plas(a,b) F = double(a)+double(b); >> si1 = 2.2; si2 = 3.5; >> plas(si1,si2) ans = 5.7000
ﻣﺜﺎل ﻫﺎي آﻣﺎري3-6 ﺗﺤﻠﻴﻞ آﻣﺎري ﻧﻤﺮات داﻧﺸﺠﻮﻳﺎن .ﻧﻤﺮهﻫﺎي داﻧﺸﺠﻮﻳﺎن ﻳﻚ درس را در ﺑﺮداري ﻗﺮار داده و از ﻟﺤﺎظ آﻣﺎري آﻧﺎﻟﻴﺰ ﻛﺮده و ﻧﺘﺎﻳﺞ را ﻧﻤﺎﻳﺶ دﻫﻴﺪ % Snum.m scr = [12 14.56 18.44 16 8.3 19.1 18.23 16.67 5.3 7.8... 15 12.3 14.6 8.8 17 11.2 13.25 12 13 9 14 ... 11 12 11.5 15 15 7 4 6 11 12 8 9]; N1 = length(scr);N2 = sum(scr)/N1;N3 = mean(scr); N4 = max(scr);N5 = min(scr);N6 = std(scr); S1='Number of Stds';S2 = 'Class Average'; S3 = 'Class Mean';S4 = 'Class Max'; S5 = 'Class Min';S6 = 'Class Std'; fprintf('%-16s %7.3f\n%-16s %7.3f\n%-16s %7.3f\n%-16s %7.3f\n%-16s %7.3f\n%-16s %7.3f\n',S1,N1,S2,N2,S3,N3,S4,N4,S5,N5,S6,N6); >> Snum Number of Stds 33.000 Class Average 12.062 Class Mean 12.062 Class Max 19.100 Class Min 4.000 Class Std 3.908
69
hist() ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر .(4-6 ﻇﺮف ﮔﻨﺠﺎﻧﺪه و ﻧﻤﺎﻳﺶ دﻫﻴﺪ )ﺷﻜﻞ100 ﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﺎ ﺗﻮزﻳﻊ ﻧﺮﻣﺎل اﻳﺠﺎد ﻛﺮده و ﻛﻼٌ در50000 %hst.m x = randn(1,50000); hist(x,100) >> hst
4-6 ﺷﻜﻞ
ﻣﺜﺎل ﻫﺎي ﻣﻜﺎﻧﻴﻚ4-6 projectile آﻧﺎﻟﻴﺰ ﭘﺮﺗﺎﺑﻪ ﻣﺴﻴﺮ، ﺛﺎﻧﻴﻪ8 در ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺑﻴﻦ ﺻﻔﺮ و. ﻣﺘﺮ ﺑﺮ ﺛﺎﻧﻴﻪ ﭘﺮﺗﺎب ﻣﻲﻛﻨﻴﻢ60 درﺟﻪ و ﺳﺮﻋﺖ اوﻟﻴﻪ45 ﭘﺮﺗﺎﺑﻪاي را ﺑﺎ زاوﻳﻪ .(5-6 و زاوﻳﻪ ﭘﺮﺗﺎﺑﻪ را ﺑﺮﺣﺴﺐ زﻣﺎن رﺳﻢ ﻛﻨﻴﺪ )ﺷﻜﻞ، ﺳﺮﻋﺖ ﭘﺮﺗﺎﺑﻪ.،ﭘﺮﺗﺎﺑﻪ در ﻓﻀﺎ % projectile.m echo off; d0 = 45; v = 60; g = 9.8; % constant values a = d0 * pi / 180; % convert to radians t = 0 : 0.1 : 8; x = v * t * cos(a); % horizontal displacement y = v * t * sin(a) - 0.5 * g * t .^ 2; % vertical displacement subplot(2,2,1), plot(x,y),xlabel('x'),ylabel('y') title('Space Path of a Projectile Trajectory') vx = v * cos(a); % horizontal velocity vy = v * sin(a) - g * t; % vertical velocity V = sqrt( vx^2 + vy.^2 ); % Magnitude of velocity subplot(2,2,2), plot(t,V,'g') xlabel('Time'), ylabel('Magnitude of Velocity') d = 180 / pi * atan2( vy, vx ); % angle at time t subplot(2,2,3), plot(t,d,'r') xlabel('Time'),ylabel('Angle of Projectile') >> projectile
5-6 ﺷﻜﻞ
70
ﺳﺮﻋﺖ ﭘﺮﺗﺎﺑﻪ و ﻳﺎﻓﺘﻦ ﻣﻴﻨﻴﻤﻢ آن ام -ﻓﺎﻳﻠﻲ ﺑﺎ ﻧﺎم trj.mﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ: اﻟﻒ( ﺑﺰرﮔﺎي ﺳﺮﻋﺖ ﻳﻚ ﭘﺮﺗﺎﺑﻪ را ﺑﺎ ﻧﺨﺴﺘﻴﻨﻪﻫﺎي :زاوﻳﻪ ﭘﺮﺗﺎب ،d0 = 45ﺳﺮﻋﺖ اوﻟﻴﻪ 60
= ،vو ﺷﺘﺎب
ﮔﺮاﻧﺶ g = 9.8در ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ 0 : 0.1 : 8رﺳﻢ ﻛﻨﺪ .روي ﻣﻲﻧﻴﻤﻢ ﺳﺮﻋﺖ ﻋﻼﻣﺖ × ﺑﺰﻧﻴﺪ. ب( ﻣﻘﺎدﻳﺮ ﻣﻴﻨﻴﻤﻢ و ﻣﻴﺎﻧﮕﻴﻦ ﻣﻨﺤﻨﻲ را ﺑﺎ اﺳﺘﻔﺎده از ﭘﻨﺠﺮه Data Statisticsﻧﺸﺎن دﻫﻴﺪ. % trj.m ;v = 60; g = 9.8 ;d0 = 45; t = 0 : 0.1 : 8 ;a = d0 * pi / 180 % converts to radians ;)vx = v * cos(a ;vy = v * sin(a) - g * t ;) V = sqrt( vx^2 + vy.^2 )'plot(t,V,'g )'xlabel('Time Secs ylabel ... ''Magnitude of Velocity m/s ;))k = find(V == min(V hold on, )'plot(t(k),V(k),'x )% V(k) is min(V hold off
ﺷﻜﻞ 6-6
ﻋﺒﺎرت )) k = find(V == min(Vاﻧﺪﻳﺲ ﻧﻘﻄﻪ ﻣﻲﻧﻴﻤﻢ را ﭘﻴﺪا ﻣﻲﻛﻨﺪ.
ﻣﻘﺎدﻳﺮ ﻛﻤﻴﻨﻪ و ﻣﻴﺎﻧﮕﻴﻦ ﺧﻂﭼﻴﻦ ﺷﺪهاﻧﺪ. ﺷﻜﻞ 7-6
5-6ﻣﺜﺎل ﻫﺎي اﻟﻜﺘﺮﻳﻜﻲ ﺗﻮان ﻣﺼﺮﻓﻲ ﻣﻘﺎوﻣﺖ در ﺷﻜﻞ 8-6ﺑﺎ داﺷﺘﻦ ، kﺗﻮان ﻣﺼﺮﻓﻲ ،وﻟﺘﺎژ ﺑﺎر ،و ﺗﻮان اﺗﺼﺎل ﻛﻮﺗﺎه ﺑﺎﻃﺮي اﻳﻦﮔﻮﻧﻪ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ)ﺗﺤﻘﻴﻖ ﻛﻨﻴﺪ(:. RL k V2 k V2 = , PL = × , Psc = ﺗﻮان اﺗﺼﺎل ﻛﻮﺗﺎه ﺛﺎﺑﺖ اﺳﺖ × , V V L )Ri (1 + k2 Ri Ri k +1 ﺗﻮان ﻣﺼﺮﻓﻲ و وﻟﺘﺎژ ﺑﺎر را ﺑﺮﺣﺴﺐ ) kﻛﻪ ﻧﻤﺎﻳﺶ ﻣﻘﺪار ﺑﺎر اﺳﺖ( رﺳﻢ ﻛﻨﻴﺪ) V = 12, Ri = 10 .ﺷﻜﻞ.(9-6
=k
71
V
% rp.m V = 2; Ri = 10; RL = 0:100; k = RL./Ri; PL = ... =(V^2/Ri)*(k./(1+k.^2)); VL = V*(k./(1+k)); plotyy(k,PL,k,VL), >> rp
VL
9-6 ﺷﻜﻞ 8-6 ﺷﻜﻞ
ﻣﺪار ﻣﻌﺎدل ﭼﻨﺪ ﻣﻘﺎوﻣﺖ ﻣﻮازي . را ﭘﻴﺪا ﻛﻨﻴﺪR1 = 15, R2 = 25, R3 = 80 ﻣﻘﺎوﻣﺖ ﻣﻌﺎدل ﺳﻪ ﻣﻘﺎوﻣﺖ ﻣﻮازي % resi.m RR = [15 25 80]; n1 = ones(1,3) % creates a vector of three ones RI = n1./RR; % reverses all three elementds of RR disp(['RI = ' num2str(RI)]); SRI = sum(RI); % sums up the reverse elements RT = 1/SRI; % gives the equivalent resistance of three disp(['RT = ' num2str(RT)]); >> resi n1 = 1.00 1.00 1.00 RI = 0.066667 0.04 0.0125 RT = 8.3916
ﻳﻚ ﺳﻮﺳﺎز ﻧﻴﻤﻪ ﻣﻮج (12-6 رﺳﻢ ﻛﻨﻴﺪ )ﺷﻜﻞ3π ﺧﺮوﺟﻲ ﻳﻚ ﺳﻮﺳﺎز ﻧﻴﻤﻪ ﻣﻮج را ﺑﺮاي ورودي ﺳﻴﻨﻮﺳﻲ ﺑﻴﻦ ﺻﻔﺮ ﺗﺎ % hf.m alf = ... linspace(0, 3*pi); y = sin(alf); y = y .* (y > 0); plot(alf,y) >> hf
10-6ﺷﻜﻞ
T-Network ﻣﺪار ﺗﻲ : و ﻓﺎزورِ ﺷﺪت ﺟﺮﻳﺎنﻫﺎي ورودي و ﺧﺮوﺟﻲ را ﺑﺮاي ﻳﻚ ﻣﺪار ﺗﻲ ﺑﺎ ﻣﺸﺨﺼﻪﻫﺎي زﻳﺮ ﺑﻪدﺳﺖ آورﻳﺪ، زاوﻳﻪ،ﻣﻘﺪار ω = 1000rad/s Ra=3.05K, Ca = 0.01µF, Rb=4.5K, Cb = 0.05µF Rc = 5.52K, Lc =0.1mH, V1 = 2300, V2 = 450
: ﻓﺮم ﻣﺎﺗﺮﻳﺴﻲ ﻣﻌﺎدﻻت ﻣﺪار اﻳﻦ ﮔﻮﻧﻪ اﺳﺖ. ﻧﺸﺎن داده ﺷﺪه اﺳﺖ10-6 در ﺷﻜﻞZ ﻣﺪار ﺗﻲ ﺑﺎ ﭘﺎراﻣﺘﺮﻫﺎي
|z11 |z21
z12|
|I1| z22| × |I2|
Z
*
I
= |V1| = |V2| =
V
,
I = Z \ V
72
I1 V1
Za
Zb Zc
11-6 ﺷﻜﻞ
I2 V2
V1 = z11I1 + z12I2 V2 = z21I1 + z22I2 z11 z21 z12 z22
= = = =
V1/I1 V2/I1 V1/I2 V2/I2
|I2 |I2 |I1 |I1
= = = =
0 0 0 0
z11 = Za + Zc z22 = Zb + Zc z12 = z21 = Zc
:ﺣﺎل ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت ﺑﺎ ﻣﻘﺎدﻳﺮ داده ﺷﺪه ﻣﻴﻨﻮﻳﺴﻴﻢ I = 0.0027 + 0.0220i 0.0136 + 0.0150i Iabs = 0.0222 0.0202 Iang = 1.4482 0.8339
% Tnet.m echo off omeg = 1000; Ra = 3050; Ca = 0.01e-6; Za = Ra+1/(omeg*Ca*j); Rb = 4500; Cb = 0.05e-6; Zb = Rb+1/(omeg*Cb*j); Rc = 5520; Lc = 0.0001; Zc = Rc+omeg*Lc*j; z11 = Za + Zc; z22 = Zb + Zc; z12 = Zc; z21 = Zc; Z = [z11 z12; z21 z22]; V1 = 2300; V2 = 450; V = [V1; V2]; I = Z \ V >> Tnet >> Iabs = abs(I)' >> Iang = angle(I)' >> compass(I)
12-6 ﺷﻜﻞ
RC اﻣﭙﺪاﻧﺲ ﻣﻌﺎدل ﻣﺪار ﻫﻢراه ﺑﺎω = 100 rad/s اﻣﭙﺪاﻧﺲ ﻣﻌﺎدلﻫﺎ را در ﻓﺮﻛﺎﻧﺲ زاوﻳﻪاي.در ﻣﺪار زﻳﺮ اﻧﺪازه ﺧﺎزن ﻫﺮ ﺑﺎر دوﺑﺮاﺑﺮ ﻣﻲﺷﻮد . ﻫﻨﺪﺳﻲﻫﺎ آن ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ-ﻧﻤﺎﻳﺶ ﺑﺮدار % rc.m omeg = 100; R = repmat(1000,1,4); c = [10e-6 20e-6 40e-6 80e-6]; z = R + 1./(j*omeg*c); compass(z) disp(' C/micF Angle/Deg Z/Kohm R/Kohm'); disp([1e6*c' (180*angle(z)/(2*pi))' (abs(z)/1e3)' R'/1e3]); >> rc C/micF Angle/Deg Z/Kohm R/Kohm 10.0000 -22.5000 1.4142 1.0000 20.0000 -13.2825 1.1180 1.0000 40.0000 -7.0181 1.0308 1.0000 80.0000 -3.5625 1.0078 1.0000
13-6 ﺷﻜﻞ
73
semilogx() دﺳﺘﻮر،ﺗﺮﺳﻴﻢ ﻣﺸﺨﺼﻪ ﭘﺮاب اﺳﻴﻠﻮﺳﻜﻮپ اﻣﭙﺪاﻧﺲ وردي ﺑﺮ ﺣﺴﺐ ﻣﮕﺎاﻫﻢ و، ﭘﺮاب ﻳﻚ اﺳﻜﻮپ را ﺑﺮاي اﻧﺪازهﮔﻴﺮي ﻓﺮﻛﺎﻧﺲﻫﺎي ﭘﺎﺋﻴﻦ ﻧﺸﺎن ﻣﻲدﻫﺪ،ﻣﺪار زﻳﺮ . رﺳﻢ ﻛﻨﻴﺪ20Hz ﺑﺎ ﮔﺎم20KHz ﺗﺎ20Hz ﺿﺮﻳﺐ ﺗﺒﺪﻳﻞ اﻣﭙﺪاﻧﺲ آن را در ﺑﺎزه ﻓﺮﻛﺎﻧﺴﻲ R1=9MΩ R2=1MΩ
C1=100pF C2=100pF ⎡ 1 ⎤ ⎡ 1 ⎤ R1 R2 Zin = ⎢ ||R1 ⎥ + ⎢ ||R2 ⎥ = + ⎢⎣ jωC1 ⎥⎦ ⎢⎣ jωC2 ⎥⎦ 1+jωC1R1 1+jωC2R2
14-6 ﺷﻜﻞ
% ProbeGain.m c = [10e-12 100e-12]; r = [9e6 1e6]; freq = [20:20:20000]; omg = 2*pi*freq; z1 = r(1)./(1+j*omg*c(1)*r(1)); z2 = r(2)./(1+j*omg*c(2)*r(2)); zin = z1 + z2; figure(1) semilogx(freq,abs(zin)/1e6) xlabel('Freq') ylabel('Zin MegaOhm') title('Scope Probe Input Impedance') figure(2) gain = z2 ./ zin ; % . و ﺑﻪ ﻧﺘﻴﺠﻪ ﻏﻠﻂ ﻣﻨﺠﺮ ﻣﻲﺷﻮد، را ﻣﻌﻜﻮس ﻛﺮدهzin )ﺑﺪون ﻧﻘﻄﻪ( ﻣﺎﺗﺮﻳﺲ/ ﻛﺎرﺑﺮد ﻋﻼﻣﺖ semilogx(freq,abs(gain)) xlabel('Freq') ylabel('Gain') title('Scope Probe Gain') >> ProbeGain
15-6 ﺷﻜﻞ
74
6-6ﺗﻤﺮﻳﻦ ﺑﺮﻧﺎﻣﻪﻫﺎي زﻳﺮ را در ام -ﻓﺎﻳﻞﻫﺎي ﺟﺪاﮔﺎﻧﻪ ﺑﻨﻮﻳﺴﻴﺪ: -1در ﻣﺜﺎل ﻣﺪار ﺗﻲ ﻫﻤﺎن ﻣﻘﺎدﻳﺮ را ﺑﺮاي ﻳﻚ ﻣﺪار ﭘﻲ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺑﺎ اﺳﺘﻔﺎده از ﭘﺎراﻣﺘﺮﻫﺎي Yﻣﺪار را ﺣﻞ ﻛﻨﻴﺪ. -2در ﻣﺜﺎل ﭘﺮاب اﺳﻜﻮپ ،زاوﻳﻪ ﺗﺒﺪﻳﻞ ﻣﺪار را ﺑﺎ ﻣﻘﻴﺎس درﺟﻪ ﺑﺮ ﺣﺴﺐ ﻟﮕﺎرﻳﺘﻢ ﻓﺮﻛﺎﻧﺲ رﺳﻢ ﻛﻨﺪ .ﺑﺮﭼﺴﺐﻫﺎي ﺿﺮوري را در ﮔﺮاف ﺑﮕﻨﺠﺎﻧﻴﺪ. x -3و yﻣﺜﺎل داﻳﺮه ﻣﺜﻠﺜﺎﺗﻲ را ﻗﺴﻤﺖﻫﺎي ﺣﻘﻴﻘﻲ و ﻣﻮﻫﻮﻣﻲ ﻳﻚ ﺗﺎﺑﻊ ﻣﺨﺘﻠﻂ ﺑﮕﻴﺮﻳﺪ . zc = x + i*yﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ را ﺑﺮ ﺣﺴﺐ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ رﺳﻢ ﻛﻨﻴﺪ. r -4را ﺑﺮداري ﭼﺮﺧﺎن و ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ ﺑﺎ tetﺑﮕﻴﺮﻳﺪ)) ، r = repmat(1,1,length(tetﺗﺮﺳﻴﻢ را ﺑﻪ ﻃﺮﻳﻖ ﻗﻄﺒﻲ) polar(r,thetaاﻧﺠﺎم دﻫﻴﺪ. -5درﺟﻪ ﺣﺮارت ﺳﺤﺮ ،ﺻﺒﺢ ،ﻇﻬﺮ ،ﻏﺮوب ،ﻋﺼﺮ ،و ﺷﺐِ ﻫﺮروز از ﻳﻚ ﻫﻔﺘﻪ را در ﻳﻚ ﻣﺎﺗﺮﻳﺲ 6 × 7وارد ﻛﺮده و ﮔﺮافﻫﺎي ﺳﺘﻮﻧﻲ و ﻣﻨﺤﻨﻲ ﻣﺮﺑﻮﻃﻪ را رﺳﻢ ﻛﻨﻴﺪ. -6ﻳﻚﺑﺎر 20و ﻳﻚﺑﺎر 500ﻋﺪد ﺗﺼﺎدﻓﻲ از ﻫﺮ دو ﻧﻮع )( rand(), randnﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ .ﻣﻴﺎنﮔﻴﻦ )(mean
ﻣﺎﻛﺰﻳﻤﻢ ،ﻣﻴﻨﻴﻤﻢ ،و اﻧﺤﺮاف ﻣﻴﺎﻧﻪ )( stdاﻋﺪاد ﺗﺼﺎدﻓﻲ از ﻫﺮ دو ﻧﻮع را ﭘﻴﺪا ﻛﻨﻴﺪ .ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮدار ﻣﻨﻄﻘﻲ ﺗﻌﺪاد اﻋﺪاد ﺑﺎﻻ و ﭘﺎﺋﻴﻦ ﻣﻴﺎنﮔﻴﻦ را ﺷﻤﺎرش ﻛﻨﻴﺪ. راﻫﻨﻤﺎ :ﺗﺎﺑﻊ ) n ،randn(1,nﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﺎ ﺗﻮزﻳﻊ ﻧﺮﻣﺎل )ﮔﻮﺳﻲ( ﺣﻮل ) 0ﻣﻴﺎنﮔﻴﻦ (0ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ ،ﺑﺎ اﻓﺰاﻳﺶ ﺗﻌﺪاد اﻋﺪاد ﺗﺼﺎدﻓﻲ ﺗﻮزﻳﻊ ﺑﻪ ﻧﺮﻣﺎل ﻧﺰدﻳﻚﺗﺮ ﻣﻲﺷﻮد. rL(1 + r/12)12N -7ﻗﺴﻂ ﭘﺮداﺧﺖ وام ﺧﺎﻧﻪ از اﻳﻦ ﻓﺮﻣﻮل ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ. ]12[(1 + r/12)12N − 1
=P
ﻣﺒﻠﻎ L = 10e6وام ﺑﺎ ﺳﻮد r = 0.15ﺳﺎﻻﻧﻪ در ﻣﺪت N = 5:20ﺳﺎل ﺑﺎزﭘﺮداﺧﺖ ﻣﻲﺷﻮد ،ﻗﺴﻂ ﻣﺎﻫﺎﻧﻪ را ﺑﺮاي زﻣﺎن ﺑﺎزﭘﺮداﺧﺖ ﺑﻴﻦ 5ﺗﺎ 20ﺳﺎل ﺑﻪ ﺻﻮرت ﺟﺪول ﻧﺸﺎن دﻫﻴﺪ و ﺑﻪ ﺻﻮرت ﻧﻘﻄﻪ ﺑﻪ ﻧﻘﻄﻪ )ﻧﻪ ﺧﻂ ﭘﻴﻮﺳﺘﻪ( ،و ﻧﻤﻮدار ﺳﺘﻮﻧﻲ رﺳﻢ ﻛﻨﻴﺪ اﺳﺖ .ﻣﺒﻠﻎ ﻛﻞ ﺑﺎزﭘﺮداﺧﺖ را ﺑﺮ ﺣﺴﺐ Nﺑﻪ ﺻﻮرت ﺟﺪول ﻧﺸﺎن دﻫﻴﺪ و ﺑﻪ ﺻﻮرت ﻧﻘﻄﻪاي، ﺧﻂﭼﻴﻦ ،ﺳﺘﺎرهاي ،و ﻧﻤﻮدار ﺳﺘﻮﻧﻲ Bar Chartرﺳﻢ ﻛﻨﻴﺪ اﺳﺖ.
75
ﻓﺼﻞ 7ﮔﺮاﻓﻴﻚ ﺳﻪ ﺑﻌﺪي 1-7ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲ ﻓﻀﺎﺋﻲ ﺗﺎﺑﻊ
)(plot3
اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ ﻣﻨﺤﻨﻲ دو ﺑﻌﺪي را ﺑﻪ ﺑﻌﺪ ﺳﻮم ﻣﻲﺑﺮد ،در ﻧﺘﻴﺠﻪ ﻳﻚ ﻣﻨﺤﻨﻲ ﻓﻀﺎﺋﻲ )ﺳﻪﺑﻌﺪي( رﺳﻢ ﻣﻲﺷﻮد )ﻣﺜﻼٌ ﻳﻚ داﻳﺮه ﺑﻪ ﺻﻮرت ﻣﺎرﭘﻴﭻ درﻣﻲآﻳﺪ( .ﻋﺒﺎرت ) plot3(x1,y1,z1ﻧﻘﺎﻃﻲ را ﺑﺎ ﻣﺨﺘﺼﺎت x1,y1,z1ﺑﺎ ﺧﻂ ﻣﻨﺤﻨﻲ ﺑﻪ ﻫﻢ وﺻﻞ ﻣﻲﻛﻨﺪ .ﺳﻪ ﺑﺮدار ﻣﻲﺗﻮاﻧﻨﺪ ﺑﻪ ﻧﺤﻮ ﺟﺒﺮي ﺑﻪ ﻫﻢ واﺑﺴﺘﻪ ﺑﻮده ﻳﺎ ﻛﺎﻣﻼٌ ﻣﺴﺘﻘﻞ از ﻳﻚدﻳﮕﺮ ﺑﺎﺷﻨﺪ ،اﻣﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﺑﺮدارﻫﺎي x1,y1,z1ﺑﺎﻳﺪ ﺑﺮاﺑﺮ ﺑﺎﺷﻨﺪ.
ﻣﺜﺎل: ﻳﻚ داﻳﺮه ﺑﺎ روش ﻏﻴﺮﻣﺴﺘﻘﻴﻢ ﺗﻮﻟﻴﺪ و آنرا در ﺟﻬﺖ ﻋﻤﻮدي ﺣﺮﻛﺖ داده و ﻳﻚ ﻣﺎرﭘﻴﭻ اﺳﺘﻮاﻧﻪاي اﻳﺠﺎد ﻛﻨﻴﺪ. دراﻳﻦ ﻣﺴﺄﻟﻪ x,yﺑﺎﻳﺪ ﺗﺎﺑﻊ داﻳﺮهاي ﻳﻚدﻳﮕﺮ ﺑﺎﺷﻨﺪ ،اﻣﺎ zﻣﺴﺘﻘﻞ ازآن دو ﺑﻮده و ﺻﺮﻓﺎٌ در ﺟﻬﺖ ﻋﻤﻮدي ﺣﺮﻛﺖ ﻣﻲﻛﻨﺪ. % p3.m ;echo off ;)alf = linspace(0,10*pi,400 ;)x1 = cos(alf ;)y1 = sin(alf ;)z1 = linspace(0,40,400 plot3(x1,y1,z1), title ... ('The circle follows )'z1 points in space >> p3
ﺷﻜﻞ 1-7
ﻣﻨﺤﻨﻲ ﻓﻀﺎﺋﻲِ ﻧﺘﻴﺠﻪ اﺗﺼﺎل ﻧﻘﺎﻃﻲ ﺑﺎ ﻣﺨﺘﺼﺎت x1,y1,z1
ﺗﺎﺑﻊ
)(comet3
ﺗﺎﺑﻊ)( comet3ﻫﻤﺎن ﻛﺎر)( plot3را ﺑﺎ ﭘﻮﻳﺎ ﻧﻤﺎﺋﻲ اﻧﺠﺎم ﻣﻲدﻫﺪ .ﻣﺜﺎل ﻓﻮق را ﺑﺎ )comet3(x1,y1,z1
اﺟﺮا ﻛﻨﻴﺪ.
2-7ﺗﺮﺳﻴﻢ ﺳﻄﻮح ﻓﻀﺎﺋﻲ دﺳﺘﻮر
)meshgrid(a,b
اﮔﺮ aو bﺑﻪﺗﺮﺗﻴﺐ ﺑﺮدارﻫﺎي nو mﻋﻨﺼﺮي ﺑﺎﺷﻨﺪ .ﻋﺒﺎرت ) [X,Y] = meshgrid(a,bﻣﺎﺗﺮﻳﺲ Xرا ﺑﺎ ردﻳﻒﻫﺎﺋﻲ ﻣﺴﺎوي aدر mردﻳﻒ و ﻣﺎﺗﺮﻳﺲ Yرا ﺑﺎ ﺳﺘﻮنﻫﺎﺋﻲ ﻣﺴﺎوي bدر nﺳﺘﻮن ﻣﻲﺳﺎزد .در ﻧﺘﻴﺠﻪ Xو Yدو ﻣﺎﺗﺮﻳﺲ ﻫﻢﺳﺎن ﺧﻮاﻫﻨﺪ ﺑﻮد .دﺳﺘﻮر ) [X,Y] = meshgrid(aاﺳﺖ و Xو Yرا ﺗﺮاﻧﻬﺎد ﻣﻲﺳﺎزد.
ﻣﺜﺎل:
3
76
2
1
; >> x = -3:3 ; >> y = -2:2 )>> [X,Y] = meshgrid(x,y X = -3 -2 -1 0
3 3 3 3
2 2 2 2
1 1 1 1
0 0 0 0
-1 -1 -1 -1
-2 -2 -2 -2
-3 -3 -3 -3
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
= Y
ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﭼﻨﺎنﭼﻪ در ﻣﺜﺎل ﻓﻮق ﻣﺸﺎﻫﺪه ﻣﻲﺷﻮد ،ردﻳﻒﻫﺎي ﻣﺎﺗﺮﻳﺲ Xﭘﻨﺞ ﺧﻂ اﻓﻘﻲ ﻫﻔﺖ ﻧﻘﻄﻪاي در ﺻﻔﺤﻪ X-Yاﻳﺠﺎد ﻣﻲ- ﻛﻨﻨﺪ .ﺳﺘﻮنﻫﺎي ﻣﺎﺗﺮﻳﺲ Yﻫﻔﺖ ﺧﻂ ﻋﻤﻮدي ﭘﻨﺞ ﻧﻘﻄﻪاي در ﺻﻔﺤﻪ X-Yاﻳﺠﺎد ﻣﻲﻛﻨﺪ .از ﺑﺮﺧﻮرد اﻳﻦ ﺧﻄﻮط ﻣﻄﺎﺑﻖ ﺷﻜﻞ زﻳﺮ ﺳﻲوﭘﻨﺞ ﻧﻘﻄﻪ ﺣﺎﺻﻞ ﻣﻲﺷﻮد ﻛﻪ ﻧﻘﺎط ﺻﻔﺤﻪ X-Yرا ﺗﺸﻜﻴﻞ ﻣﻲدﻫﻨﺪ )دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﻫﺮ ﻳﻚ از ﻣﺎﺗﺮﻳﺲﻫﺎي Xو Yﻧﻴﺰ ﺳﻲوﭘﻨﺞ اﺳﺖ( .اﮔﺮ ﻣﻘﺎدﻳﺮ و ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﺑﺮدارﻫﺎي xو yرا ﺗﻐﻴﻴﺮ دﻫﻴﻢ ،ﺗﻌﺪاد ﻧﻘﺎﻃﻲ را ﻛﻪ دﺳﺘﻮر ) ،[X,Y] = meshgrid(x,yﺑﺮروي ﺻﻔﺤﻪ اﻳﺠﺎد ﻣﻲﻛﻨﺪ ﺗﻐﻴﻴﺮ ﺧﻮاﻫﺪ ﻛﺮد. o o o o o q )Y(:,7
o o o o o q )Y(:,6
o o o o o q )Y(:,5
o o o o o q )Y(:,4
o o o o o q )Y(:,3
o o o o o q )Y(:,2
o o o o o q )Y(:,1
)X(1,: )X(2,: )X(3,: )X(4,: )X(5,:
ﻣﺜﺎل: ﺑﺮدار a = -3:3را ﺗﻌﺮﻳﻒ ،و ﺑﺎ آن ﺻﻔﺤﻪ X-Yرا ﭘﺪﻳﺪ آورﻳﺪ .ﺗﻌﺪاد ﻧﻘﺎطِ ﺻﻔﺤﻪ X-Yﭼﻨﺪﺗﺎ اﺳﺖ؟
ﺣﻞ: 3 3 3 3 3 3 3 -3 -2 -1 0 1 2 3
2 2 2 2 2 2 2 -3 -2 -1 0 1 2 3
1 1 1 1 1 1 1 -3 -2 -1 0 1 2 3
; >> a = -3:3 )>> [X,Y] = meshgrid(a X = -3 -2 -1 0 -3 -2 -1 0 -3 -2 -1 0 -3 -2 -1 0 -3 -2 -1 0 -3 -2 -1 0 -3 -2 -1 0 Y = -3 -3 -3 -3 -2 -2 -2 -2 -1 -1 -1 -1 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
ﻧﻘﺎط ﺣﺎﺻﻞ ﺑﺮروي ﺻﻔﺤﻪ X-Yﻫﻔﺖدرﻫﻔﺖ ﻳﻌﻨﻲ ﭼﻬﻞوﻧُﻪ اﺳﺖ ﻛﻪ ﺑﺮاﺑﺮ ﺑﺎ ﺗﻌﺪاد ﻋﻨﺼﺮ ﻫﺮﻳﻚ از ﻣﺎﺗﺮﻳﺲﻫﺎ ﻣﻲﺑﺎﺷﺪ.
دﺳﺘﻮر
)mesh(X,Y,Z
ﭼﻨﺎنﭼﻪ ﻳﻚ ﺗﺎﺑﻊ ﻓﻀﺎﺋﻲ از Xو Yﻣﺎﻧﻨﺪ Zداﺷﺘﻪ ﺑﺎﺷﻴﻢ ،دﺳﺘﻮر ) mesh(X,Y,Zﻧﻘﺎط ﻓﻀﺎﺋﻲ ﺑﺎ ﻣﺨﺘﺼﺎت X,Y,Z
ﭘﺪﻳﺪ ﻣﻲآورد و آنﻫﺎ را ﻃﻮري ﺑﻪﻫﻢ وﺻﻞ ﻣﻲﻛﻨﺪ ﻛﻪ ﻳﻚ ﺷﻜﻞ ﻓﻀﺎﺋﻲ ﭘﺪﻳﺪ آﻳﺪ .ﻣﺨﺘﺼﺎت ﺳﻪﮔﺎﻧﻪ ﻫﺮﻧﻘﻄﻪي اﻳﻦ ﺷﻜﻞ
77
ﻋﻨﺎﺻﺮ ﻣﺘﻨﺎﻇﺮ از ﻣﺎﺗﺮﻳﺲﻫﺎي ﻓﻮق ﻣﻲﺑﺎﺷﻨﺪ )ﻫﺮ ﺳﻪ ﻣﺎﺗﺮﻳﺲ ﺑﺎﻳﺪ ﻫﻢﺳﺎن ﺑﺎﺷﻨﺪ( .ﻣﺎﺗﺮﻳﺲﻫﺎي Xو Yﻛﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻣﺴﺘﻘﻞ ﻫﺴﺘﻨﺪ ﻣﻲﺗﻮاﻧﻨﺪ ﺑﺎ دﺳﺘﻮر )( meshgridﻳﺎ ﺑﻪ ﻃﺮﻳﻖ دﻳﮕﺮي اﻳﺠﺎد ﺷﻮﻧﺪ ،اﻣﺎ Zﺑﺎﻳﺪ ﺗﺎﺑﻊ X,Yﺑﺎﺷﻨﺪ.
ﻣﺜﺎل: ﺑﺎ ﺑﺮدارﻫﺎي a = -6:6و b =-4:4ﻣﺎﺗﺮﻳﺲﻫﺎي Xpو Ypرا ﺑﺴﺎزﻳﺪ. ﺗﺎﺑﻊ ﻓﻀﺎﺋﻲ Zp = Xp.^2 + Yp.^3را اﻳﺠﺎد ﻛﺮده ،ﺳﭙﺲ ﺑﺎ دﺳﺘﻮر )( meshﺻﻔﺤﻪاي ﭘﺪﻳﺪ آورﻳﺪ ﻛﻪ ﻣﺨﺘﺼﺎت ﺳﻪﮔﺎﻧﻪ ﻧﻘﺎط آن ﻋﻨﺎﺻﺮ ﻣﺘﻨﺎﻇﺮ از ﻣﺎﺗﺮﻳﺲﻫﺎي Zpو Xp,Ypﻣﺜﺎل ﻓﻮق ﺑﺎﺷﺪ. % ThreeD.m ;echo off [Xp,Yp] = ... ;)meshgrid(-6:6, -4:4 ; Zp = Xp.^2 + Yp.^3 )mesh(Xp,Yp,Zp )'xlabel('Xp )'ylabel('Yp )'zlabel('Zp >> ThreeD
ﺷﻜﻞ 2-7
دﺳﺘﻮر ) ، mesh(Mﻧﻤﺎﻳﺶ ﺳﻪ ﺑﻌﺪي ﻳﻚ ﻣﺎﺗﺮﻳﺲ دﺳﺘﻮر ) mesh(Mاﻧﺪﻳﺲﻫﺎي ﺳﺘﻮن و ردﻳﻒ Mرا ﺑﻪﺗﺮﺗﻴﺐ روي ﻣﺤﻮرﻫﺎي xو ، yو ﻣﻘﺎدﻳﺮ ﻋﻨﺎﺻﺮ را ﺑﺎﻻي ﻣﺨﺘﺼﺎت ﻣﺴﻄﺢ ﻫﺮ ﻋﻨﺼﺮ ) (x,yروي ﻣﺤﻮر zﻣﻲﺑﺮد.
ﻣﺜﺎل: ;>> M = [-3 -2 -1 ;]1 2 3 )>> mesh(M
ﺷﻜﻞ 3-7
78
3-7ﺗﻮاﺑﻊ ﻓﻀﺎﺋﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي رﺳﻢ ﻛُﺮه ﺑﺎ sphereو اﻳﺠﺎد اﻓﻜﺖ ﻫﺎي ﺗﺼﻮﻳﺮي ﻋﺒﺎرت [X,Y,Z] = sphereﻣﺨﺘﺼﺎت ﻓﻀﺎﺋﻲ ﻳﻚ ﻛﺮه را داﺧﻞ ﺳﻪ ﻣﺎﺗﺮﻳﺲ ﻗﺮار ﻣﻲدﻫﺪ .در زﻳﺮ ﻳﻚ ﻛﺮه را رﺳﻢ ،و ﺑﻌﻀﻲ اﻓﻜﺖﻫﺎي ﺗﺼﻮﻳﺮي را روي ﮔﺮاف اﻳﺠﺎد ﻛﺮدهاﻳﻢ: % sp ;[X,Y,Z] = sphere )mesh(X,Y,Z ﮔﺮاف را ﻣﺘﻘﺎرن ﻣﻲﻛﻨﺪaxis equal % . ﻣﺤﻮرﻫﺎ را ﻣﺤﻮ ﻣﻲﻛﻨﺪaxis off % . hidden off ﻗﺴﻤﺖﻫﺎي ﻣﺨﻔﻲ ﮔﺮاف را ﻇﺎﻫﺮ ﻣﻲﻛﻨﺪ% . >> sp
ﺷﻜﻞ 4-7
رﺳﻢ اﺳﺘﻮاﻧﻪ ﺑﺎ
cylinder
ﻋﺒﺎرت [X,Y,Z] = cylinderﻣﺨﺘﺼﺎت ﻓﻀﺎﺋﻲ ﻳﻚ اﺳﺘﻮاﻧﻪ را داﺧﻞ ﺳﻪ ﻣﺎﺗﺮﻳﺲ ﻗﺮار ﻣﻲدﻫﺪ .ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده از آنﻫﺎ ﻣﻲﺗﻮان اﺳﺘﻮاﻧﻪ را ﺑﺎ ﺷﮕﺮدﻫﺎي ﺗﺼﻮﻳﺮي ﻣﺨﺘﻠﻒ اﻳﺠﺎد ﻛﺮد.
رﺳﻢ ﻗﻠﻪ ﻫﺎ ﺑﺎ ﺗﺎﺑﻊ ﻧﻤﻮﻧﻪ
peaks
ﺗﺎﺑﻊ peaksﻳﻜﻲ از ﺗﻮاﺑﻊ ﻧﻤﻮﻧﻪ MATLABاﺳﺖ .ﻛﻪ ﺳﻄﺤﻲ را ﺑﺎ ﺗﻌﺪادي ﻗُﻠًﻪ رﺳﻢ ﻣﻲﻛﻨﺪ. ﺑﺎ typeﻫﺮﻳﻚ از ﺗﻮاﺑﻊ ﻓﻀﺎﺋﻲ ﻛﺘﺎبﺧﺎﻧﻪاي ،روﺗﻴﻦ ﺑﺮﻧﺎﻣﻪﻫﺎي آنﻫﺎ را ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ.
4-7ﺑﻌﻀﻲ از ﻗﺎﺑﻠﻴﺖ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ ﻣﺘﻠﺐ زاوﻳﻪ دﻳﺪ ﻳﻚ ﺗﺼﻮﻳﺮ ﻋﺒﺎرت [a b] = viewزاوﻳﻪ دﻳﺪ ﻓﻌﻠﻲ ﺗﺮﺳﻴﻢ را ﻣﻲدﻫﺪ .ﻋﺪد aزاوﻳﻪ ﭼﺮﺧﺶ اﻓﻘﻲ و ﻋﺪد bزاوﻳﻪ ﭼﺮﺧﺶ ﻋﻤﻮدي ﺷﻜﻞ را ﻧﺴﺒﺖ ﺑﻪ دﻳﺪ ﻣﺴﺘﻘﻴﻢ از روﺑﺮو ﻣﻲدﻫﻨﺪ .ﻣﻘﺎدﻳﺮ ﭘﻴﺶ ﻓﺮض زاوﻳﻪ دﻳﺪ ﺑﻪ ﻫﻨﮕﺎم رﺳﻢ ﻫﺮ ﮔﺮاف -37.5
درﺟﻪ ﭼﺮﺧﺶ اﻓﻘﻲ )در ﺧﻼف ﺟﻬﺖ ﻋﻘﺮﺑﻪﻫﺎي ﺳﺎﻋﺖ( و ﭼﺮﺧﺶ ﻋﻤﻮدي ﺑﻪ اﻧﺪزه +30درﺟﻪ )درﺟﻬﺖ ﻋﻘﺮﺑﻪﻫﺎي ﺳﺎﻋﺖ( اﺳﺖ .دﺳﺘﻮر ) view(a,bزاوﻳﻪ دﻳﺪ را دﺳﺘﻲ ﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ .ﻋﺪد aزاوﻳﻪ ﭼﺮﺧﺶ اﻓﻘﻲ ﺟﺪﻳﺪ و ﻋﺪد b
زاوﻳﻪ ﭼﺮﺧﺶ ﻋﻤﻮدي ﺟﺪﻳﺪ ﺷﻜﻞ را اﻳﺠﺎد ﻣﻲﻛﻨﻨﺪ .ﺑﺎ اﻧﺘﺨﺎبﻫﺎﺋﻲ از ﻣﻨﻴﻮي Toolsزاوﻳﻪ دﻳﺪ را ﺑﺎ ﻣﺎوس ﺗﻐﻴﻴﺮ دﻫﻴﺪ
ﻣﺜﺎل: ﻛﻼه ﻣﻜﺰﻳﻜﻲ ﻣﺘﻠﺐ را رﺳﻢ ﻛﻨﻴﺪ .زاوﻳﻪ ﭼﺮﺧﺶ اﻓﻘﻲ و ﻋﻤﻮدي ﺷﻜﻞ را ﭘﻴﺪا ﻛﺮده ،ﺳﭙﺲ زاوﻳﻪ را ﺑﻪ دﻳﺪ روﺑﺮو ﺑﺒﺮﻳﺪ. % mex.m ;)[x y ] = meshgrid(-8 : 0.5 : 8.5 ;r = sqrt(x.^2 + y.^2) + eps ;z = sin(r) ./ r )mesh(z [a b] = view )view(0,0 >> mex a = -37.5000 b = 30
79
ﺷﻜﻞ 5-7
ﺗﺼﻮﻳﺮﺑﺮداري ﺑﺎ
getframe
ﺑﺎ دﺳﺘﻮر getframeﻣﻲﺗﻮان از ﻫﺮ ﻳﻚ از زواﻳﺎي ﮔﺮاف ﻳﻚ ﻋﻜﺲ ﮔﺮﻓﺖ.
ﻣﺜﺎل: ﺗﺼﻮﻳﺮ ﻛﻼه ﻣﻜﺰﻳﻜﻲ را اﻳﺠﺎدﻛﺮده ،ﺑﺮﻧﺎﻣﻪ زﻳﺮ را ﺑﺮاي آن اﺟﺮا ﻛﻨﻴﺪ. % mexmv.m ;)[x y ] = meshgrid(-8 : 0.5 : 8.5 ;r = sqrt(x.^2 + y.^2) + eps ;z = sin(r) ./ r )mesh(z grid off axis off hidden off for k = 1: 150 )view(-37.5 + k,30 - k ;getframe end >> mexmv ﻫﻢﭼﻨﻴﻦ ﻣﻲﺗﻮان ﻣﺠﻤﻮﻋﻪ ﻓﺮﻳﻢﻫﺎ را داﺧﻞ ﻳﻚ ﻣﺎﺗﺮﻳﺲ رﻳﺨﺖ ،و در ﺻﻮرت ﻟﺰوم ﺑﺎ دﺳﺘﻮر saveآن را روي دﻳﺴﻚ
ﻧﮕﻪداري ﻛﺮد.
ﻣﺜﺎل: ﺗﺎﺑﻊ داﺧﻠﻲ peaksرا ﺑﻪ ﺣﺮﻛﺖ درآورده و ﻓﻴﻠﻢ آن را در ﻣﺎﺗﺮﻳﺴﻲ ﺑﻪﻧﺎم miﻧﮕﻪدارﻳﺪ. % pk.m peaks axis off, grid off for k = 1:20 ;)view(-37.5+30*k,30+30*k mi(k) = getframe; % mi(:,k) and mi(k,:) are also valid end >> pk
ﺑﺎز ﻧﻤﺎﻳﺶ ﻓﻴﻠﻢ ﺑﺎدﺳﺘﻮر
)(movie
اﮔﺮ ﻣﺘﻐﻴﺮ miدر ﺣﺎﻓﻈﻪ ﻣﺎﻧﺪه ﺑﺎﺷﺪ ،ﻳﺎ از دﻳﺴﻚ ﺑﻪ ﺣﺎﻓﻈﻪ ﻣﺘﻠﺐ ﺑﺎر ﮔﺬاري ﺷﺪه ﺑﺎﺷﺪ ،ﺗﺼﺎوﻳﺮ ﻧﮕﻪداري ﺷﺪه در آن ﺑﺎ دﺳﺘﻮر ) movie(miﺑﻪ ﻧﻤﺎﻳﺶ ﻣﺠﺪد درﻣﻲآﻳﺪ.
ﻣﺜﺎل: ﺑﺮاي ﻣﺜﺎل ﻓﻮق ﻗﺎبﻫﺎي ﺗﺼﻮﻳﺮ را در ﻳﻚ ﻓﺎﻳﻞ .matﺿﺒﻂ ﻛﺮده ،و در اﺟﺮاي ﺑﻌﺪي ﻣﺘﻠﺐ ﺑﻪ ﻧﻤﺎﻳﺶ درآورﻳﺪ. % Ldm.m clear x y r z k % removes all but mi for safety
80
delete mi.mat % if already exists in the current directory save mymov mi % mi variable is saved into mymov.mat file clear mi % removes mi >> Ldm
در اﺟﺮاي ﺑﻌﺪي ﻣﺘﻠﺐ: >> load mymov )>> movie(mi
5-7ﺗﻐﻴﻴﺮات روي ﻗﺴﻤﺘﻲ از ﺳﻄﺢ ﺗﺮﺳﻴﻢ ﺳﻪ ﺑﻌﺪي ﺣﺬف ﻗﺴﻤﺘﻲ از ﺳﻄﺢ اﻳﻦ ﻛﺎر ﺑﺎ اﺳﺘﻔﺎده از ، nanﺿﺮب در ﺻﻔﺮ ،و ﻣﺎﺗﺮﻳﺲ ﺗﻬﻲ اﻧﺠﺎم ﻣﻲﺷﻮد .ﻫﺮﻳﻚ از روشﻫﺎ ﺑﻪ ﻧﻮﻋﻲ ﻋﻤﻞ ﺣﺬف را اﻧﺠﺎم ﻣﻲدﻫﻨﺪ.
ﻣﺜﺎل:
3
3
در ﻳﻚ ام -ﻓﺎﻳﻞ ﺗﺎﺑﻊ ﻓﻀﺎﺋﻲ z = x - yرا رﺳﻢ و ﺳﭙﺲ ﻗﺴﻤﺘﻲ از آن را ﺣﺬف ﻛﺮده ،ﻧﺘﻴﺠﻪ را رﺳﻢ ﻛﻨﻴﺪ. % nn.m ;a = 0:10 ;b = 0:6 ;)[x y] = meshgrid(a,b ;)z = (x.^3 - y.^3 )mesh(z ;])z1 = [nan*z(1:2,:); z(3:size(z,1),: )figure(2 'mesh(z1), title 'Z1 ;])z2 = [0*z(1:2,:); z(3:size(z,1),: )figure(3 'mesh(z2), title 'Z2 ][=)z(1:2,: )figure(4 mesh(z)>> nn
NAN
Zero
ﺷﻜﻞ 6-7
6-7ﺳﺎﻳﺮ دﺳﺘﻮر ﻫﺎي ﺗﺮﺳﻴﻢ ﺳﻪ ﺑﻌﺪي رﺳﻢ ﺳﻄﺢ )( surfﺷﺒﻴﻪ )( meshاﺳﺖ ،اﻣﺎ ﺳﻄﺢ را ﺑﻪ ﺻﻮرت ﺷﻄﺮﻧﺠﻲ رﺳﻢ ﻣﻲﻛﻨﺪ. اﮔﺮ ﺑﺮآﻣﺪﮔﻲ ﻣﺮﺗﻔﻌﻲ را از ﺑﺎﻻ ﺑﻪ ﻃﻮر ﻋﻤﻮدي ﻧﮕﺎه ﻛﻨﻴﻢ ،ارﺗﻔﺎع ﺳﻄﻮح ﻣﺨﺘﻠﻒ آن را ﻣﻲﺗﻮان ﺑﻪ ﺻﻮرت دواﻳﺮي ﻣﺘﺤﺪاﻟﻤﺮﻛﺰ ﻧﺸﺎن داد .اﻳﻦ دواﻳﺮ در اﺻﻄﻼح ﺟﻐﺮاﻓﻴﺎﺋﻲ ﻛﻨﺘﻮر ﻧﺎم دارﻧﺪ .دﺳﺘﻮر )( contourاﻳﻦ ﺗﺮﺳﻴﻢ را ﺑﻪدﺳﺖ ﻣﻲدﻫﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ( .دﺳﺘﻮرﻫﺎي )( meshc(), surfcﺣﺠﻢ را ﻫﻢراه ﺑﺎ ﻛﻨﺘﻮر در زﻳﺮ آن ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ.
81
ﻣﺜﺎل: راﺑﻄﻪ ﻣﺜﺎل ﻓﻮق را ﻫﻢراه ﺑﺎ ﻛﻨﺘﻮر در زﻳﺮ رﺳﻢ ﻛﻨﻴﺪ. ;a = -5:5 ;)[x y] = meshgrid(a ;)z = (-x.^2 - y.^2 )surfc(z
0
>> >> >> >>
-10 -20 -30 -40 -50 15 10 10
5
5 0
ﺷﻜﻞ 7-7
0
7-7ﺗﻤﺮﻳﻦ -1داﻳﺮهاي ﻣﺴﻄﺢ اﻳﺠﺎد ﻛﻨﻴﺪ z1 .را ﺗﺎﺑﻌﻲ از x1,y1ﻳﺎ ﻫﺮدو ﺑﮕﻴﺮﻳﺪ )ﻣﺜﻼً .( z1 = x1.^2ﮔﻮﻧﻪﮔﻮﻧﻲﻫﺎي ﻣﻨﺤﻨﻲ را ﺑﺎ ﺗﻐﻴﻴﺮ ﺟﺎي x1,y1,z1رﺳﻢ ﻛﻨﻴﺪ. راﻫﻨﻤﺎ(plot3(x1,y1,z1),plot3(x1,z1,y1),... : -2ﺑﺎ اﺳﺘﻔﺎده از ﻓﺮﻣﻮلﻫﺎي) x2 = exp(-0.03*alf).*cos(alfو ) y2 = exp(-0.03*alf).*sin(alfﻳﻚ ﻣﺎرﭘﻴﭻ ﻣﺨﺮوﻃﻲ ﻓﻀﺎﺋﻲ اﻳﺠﺎد ﻛﻨﻴﺪ .ﺳﭙﺲ زاوﻳﻪ دﻳﺪ را ﺑﺎ اﺳﺘﻔﺎده از اﻧﺘﺨﺎب Tools_Rotate 3Dاز ﻣﻨﻮي ﮔﺮاف ﺗﻐﻴﻴﺮ دﻫﻴﺪ .ﭘﺲ از ﻫﺮ ﺑﺎر ﺗﻐﻴﻴﺮ ﻣﻘﺪار زواﻳﺎ را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر [a b] = viewروي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ. -3ﻣﺎﺗﺮﻳﺲ Mرا ﺑﺴﺎزﻳﺪ و دﺳﺘﻮرﻫﺎي) mesh(Mو ) mesh(X,Y,Zرا اﺟﺮا ﻛﻨﻴﺪ. -4ﺑﺎ اﺳﺘﻔﺎده از v = -5:5ﻣﺎﺗﺮﻳﺲﻫﺎي Xpو Ypو ﺳﭙﺲ Zpرا )ﺑﻪ ﺻﻮرت ﺗﻮاﺑﻊ ﭼﻨﺪ ﺟﻤﻠﻪاي از Xpو (Ypﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ Zp.را ﻳﻚﺑﺎر ﻫﻤﺮاه ﺑﺎ اﻳﻦ دو ﻣﺎﺗﺮﻳﺲ و ﻳﻚﺑﺎر ﺑﻪ ﺗﻨﻬﺎﺋﻲ meshﻛﻨﻴﺪ. -5ﻣﺎﺗﺮﻳﺲ Zp = Xp.^2 + Yp.^3را ﺑﺎ ﻣﻘﺪار دﻫﻲ ﻣﻨﺎﺳﺐ ) mesh(Zpﻛﻨﻴﺪ .اﻧﺪﻳﺲ ردﻳﻒﻫﺎ ) (9و اﻧﺪﻳﺲ ﺳﺘﻮنﻫﺎي ) (13آن را روي ﻣﺤﻮرﻫﺎ ﻣﺸﺨﺺ ﻛﻨﻴﺪ. -6ﻣﻌﺎدل ﻣﻮازي دو ﻣﻘﺎوﻣﺖ ) [R1 R2]= meshgrid(10:10:100را ﺑﻪ ﺻﻮرت ﺳﻄﺢ رﺳﻢ ﻛﻨﻴﺪ. -7ﺑﺎ دﺳﺘﻮر sphereﻳﻚ ﻛُﺮه اﻳﺠﺎد ﻛﺮده ،آن را ﺑﻪ ﭼﺮﺧﺶ درآورده ،و ﻓﻴﻠﻤﻲ ازآن ﺗﻬﻴﻪ ﻧﻤﺎﺋﻴﺪ. -8ﻣﺎﺗﺮﻳﺲﻫﺎي ﻣﺨﺘﺼﺎت اﺳﺘﻮاﻧﻪاي را اﻳﺠﺎد ﻛﺮده و رﺳﻢ ﻛﻨﻴﺪ .ﺳﭙﺲ ﺑﺎ ﻓﺮﻣﻮلﻫﺎﺋﻲ ﻧﻈﻴﺮ ;)) [X,Y,Z] = cylinder(cos(tﺷﮕﺮدﻫﺎي ﺗﺼﻮﻳﺮي ﺑﺴﺎزﻳﺪ .از axis squareاﺳﺘﻔﺎده ﻛﻨﻴﺪ. -9ﺳﻄﺢ peaksرا رﺳﻢ ﻛﻨﻴﺪ .ﺳﭙﺲ axis off; hidden offرا اﺟﺮا ﻛﻨﻴﺪ.
82
ﻓﺼﻞ 8ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﺗﻜﺮار 1-8ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﻋﻮاﻣﻞ آن ﻋﻤﻠﮕﺮﻫﺎي ﻧﺴﺒﺘﻲ )راﺑﻄﻪ اي(
Relational Operators
==
ﻋﻼﻣﺖ
>
=~
ﺗﺴﺎوي ﺷﺮﻃﻲ ﻧﺎﻣﺴﺎوي ﺷﺮﻃﻲ ﺑﺰرگﺗﺮ
ﻋﻤﻞ
<
ﻛﻮﭼﻚﺗﺮ
=<
=>
ﺑﺰرگﺗﺮ ﻳﺎ ﻣﺴﺎوي ﻛﻮﭼﻚﺗﺮ ﻳﺎ ﻣﺴﺎوي
ﻋﻤﻞﮔﺮﻫﺎي ﻧﺴﺒﺘﻲ )راﺑﻄﻪ اي( ﺑﺮاﺳﺎس ﺟﺪول ﻓﻮق ﻣﻘﺎﻳﺴﻪ ﻣﺎﺑﻴﻦ دو آراﻳﻪ اﻧﺠﺎم ﻣﻲدﻫﻨﺪ .ﻧﺘﻴﺠﻪ ﻫﺮ ﻣﻘﺎﻳﺴﻪ 0ﻳﺎ 1ﻣﻨﻄﻘﻲ اﺳﺖ .اﻳﻦﮔﻮﻧﻪ ﻋﻤﻠﻴﺎت ﻣﻌﻤﻮﻻٌ در دﺳﺘﻮرﻫﺎي ﺷﺮﻃﻲ ﻧﻈﻴﺮ ifﻛﺎرﺑﺮد دارﻧﺪ.
ﻣﺜﺎل: 0
ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ ﻋﻼﻣﺖ ﻋﻤﻞ
&
0
1
ans = 1
;]>> A = [-2 0 2 4 ;]>> B = [-2 0 1 3 >> A == B
Logical Operators
|
~
OR AND
NOT
ﻋﻤﻞﮔﺮﻫﺎي ﻣﻨﻄﻘﻲ ﻣﺎﺑﻴﻦ ﺻﻔﺮ و ﻳﻚﻫﺎي ﻣﻨﻄﻘﻲ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ ،و ﻧﺘﻴﺠﻪ آنﻫﺎ 0ﻳﺎ 1ﻣﻨﻄﻘﻲ اﺳﺖ .ﺗﺮﻛﻴﺐ ﻋﻤﻠﻴﺎت ﻣﻘﺎﻳﺴﻪاي و ﻣﻨﻄﻘﻲ ﻣﻌﻤﻮﻻٌ در دﺳﺘﻮرﻫﺎي ﺷﺮﻃﻲ ﻧﻈﻴﺮ ifﻛﺎرﺑﺮد دارﻧﺪ.
ﻣﺜﺎل: 0 0 0
ﺑﻠﻮك
0 0 0
1 0 1
CL = 1 ans = 0 ans = 1
)>> CL = (A == B >> (A < B) & CL >> (A < B)|CL
if
ﻓﺮم ﻛﻠﻲ ﺑﻠﻮك ifدر زﻳﺮ آﻣﺪه اﺳﺖ .اﮔﺮ ﻧﺘﻴﺠﻪ ﺷﺮط conditionﻣﻨﻄﻖ ﻳﻚ )درﺳﺘﻲ( ﺑﻮد دﺳﺘﻮرات زﻳﺮ ifﻳﺎ دﺳﺘﻮرات زﻳﺮ elseifاﺟﺮا ﻣﻲﺷﻮﻧﺪ ،اﮔﺮ ﻧﺘﻴﺠﻪ ﺷﺮط ﻣﻨﻄﻖ ﺻﻔﺮ )ﻧﺎدرﺳﺘﻲ( ﺑﻮد دﺳﺘﻮرات زﻳﺮ ifﻳﺎ دﺳﺘﻮرات زﻳﺮ elseifاﺟﺮا ﻧﻤﻲﺷﻮﻧﺪ .در ﺻﻮرت درﺳﺘﻲ ﭼﻨﺪ ﺷﺮط دﺳﺘﻮرات زﻳﺮ اوﻟﻴﻦ ﺷﺮط درﺳﺖ اﺟﺮا ﺷﺪه و ﺑﺮﻧﺎﻣﻪ ﭘﺲ از ﺧﺮوج از ﺑﻠﻮك ifاز اوﻟﻴﻦ دﺳﺘﻮر ﺑﻌﺪ از endاداﻣﻪ ﻣﻲﻳﺎﺑﺪ .اﮔﺮ ﻧﺘﻴﺠﻪ ﻫﻤﻪ ﺷﺮطﻫﺎ ﻣﻨﻄﻖ ﺻﻔﺮ )ﻧﺎدرﺳﺘﻲ( ﺑﻮد دﺳﺘﻮرات زﻳﺮ elseاﺟﺮا ﻣﻲﺷﻮﻧﺪ .ﻳﻚ ﺑﻠﻮك ifﻣﻲﺗﻮاﻧﺪ elseifﻫﺎ و /ﻳﺎ elseرا ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ. if condition1 statements1 elseif condition2 statements2 . . else statementsN end
ﺑﻠﻮك
switch
ﻓﺮم ﻛﻠﻲ switchدر زﻳﺮ آﻣﺪه اﺳﺖ .در ﻣﻘﺎﺑﻞ switchﻧﺎم ﻳﻚ ﻣﺘﻐﻴﺮ ﺗﻚ ﻋﻨﺼﺮي ﺑﻪ ﻧﺎم ﻣﺘﻐﻴﺮ ﻣﺒﻨﺎ ﻣﻲآﻳﺪ .در ﻣﻘﺎﺑﻞ ﻫﺮ caseﻳﻚ ﻣﻘﺪار ﻳﺎ ﭼﻨﺪ ﻣﻘﺪار )داﺧﻞ آﻛﻼد( ﺑﻪ ﻣﺘﻐﻴﺮ ﻣﺒﻨﺎ ﻧﺴﺒﺖ داده ﻣﻲﺷﻮد ،و در ﺻﻮرت ﺻﺪق آن ﻣﻘﺪار )ﻳﺎ ﻳﻜﻲ از ﭼﻨﺪ ﻣﻘﺪار( دﺳﺘﻮرات زﻳﺮ ﻫﻤﺎن caseاﺟﺮا ﻣﻲﺷﻮﻧﺪ. 83
var = ... switch var case value of var statements1 case {values of var} statements2 otherwise statements3 end
:ﻣﺜﺎل . ﻓﺮد ﻳﺎ ﺻﻔﺮ ﺑﻮدن آن را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ، ﻓﺎﻳﻞ ﻋﺪدي ﺗﺼﺎدﻓﻲ ﺑﻴﻦ ﺻﻔﺮ و ﻧُﻪ ﺗﻮﻟﻴﺪ و زوج-در ﻳﻚ ام % sw.m d = floor(10*rand); disp(d); switch d case 0 disp('Zero'); case {1,3,5,7,9} disp('Odd'); otherwise disp('Even'); end >> sw >> sw >> sw
2 9 0
Even Odd Zero
ﺳﺎﺧﺘﺎرﻫﺎي ﺗﻜﺮار2-8 for
ﺣﻠﻘﻪ
و ﺣﻠﻘﻪ ﺑﺮاي ﻫﺮ ﮔﺎم، از ﻣﻘﺪار اوﻟﻴﻪ ﺗﺎ ﻣﻘﺪار ﻧﻬﺎﺋﻲ ﺧﻮد را ﺑﺎ ﮔﺎم ﻣﻌﻴﻦ ﻃﻲ ﻣﻲﻛﻨﺪindex در اﻳﻦ ﺣﻠﻘﻪ ﺷﻤﺎرﻧﺪهاي . ﻣﻲﺗﻮان ﺷﻤﺎرﻧﺪه را ﻣﺴﺎوي ﻳﻚ ﺑﺮدار ﻗﺮار داد.ﺗﻐﻴﻴﺮِ ﺷﻤﺎرﻧﺪه ﺗﻜﺮار ﻣﻲﺷﻮد
:ﻣﺜﺎل ﻫﺎ ﺟﺪول ﺗﻮان % fr.m d = 1:2:9; for k = d disp(k^2) end >> fr
1
9
25
49
81
ﻛﺴﻴﻨﻮس،ﺟﺪول ﺳﻴﻨﻮس % sn.m v = [0 : pi/6 : pi]; fprintf('\n'); disp(['Angle Sine Cosine']) for k = v fprintf('%6.2f %6.2f %6.2f\n',180*k/pi, sin(k), cos(k)); end
84
Cosine 1.00 0.87 0.50 0.00 -0.50 -0.87 -1.00
Sine 0.00 0.50 0.87 1.00 0.87 0.50 0.00
>> sn Angle 0.00 30.00 60.00 90.00 120.00 150.00 180.00
ﺗﻌﻴﻴﻴﻦ ﻓﺎﻛﺘﻮرﻳﻞ ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ ،اﻋﺪاد 1ﺗﺎ 5 120
24
6
2
1
% fac.m clear ﻣﺘﻐﻴﺮﻫﺎ را از ﺣﺎﻓﻈﻪ ﭘﺎك ﻣﻲﻛﻨﺪ %
= fc
;n = 5; fact = 1 ;ss = 1 for k = ss : n ;fact = k*fact ;fc(k) = fact end fc )'plot([ss:n],fc,'Or >> fac ﺷﻜﻞ 1-8
ﺑﻠﻮك try...catch
ﻣﺜﺎل: اﻋﻀﺎي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺳﻠﻮﻟﻲ را ﺟﺪاﮔﺎﻧﻪ ﭼﺎپ ﻛﻨﻴﺪ .وﻗﺘﻲ ﺑﻪ آﺧﺮ رﺳﻴﺪ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم وﭘﻴﻐﺎم Not Foundدﻳﺪه ﺷﻮد. %TryCth.m echo off ;n=1:10 ; }A={'Number' 234 'next' 9 for k=n try ))disp(A(k catch disp('Not Found'), break end end >> TryCth.m
ﺑﻪ دﺳﺖ آوردن ﻃﻮل زﻣﺎن ﻣﺤﺎﺳﺒﻪ ﺣﺎﺻﻞﺟﻤﻊ اﻋﺪاد ﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ﻳﻚ ﺑﻴﻠﻴﻮن ﺑﺎ ﮔﺎم ﺻﺪ nﻳﻚ ﺷﻤﺎرﻧﺪه اﺳﺖ ﺑﺎ ﻣﻘﺪار ﻧﻬﺎﺋﻲ ﻳﻚ ﺑﻴﻠﻴﻮن ﺑﺎ ﮔﺎم ﺻﺪ %
;t0 = clock ;s1 = 0 for n = 0 : 100 : 1e9
; s1 = s1 + n end ;))elaps1 = num2str(etime(clock,t0 )]'disp( ['For loop duration = ', elaps1, ' Secs )])disp(['sum1 = ' num2str(s1 ﺗﺎﺑﻊ )( etimeﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺑﻴﻦ آرﮔﻮﻣﺎنﻫﺎﻳﺶ را ﻣﻲدﻫﺪ ،ﺑﺮاي آوردن در dispﺑﻪ رﺷﺘﻪ ﺗﺒﺪﻳﻞ ﺷﺪه اﺳﺖ.
85
ﺑﺮدار ﺑﻪ ﺟﺎي ﺣﻠﻘﻪ for ﻣﺜﺎل ﻓﻮق را ﺑﺪون اﺳﺘﻔﺎده از forﺣﻞ ﻛﻨﻴﺪ .ﻃﻮل زﻣﺎن اﻳﻦ دو روش را ﺑﺮاي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺧﻮدﺗﺎن ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ. ;t0 = clock ;m = 0 : 100 : 1e9 ;)s2 = sum(m ;))elaps2 = num2str(etime(clock,t0 )]'disp( ['Vectorization duration = ', elaps2 ', Secs )])disp(['sum2 = ' num2str(s2 در ﺑﻌﻀﻲ ﻣﻮارد اﺳﺘﻔﺎده از ﺣﻠﻘﻪ forاﻟﺰاﻣﻲ اﺳﺖ و ﻧﻤﻲﺗﻮان ﺑﻪ ﺟﺎي ﺣﻠﻘﻪ forاز ﺑﺮدار اﺳﺘﻔﺎده ﻛﺮد.
ﺣﻠﻘﻪ whileو دﺳﺘﻮر
break
ﺣﻠﻘﻪ whileﻣﺎﻧﻨﺪ forدﺳﺘﻮرات داﺧﻞ ﺣﻠﻘﻪ را ﺗﻜﺮار ﻣﻲﻛﻨﺪ ،اﻣﺎ ﺷﻤﺎرﻧﺪه ﻧﺪارد .دﺳﺘﻮرات داﺧﻞ ﺣﻠﻘﻪ while
ﺗﺎزﻣﺎﻧﻲﻛﻪ ﺷﺮط ﻣﻘﺎﺑﻞ ﻛﻠﻤﻪ whileﺑﺮﻗﺮار ﺑﺎﺷﺪ اﺟﺮا ﺧﻮاﻫﻨﺪ ﺷﺪ.
ﻣﺜﺎل: ﺗﻌﻴﻴﻦ اﻋﺪاد اول ﻳﻚ M-Fileﺑﻪﻧﺎم primen.mﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﻋﺪاد اول ﻛﻮﭼﻚﺗﺮ از (n >= 5) nرا ﺑﻪ دﺳﺖ آورد. اﻳﻦ ﻣﺜﺎل ﻛﺎرﺑﺮدﻫﺎي ﻋﺒﺎرات و ﺗﻮاﺑﻊ زﻳﺮ را ﻧﻴﺰ ﺗﻮﺿﻴﺢ ﻣﻲدﻫﺪ .ﺑﻪ ﺗﻮﺿﻴﺤﺎت ﺗﻮﺟﻪ ﺷﻮد: )(input(), fprintf(), while, for, if, break, end, rem
% primen.m ;)' n = input('Enter upper limit: ﺑﺮﻧﺎﻣﻪ 2 ،و 3را ﻣﺤﺎﺳﺒﻪ ﻧﻤﻲﻛﻨﺪ ﻟﺬا آنﻫﺎ را ﺟﺪا ﭼﺎپ ﻣﻲﻛﻨﻴﻢ fprintf('%d %d',2,3); % ;ii = 5 از 5ﺷﺮوع ﻣﻲﻛﻨﻴﻢ و ﺗﻘﺴﻴﻢ ﭘﺬﻳﺮي iiﺑﺮ ﻛﻠﻴﻪ اﻋﺪاد ﻣﺎﻗﺒﻠﺶ را اﻣﺘﺤﺎن ﻣﻲﻛﻨﻴﻢ ﺗﺎ ﻧﻬﺎﻳﺘﺎٌ iiﺑﻪ nﺑﺮﺳﺪ % while ii < n for jj = 2 : ii-1 if rem(ii,jj)== 0 % break اﮔﺮ ﺗﻘﺴﻴﻢ ﭘﺬﻳﺮ ﺑﻮد ﻋﺪد ،اول ﻧﻴﺴﺖ و ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻋﺒﺎرت ii=ii+1ﻣﻲرود % end ))if jj == fix(sqrt(ii اﮔﺮ jjﺗﺎ رﻳﺸﻪ دوم iiﺑﺎﻻ ﺑﻴﺎﻳﺪ و ﻣﻘﺴﻮمﻋﻠﻴﻪ آن ﻧﺒﺎﺷﺪ ،ﻋﺪد ،اول اﺳﺖ و ﭼﺎپ ﻣﻲﺷﻮد % ;)fprintf(' %d',ii break end end ii = ii + 2; % excludes odd numbers end >> primen enter upper limit: 50 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
3-8ﻣﻨﻴﻮ ﻣﻨﻴﻮ ﻳﻚ GUIﺳﺎده اﺳﺖ ﻛﻪ اﻣﻜﺎن اﻧﺘﺨﺎب ﭼﻨﺪ ﮔﺰﻳﻨﻪ را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ.
86
ﻣﺜﺎل: % mnu.m ;k = 0 ;while k < 4 ;)'k = menu('Help Menu','Operators','Mod','Rem','Exit if k == 1 \ help elseif k == 2 help mod elseif k == 3 help rem else ;)'a = input('Really Exit? (Y/N) ','s )'if (a == 'n') || (a =='N ;k = 3 ;continue اﺟﺮا را ﺑﻪ اﺑﺘﺪاي ﺣﻠﻘﻪ whileﻣﻨﺘﻘﻞ و ﺷﺮط را ﻣﺠﺪد ﺗﺴﺖ ﻣﻲﻛﻨﺪ % end end end >> mnu
4-8ﺗﻤﺮﻳﻦ -1ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد را ﺑﺎ )( inputدرﻳﺎﻓﺖ ،و ﺗﻌﻴﻴﻦ ﻛﻨﺪ ﻛﻪ اول اﺳﺖ ﻳﺎ ﻧﻪ. -2ﻓﺎﻛﺘﻮرﻳﻞ 5را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( prodﻛﻪ ﺣﺎﺻﻞﺿﺮب ﭘﺸﺖﻫﻢ ﻋﻨﺎﺻﺮ ﻳﻚ ﻣﺎﺗﺮﻳﺲ را ﺣﺴﺎب ﻣﻲﻛﻨﺪ ﺑﻪ- دﺳﺖ آورﻳﺪ. -3ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ 10ﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﻴﻦ ﺻﻔﺮ و 9ﺗﻮﻟﻴﺪ و زوج ،ﻓﺮد ﻳﺎ ﺻﻔﺮ ﺑﻮدن ﻫﺮ ﻳﻚ را ﭘﺲ از ﺗﻮﻟﻴﺪ ﺗﻌﻴﻴﻦ ﻛﻨﺪ. راﻫﻨﻤﺎ :ﻓﺮﻣﻮل ) d = floor(10*randو switch dرا داﺧﻞ ﻳﻚ ﺣﻠﻘﻪ forﻗﺮار دﻫﻴﺪ. -4ﻳﻚ ﻣﻨﻴﻮ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﻧﺘﺨﺎب ﻫﺮ دﻛﻤﻪ ﻳﻚ ﺗﺎﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ را رﺳﻢ ﻛﻨﺪ.
87
ﻓﺼﻞ 9ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺗﻮاﺑﻊ و ﺗﺎﺑﻊ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ 1-9ﺗﺎﺑﻊ ﺧﻂ ﻓﺮﻣﺎن
inline function
ﻣﺜﺎل: ﺗﺎﺑﻊ -x^2 + 1را ﺑﻪ ﺻﻮرت inlineﺗﻌﺮﻳﻒ و ﺑﺪون ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻣﺘﻐﻴﺮ آن را رﺳﻢ ﻛﻨﻴﺪ. اﻳﻦ ﺗﺎﺑﻊ ﺑﺎﻳﺴﺘﻲ ﺑﻪ ﺻﻮرت آرﮔﻮﻣﺎن ﺗﺎﺑﻌﻲ ﺑﻪ )( ezplotارﺳﺎل ﺷﻮد .ﭼﻮن ﺑﺪون ﻣﻘﺪار دﻫﻲ رﺳﻢ ﻣﻲﺷﻮد ،ﻟﺬا داﻣﻨﻪ ﭘﻴﺶﻓﺮضِ
-2π,+2πﺑﺮاي xدر ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد .ﻋﻨﻮان ﮔﺮاف و ﺑﺮﭼﺴﺐِ ﻣﺤﻮر ،اﺗﻮﻣﺎﺗﻴﻚ ﮔﺬاﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ. در )( fplotﺑﺎﻳﺪ داﻣﻨﻪ xرا ﺗﻌﻴﻴﻦ ﻛﺮد و ﻋﻨﻮان و ﺑﺮﭼﺴﺐ ﮔﺬاﺷﺘﻪ ﻧﻤﻲﺷﻮﻧﺪ. )'>> fin = inline('-x^2 + 1 fin = inline function: fin(x) = -x^2 + 1 )>> ezplot(fin
)]>> fplot(fin,[-2 2
ﺷﻜﻞ 1-9
2-9ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ
function M-file
ﺗﺎﺑﻌﻲ ﻛﻪ ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ ﻧﻮﺷﺘﻪ ﺷﺪه و در داﺧﻞ ﻳﻚ ﻓﺎﻳﻞ ﺿﺒﻂ ﺷﻮد ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ function M-fileﻧﺎم دارد ،و ﺻﻮرت ﻛﻠﻲ آن اﻳﻦﮔﻮﻧﻪ اﺳﺖ: )function [out_arg1,out_arg2,...] = func_name(in_arg1,in_arg2,... % Help Statemants statemants out_arg1 = ... out_arg2 = ... ... -1ﻧﺎمﮔﺬاري out_argﻫﺎ دلﺧﻮاه اﺳﺖ ،در ﺳﻄﺮ آﺧﺮ ﻣﺴﺎوي ﻣﻘﺎدﻳﺮي ﻛﻪ ﻧﺘﻴﺠﻪ ﻋﻤﻠﻴﺎت ﺳﻄﻮر ﻗﺒﻞ اﺳﺖ ﻗﺮار ﻣﻲﮔﻴﺮﻧﺪ ،و ﻣﻘﺪار ﺗﺎﺑﻊ را ﺑﻪ ﺻﻮرت ﻳﻚ ﺑﺮدار ﺑﺮﻣﻲﮔﺮداﻧﻨﺪ .اﮔﺮ ﺗﺎﺑﻊ ﺗﻚ ﻣﻘﺪاري ﺑﺎﺷﺪ ،ﻓﻘﻂ ﻳﻚ out_arg
دارد. func_name -2ﻧﺎم ﺗﺎﺑﻊ و دلﺧﻮاه اﺳﺖ .ﻧﺎم ﻓﺎﻳﻞ ﻧﮕﻪدارﻧﺪهي ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﺑﺎ ﺗﺎﺑﻊ ﻫﻢﻧﺎم ﺑﺎﺷﺪ ،ﻳﻌﻨﻲ اﻳﻦ ﺗﺎﺑﻊ ﺑﺎﻳﺪ در ﻓﺎﻳﻠﻲ ﺑﻪﻧﺎم func_name.mﺿﺒﻂ و ﺑﺎ ﻫﻤﺎن ﻧﺎم از ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻳﺎ از داﺧﻞ ام -ﻓﺎﻳﻞ دﻳﮕﺮي ﻓﺮاﺧﻮاﻧﻲ )اﺟﺮا( ﺷﻮد)ﻓﺮاﺧﻮاﻧﻲ ﺗﺎﺑﻊ .(function calling - in_arg -3ﻫﺎ ﭘﺎراﻣﺘﺮﻫﺎي وردودي ﺗﺎﺑﻊ ﻫﺴﺘﻨﺪ .ﺗﻮاﺑﻊ ﻣﻲﺗﻮاﻧﻨﺪ وروديﻫﺎي ﺑﺮداري از ﻧﻮع رﺷﺘﻪ ﻳﺎ ﻋﺪد داﺷﺘﻪ ﺑﺎﺷﻨﺪ. 88
-4اﺟﺮاي helpﺳﻄﻮر ﺑﻌﺪاز ﻋﻼﻣﺖ ﺗﻮﺿﻴﺢ %را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ. statements -5ﻋﻤﻠﻴﺎﺗﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮ روي in_argﻫﺎ و ﻣﺘﻐﻴﺮﻫﺎي داﺧﻠﻲ ﺗﺎﺑﻊ اﻧﺠﺎم و ﻣﻨﺠﺮ ﺑﻪ ﻣﻘﺪار )ﻣﻘﺎدﻳﺮ( ﺑﺮﮔﺸﺘﻲ ﻣﻲﺷﻮﻧﺪ.
ﻣﺜﺎل ﻫﺎ: ﻣﻘﺪار ﻣﻌﺎدﻟﻪ درﺟﻪ دو n2x + n1x + n0و ﻧﻮﺷﺘﻦ راﻫﻨﻤﺎ ﺑﺮاي ﺗﺎﺑﻊ. 2
ﺗﺎﺑﻌﻲ ﺑﻪ ﻧﺎم y1را در ﻳﻚ ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﻧﻮﺷﺘﻪ و آن را ﺑﺎ ﻧﺎمِ y1.mدر دﻳﺮﻛﺘﻮري ﺟﺎري ﺿﺒﻂ ﻣﻲﻛﻨﻴﻢ .ﻣﺘﻐﻴﺮﻫﺎي x,n2,n1,n0آرﮔﻮﻣﺎنﻫﺎي ورودي ﺗﺎﺑﻊ و p1آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ آن ﻫﺴﺘﻨﺪ.
)function p1 = y1(x,n2,n1,n0 % Calculates the value of a second order sentence. ;p1 = n2*x^2 + n1*x + n0 >> help y1 Calculates the value of a second order sentence. ans = -3.0000
)>> y1(-2,3,4.6,-5.8
ﻣﺤﺎﺳﺒﻪ ﻓﺎﻛﺘﻮرﻳﻞ از ﻃﺮﻳﻖ ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ )ﺑﺎزﮔﺸﺘﻲ( ﻳﻚ ﺗﺎﺑﻊ Function Recursivity ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ اﺟﺮاي ﻳﻚ ﺗﺎﺑﻊ از داﺧﻞ ﺧﻮد آن ﺗﺎﺑﻊ اﺳﺖ ،و ﻣﺎﻧﻨﺪ ﻳﻚ ﺣﻠﻘﻪ ﺗﺎ زﻣﺎﻧﻲﻛﻪ ﺧﺮوﺟﻲ ﺑﻪ ﻳﻚ ﻣﻘﺪار ﻣﻌﻴﻦ ﺑﺮﺳﺪ اداﻣﻪ ﻣﻲﻳﺎﺑﺪ. ﺑﺮﻧﺎﻣﻪ ﻣﺤﺎﺳﺒﻪ ﻓﺎﻛﺘﻮرﻳﻞ را از ﻃﺮﻳﻖ ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ در ﻣﺤﻴﻂ ﻣﺘﻠﺐ اﺟﺮا ﻣﻲﻛﻨﻴﻢ. )function ff = facto(n if n > 1 ;)ff = n * facto(n - 1 else ;ff = 1 end ans = 720 )>> facto(6
ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ ﭼﻨﺪ آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ ﻳﻜﻲ از وﻳﮋﮔﻲﻫﺎي ﻣﺘﻠﺐ اﻳﻦ اﺳﺖ ﻛﻪ در آن ﻣﻲﺗﻮان ﺗﻮاﺑﻌﻲ ﺑﺎ ﭼﻨﺪﻳﻦ ﺧﺮوﺟﻲ ﻛﻪ ﻫﺮ ﺧﺮوﺟﻲ ﻫﻢ ﻣﻲﺗﻮاﻧﺪ ﺑﺮدار ﺑﺎﺷﺪ ﺗﻌﺮﻳﻒ ﻛﺮد .ﻣﺎﺑﻴﻦ ﻧﺎم آرﮔﻮﻣﺎنﻫﺎي ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﻛﺎﻣﺎ ﻗﺮار ﮔﻴﺮد ﻣﺜﻞfunction [p1, p2] :
ﻣﺜﺎل ﻫﺎ: ﺗﺎﺑﻊ درﺟﻪ دو در ﻳﻚ ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ )function [p1, p2] = y2(x,a,b,c ;p1 = a*x^2 + b*x + c ;p2 = 2*a*x + b )>> [a b] = y2(-2,3,4.6,-5.8 a = -3.0000 b = -7.4000اﮔﺮ xﺑﺮدار ﺑﺎﺷﺪ p1,p2ﻫﻢ ﺑﺮدار ﺧﻮاﻫﻨﺪ ﺑﻮد %
ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ راه ﺑﺮد ﻧﻴﻮﺗﻦ راهﺑﺮد ﻧﻴﻮﺗﻦ ﻳﻜﻲ از روشﻫﺎي ﺳﺎده ﻣﺤﺎﺳﺒﺎت ﻋﺪدي ﺑﺮاي ﺣﻞ ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪاي f(x) = 0اﺳﺖ .ﺑﺎ روش ﺗﻜﺮار ﺑﺮاي ﻧﺰدﻳﻚ ﺷﺪن ﺑﻪ رﻳﺸﻪ از راهﺑﺮد ﻧﻴﻮﺗﻦ ﺑﻪ اﻳﻦ ﺷﻜﻞ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻛﺮد. x Æ x - f(x)/f'(x) : ﻳﻌﻨﻲ در ﻫﺮ ﺑﺎر ﺗﻜﺮار ﺑﻪ ﺟﺎي xﻋﺒﺎرت ) x - f(x)/f'(xﺟﺎيﮔﺰﻳﻦ ﻣﻲﺷﻮد .ﻣﻘﺪار دﻫﻲ ﺑﻪ xدر اوﻟﻴﻦ دور ﺣﻠﻘﻪ اﺧﺘﻴﺎري اﺳﺖ و ﺣﺪس اوﻟﻴﻪ ﻧﺎم دارد .راهﺑﺮد ﻧﻴﻮﺗﻦ ﺑﺮاي ﺣﺪسﻫﺎي اوﻟﻴﻪ ﻣﺨﺘﻠﻒ رﻳﺸﻪﻫﺎي ﻣﺨﺘﻠﻒ ﻣﻲدﻫﺪ.
89
ﺑﺮاي ﺣﺼﻮل رﻳﺸﻪﻫﺎي ﻣﻌﺎدﻟﻪ درﺟﻪ دو f(x) = 3x2 + 4.6x -5.8ﺑﺎ راهﺑﺮد ﻧﻴﻮﺗﻦ ﺑﺮاي رﻳﺸﻪﻫﺎي ﺣﻘﻴﻘﻲ ﺑﺎ دو ﺣﺪس اوﻟﻴﻪ ﺣﻘﻴﻘﻲ ،و ﺑﺮاي رﻳﺸﻪﻫﺎي ﻣﻮﻫﻮﻣﻲ ﺑﺎ دو ﺣﺪس اوﻟﻴﻪ ﻣﻮﻫﻮﻣﻲ ﺷﺮوع ﻣﻲﻛﻨﻴﻢ .از ﺗﺎﺑﻊ y2در اﻳﻦ ﺑﺮﻧﺎﻣﻪ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ. )function [p1, p2] = y2(x,a,b,c ;p1 = a*x^2 + b*x + c ;p2 = 2*a*x + b % M-File script secndegree.m % solves equation f(x) = a*x^2 + b*x -c x = input('Enter initial guess: '); % initial guess ;)' n = input('Enter 3 coefficients: ;ero = 1 iero = 1e-8; % permissible error while ero > iero ;x1 = x ;))[y yp] = y2(x, n(1), n(2), n(3 ;x = x - y/yp ;)ero = abs((x-x1)/x end format )])disp(['root = ' num2str(x >> secndegree Enter initial guess: -1 ]Enter 3 coefficients: [3 4.6 -5.8 root = -2.3545 ]4.6 -5.8
Enter initial guess: 1 Enter 3 coefficients: [3 root = 0.82113
>> secndegree
]4.6 5.8
Enter initial guess: i Enter 3 coefficients: [3 root = -0.76667+1.16i
>> secndegree
]4.6 5.8
Enter initial guess: -i Enter 3 coefficients: [3 root = -0.76667-1.16i
ﺗﺎﺑﻊ ﺑﺪون ﻣﻘﺪار ،ﻣﺘﻐﻴﺮ
>> secndegree
Persistent
ﻳﻚ ام-ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ )ﻛﻪ ﺑﻪ اﺧﺘﺼﺎر ﺗﺎﺑﻊ ﺧﻮاﻧﺪه ﻣﻲﺷﻮد( ﻣﻲﺗﻮاﻧﺪ ﺑﺪون ﻣﻘﺪار ﺑﺮﮔﺸﺘﻲ )آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ( ﺑﺎﺷﺪ .اﻳﻦﮔﻮﻧﻪ ﺗﻮاﺑﻊ ﻣﻌﻤﻮﻻٌ ﺑﺮاي ﻧﻤﺎﻳﺶ ﻧﺘﺎﻳﺞ ﺑﻪ ﻛﺎر ﻣﻲروﻧﺪ. ﻣﻌﺮﻓﻲ ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺎ ﭘﻴﺶوﻧﺪ persistentﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﻴﺮ در ﻣﺮاﺟﻌﺎت ﺑﻌﺪي ﺑﻪ ﺗﺎﺑﻊ ﺣﻔﻆ ﺷﻮد. آوردن ﻧﺎم ﺗﺎﺑﻊ ﺑﻌﺪ از clearﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﻴﺮﻫﺎي ﻋﺪدي persistentآن ﺻﻔﺮ ﺷﻮد.
ﻣﺜﺎل: ﻧﺎم ﻳﻚ داﻧﺸﺠﻮ را ﺑﻪ ﻋﻨﻮان ورودي درﻳﺎﻓﺖ و ﻫﻢراه ﺑﺎ ﺷﻤﺎره ردﻳﻒ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ. اﺑﺘﺪا ﻳﻚ ﺗﺎﺑﻊ ﺑﺎ ورودي ﻧﺎم داﻧﺸﺠﻮ ﻣﻲﻧﻮﻳﺴﻴﻢ .اﻳﻦ ﺗﺎﺑﻊ ﻧﺎم داﻧﺸﺠﻮ را از ﺻﻔﺤﻪ ﻛﻠﻴﺪ درﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ و ﻫﺮ ﺑﺎر ﻛﻪ اﺟﺮا ﺷﻮد ﻧﺎم درﻳﺎﻓﺘﻲ را ﺑﺎ ﺷﻤﺎره ردﻳﻒ در ﻛﻨﺎر ﻧﺎم داﻧﺸﺠﻮ )ﻣﺘﻐﻴﺮ رﺷﺘﻪاي ( wrﭼﺎپ ﻣﻲﻛﻨﺪ .رﺷﺘﻪي wrﻛﻪ ﺑﻪ ﺗﺎﺑﻊ ) sst(nsارﺳﺎل ﻣﻲﺷﻮد ﻳﻚ ﺑﺮدار اﺳﺖ ﻛﻪ ﻫﺮ ﻋﻨﺼﺮ آن ﻳﻚ ﺣﺮف اﻟﻔﺒﺎ اﺳﺖ. ﻋﺒﺎرت persistent nnﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار nﻛﻪ ﺷﻤﺎر ردﻳﻒ را ﻧﺸﺎن ﻣﻲدﻫﺪ ﺑﺮاي اﺟﺮاي ﺑﻌﺪي ﺗﺎﺑﻊ ﺣﻔﻆ ﺷﻮد. 90
% Function M-File stt.m )function stt(ns persistent nn )if isempty(nn دراﺟﺮاي اول ﺷﻤﺎره ردﻳﻒ را ﻳﻚ ﻣﻲدﻫﻴﻢ nn = 1; % else در ﻫﺮ ﺑﺎر ﺗﻜﺮارِ اﺟﺮا ﺷﻤﺎره ردﻳﻒ ﻳﻚ واﺣﺪ اﻓﺰاﻳﺶ ﻣﻲﻳﺎﺑﺪ nn = nn + 1; % end ;)mm = num2str(nn )]disp(['Student number ' mm ' is ' ns
ﺣﺎل ﺑﺮﻧﺎﻣﻪاي ﺑﻪ ﻧﺎم stdno.mﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ ﺗﺎﺑﻊ ﻓﻮق را در درون ﻳﻚ ﺣﻠﻘﻪ ﭼﻨﺪ ﺑﺎر اﺟﺮا ﻣﻲﻛﻨﺪ. % Script M-File stdno.m clear stt
اﻳﻦ دﺳﺘﻮر در اﺟﺮاي اولِ ﺗﺎﺑﻊ )( sttﻣﻘﺪار ﺷﻤﺎرﻧﺪه را ﺻﻔﺮﻣﻲﻛﻨﺪ.
% ;'wr = 'h
ﻳﻚ ﻣﻘﺪار اوﻟﻴﻪ دلﺧﻮاه ﺑﺮاي ﻧﺎم داﻧﺸﺠﻮ در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ ﻛﻪ ﺣﻠﻘﻪ ﺑﺮاي ﺑﺎر اول اﺟﺮا ﺷﻮد% . while isempty(wr) == 0 ﺣﻠﻘﻪ ﺗﺎ زﻣﺎﻧﻲﻛﻪ ﻧﺎﻣﻲ را وارد ﻛﻨﻴﻢ ) wrﺧﺎﻟﻲ ﻧﺒﺎﺷﺪ( ،اداﻣﻪ ﻣﻲﻳﺎﺑﺪ .ﺑﺎ زدن > <Enterﺣﻠﻘﻪ ﺗﻤﺎم ﻣﻲﺷﻮد% . ;)'wr = input('Enter the student name: ','s ﻗﺮار دادن ' 'sﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن دوم )( inputﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﺑﺘﻮاﻧﻴﻢ ﻳﻚ رﺷﺘﻪ را ﺑﻪ wrﻧﺴﺒﺖ دﻫﻴﻢ % )if isempty(wr
اﮔﺮ ﺑﺪون وارد ﻛﺮدن ﻧﺎم ) wrﺧﺎﻟﻲ( ،ﻛﻠﻴﺪ > <Enterرا ﺑﺰﻧﻴﻢ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم ﻣﻲﺷﻮد
% break end stt(wr)% end
>> stdno Enter the student name: Ali Student number 1 is Ali Enter the student name: Maryam Student number 2 is Maryam Enter the student name: Masud Student number 3 is Masud Enter the student name:
زﻳﺮ ﺗﺎﺑﻊ
subfunction
ﻣﻲﺷﻮد در داﺧﻞ ﻳﻚ ﺗﺎﺑﻊ ﺗﻮاﺑﻊ ﻓﺮﻋﻲ دﻳﮕﺮي را ﺑﻪ ﻧﺎم زﻳﺮﺗﺎﺑﻊ ﺗﻌﺮﻳﻒ ﻛﺮد ،زﻳﺮﺗﺎﺑﻊﻫﺎ ﻓﻘﻂ ﺗﻮﺳﻂ ﺗﺎﺑﻊ اﺻﻠﻲ دﻳﺪه و ﻓﺮاﺧﻮاﻧﺪه ﻣﻲﺷﻮﻧﺪ ،و در ﺧﺎرج از ﺗﺎﺑﻊ اﺻﻠﻲ ﻗﺎﺑﻞ ﻓﺮاﺧﻮاﻧﻲ ﻧﻴﺴﺘﻨﺪ .ﻧﺎم ﻓﺎﻳﻞِ ﻧﮕﻪدارﻧﺪهي ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎﻳﺪ ﻧﺎم ﺗﺎﺑﻊ اﺻﻠﻲ ﺑﺎﺷﺪ.
ﻣﺜﺎل: ﺑﺮاي ﺣﻞ ﻣﻌﺎدﻟﻪ درﺟﻪ ﺳﻪ b^3 - 2*b^2 + 3*b - 4ﻳﻚ ام-ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﻪ ﻧﺎم )( newssﺑﻨﻮﻳﺴﻴﺪ ،ﻛﻪ در آن ﺗﺎﺑﻊ و ﻣﺸﺘﻖ آن ﺑﻪ ﺻﻮرت دو زﻳﺮ ﺗﺎﺑﻊ ﺑﺎ ﻧﺎمﻫﺎي )( nyو )( nypﺗﻌﺮﻳﻒ ﺷﻮﻧﺪ.
91
% newss.m )function p1 = newss(a p1 = ny(a)/nyp(a); % )function p2 = ny(b ; p2 = b^3 - 2*b^2 + 3*b - 4 )function p3 = nyp(d ;p3 = 3*d^2 - 2*2*d + 3
ﺳﭙﺲ از درون ﻳﻚ ام -ﻓﺎﻳﻞ ﺑﺎ ﻧﺎم ،eus.mﺗﺎﺑﻊ)( newssرا ﻓﺮاﻣﻲﺧﻮاﻧﻴﻢ: % eus.m ;)' x = input('Enter initial guess: ;ero = 1 while ero > 1e-6 ; x1 = x ;)x = x- newss(x ;)ero=abs((x-x1)/x end )])disp(['root = ' num2str(x Enter initial guess: 1 >> eus root = 1.6506 Enter initial guess: i root = 0.17469+1.5469i
>> eus
Enter initial guess: -i root = 0.17469-1.5469i
>> eus
3-9ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﮔﻴﺮه ﺗﺎﺑﻊ
feval() ، function handle
اﮔﺮ در ﻣﻘﺎﺑﻞ ﻧﺎم ﺗﺎﺑﻊ ﻋﻼﻣﺖ @ ﺑﻴﺎﻳﺪ ﮔﻴﺮه آن ﺗﺎﺑﻊ را اﻳﺠﺎد ﻛﺮدهاﻳﻢ )ﭼﻴﺰي ﺷﺒﻴﻪ اﺷﺎرهﮔﺮ pointerدر .(C++ﺑﺮاي ﻣﺮاﺟﻌﻪ ﺑﻪ ﺗﺎﺑﻊ از ﻃﺮﻳﻖ ﮔﻴﺮه ﺑﺎﻳﺪ از)( fevalاﺳﺘﻔﺎده ﻛﻨﻴﻢ ﻣﻔﻬﻮم ﮔﻴﺮه اﻣﻜﺎن اﺳﺘﻔﺎده از ﺗﺎﺑﻌﻲ ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﺗﺎﺑﻊ دﻳﮕﺮ را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ و از ﺗﻮاﻧﺎﺋﻲﻫﺎي ﻣﻬﻢ ﻣﺘﻠﺐ ﻣﺤﺴﻮب ﻣﻲﺷﻮد.
ﻣﺜﺎل ﻫﺎ: ﻧﺴﺒﺖ دادن ﮔﻴﺮه ﺗﺎﺑﻊ ﺑﻪ ﻣﺘﻐﻴﺮ دﻳﮕﺮ ans = 0.5000
;>> hs = @sin )>> feval(hs,pi/6
ﻛﺎرﺑﺮد ﻣﺴﺘﻘﻴﻢ ﮔﻴﺮه ﺗﺎﺑﻊ ans = 0.5000
)>> feval(@sin,pi/6
ﺗﺎﺑﻊِ ﺗﺎﺑﻊِ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ ﺗﻮاﺑﻌﻲ ﻛﻪ ﺗﺎﺑﻊ دﻳﮕﺮي را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﻣﻲﭘﺬﻳﺮﻧﺪ ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﻧﺎم دارﻧﺪ و آرﮔﻮﻣﺎن آنﻫﺎ ﻣﻲ ﺗﻮاﻧﺪ ﻳﻚ ﮔﻴﺮه ﺗﺎﺑﻊ ﺑﺎﺷﺪ .ﺑﻪ ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ ﻣﺜﺎل ﺗﻮﺟﻪ ﻛﻨﻴﺪ.
ﻣﺜﺎل: ﻳﻚ ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ اﻳﺠﺎد ﻣﻲﻛﻨﻴﻢ ﻛﻪ آرﮔﻮﻣﺎن ورودﻳﺶ ﺗﺎﺑﻊ دﻳﮕﺮي ﺑﺎﺷﺪ. ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﻧﺎم yd.mﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ ﺟﻮاب ﻣﻌﺎدﻟﻪﻫﺎي درﺟﻪ دو و ﺳﻪ را ﺑﺮاي ﻣﻘﺪار ﻣﻌﻴﻨﻲ از xﺑﺮﮔﺮداﻧﺪ. )function [p2,p3] = yd(x ; p2 = x.^2 + x ;p3 = x.^3 + x.^2 + x
92
ﺣﺎﻻ ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ydh.mرا اﻳﺠﺎد ﻣﻲﻛﻨﻴﻢ ﻛﻪ آرﮔﻮﻣﺎﻧﺶ ﺗﺎﺑﻊ ﻓﻮق اﺳﺖ: )function [out1, out2] = ydh(hy,x ;)[out1 out2] = feval(hy,x hyﺑﺎﻳﺪ ﮔﻴﺮه ﺗﺎﺑﻊ ﺑﺎﺷﺪ% . a = 2 b = 3 6 14
)>> [a b] = ydh(@yd,1
a = 2 ;]>> x = [1 2 )>> [a b] = ydh(@yd,x b = 3 ﭼﻮن xﺑﺮدار اﺳﺖ a ،و bﺑﺮدار ﻫﺴﺘﻨﺪ.
ﺗﺎﺑﻊ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي ﻛﻪ ﺗﺎﺑﻊ دﻳﮕﺮي را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﻣﻲﭘﺬﻳﺮﻧﺪ ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﻧﺎم دارﻧﺪ و آرﮔﻮﻣﺎن آنﻫﺎ ﻣﻲ ﺗﻮاﻧﺪ ﻳﻚ ﺗﺎﺑﻊ inlineرﺷﺘﻪ ،ﻳﺎ ﮔﻴﺮه ﺑﺎﺷﺪ .ﺑﺮﺧﻲ از اﻳﻦﮔﻮﻧﻪ ﺗﻮاﺑﻊ ﻋﺒﺎرﺗﻨﺪ از.fplot(), ezplot, feval :
ﻣﺜﺎل ﻫﺎ: رﺳﻢ sin3xﺑﻪ ﺻﻮرت ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ;)'>> isn = inline('(sin(x))^3 )]>> fplot(isn,[-pi pi )>> ezplot(isn
رﺳﻢ ﺗﺎﺑﻊ )) humps(xاز ﺗﻮاﺑﻊ ﻧﻤﻮﻧﻪ داﺧﻠﻲ ﻣﺘﻠﺐ( ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد اﻳﻦ ﺗﺎﺑﻊ از ﭘﻨﺠﺮه ﻓﺮﻣﺎن help humpsرا اﺟﺮا ﻛﻨﻴﺪ.
ﻣﺜﺎل ﻫﺎ: ﻓﺮاﺧﻮاﻧﻲ ﻣﺴﺘﻘﻴﻢ ﮔﻴﺮه )]>> fplot(@humps,[0 1
ﻧﺴﺒﺖ دادن ﺑﻪ ﻳﻚ ﻣﻐﻴﺮ رﺷﺘﻪاي ;')>> hu = 'humps(x )]>> fplot(hu,[0 1
4-9ﺗﺒﺪﻳﻞ ﻓﺎﻳﻞ ﻫﺎي ﻣﺘﻠﺐ ﺗﺒﺪﻳﻞ ام -ﻓﺎﻳﻞ ﺑﻪ ﭘﺮوﻧﺪه ﭘﻲ -ﻛﺪ
pcode file
ﻣﻲﺗﻮان ﺟﻬﺖ ﭘﻨﻬﺎن ﻛﺮدن ﺳﻄﻮر ﺑﺮﻧﺎﻣﻪ آن را ﺑﻪ ﺻﻮرت pcodeدر آورد .ﻓﺎﻳﻞﻫﺎي pcodeدر ﻣﺤﻴﻂ MATLABﻗﺎﺑﻞ اﺟﺮا ﻫﺴﺘﻨﺪ ،اﻣﺎ ﻗﺎﺑﻞ ادﻳﺖ و ﺑﺎزﺑﻴﻨﻲ ﻧﻴﺴﺘﻨﺪ .ﺑﺎ اﺟﺮاي دﺳﺘﻮر pcode fun.mﻳﺎ mcc -B pcode fun.m
ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎم fun.pاﻳﺠﺎد و در دﻳﺮﻛﺘﻮري ﺟﺎري ذﺧﻴﺮه ﻣﻲﺷﻮد .ﻧﺘﻴﺠﻪ اﺟﺮاي fun.mو fun.pﻳﻚﺳﺎن اﺳﺖ.
ﻣﺜﺎل: ام -ﻓﺎﻳﻞ زﻳﺮ را ﺑﻪ ﻧﺎم pascall.mﻧﻮﺷﺘﻪ و آنرا ﺑﻪ ﺻﻮرت ﻓﺎﻳﻞ pcodeدر آورﻳﺪ .ﻓﺎﻳﻞ pascall.pرا ﺑﻪ دﻳﺮﻛﺘﻮري دﻳﮕﺮي ﻣﻨﺘﻘﻞ ﻛﺮده ،ﻧﺘﻴﺠﻪ اﺟﺮاي آنرا ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ. >> pcode pascall
ﻓﺎﻳﻞ رﻣﺰﮔﺬريﺷﺪه ﺑﺎ ﻧﺎم pascall.p
ﭘﺪﻳﺪ ﻣﻲآﻳﺪ.
;ncr = 1 ;r = 2 ;n = 6 for k = 1:r ;ncr=ncr*(n-k+1)/k end )disp(ncr
93
ﺗﻮﻟﻴﺪ ﺑﺮﻧﺎﻣﻪ Cﺑﺎ ﻛﺎﻣﭙﺎﻳﻠﺮ ﻣﺘﻠﺐ
MATLAB Compiler
دﺳﺘﻮر mcc -m functin nameاز ﻳﻚ ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن Cو ﻫﻢﭼﻨﻴﻦ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ ﻣﺮﺑﻮﻃﻪ را ﻛﻪ از ﭘﻨﺠﺮه Command Promtوﻳﻨﺪوز ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ ﻣﻲﺳﺎزد ،و در دﻳﺮﻛﺘﻮري ﺟﺎري ذﺧﻴﺮه ﻣﻲﻛﻨﺪ .ﻣﻌﻤﻮﻻٌ ﺑﺮﻧﺎﻣﻪﻫﺎي ﺳﺎﺧﺘﻪ ﺷﺪه ﺑﺎ ﻛﺎﻣﭙﺎﻳﻠﺮ اﺣﺘﻴﺎج ﺑﻪ ، MATLAB Compiler Run-Time Librariesو ﺑﺮﻧﺎﻣﻪﻫﺎي ﮔﺮاﻓﻴﻜﻲ اﺟﺮاﺋﻲ ﻧﻴﺎز ﺑﻪ C/C++ Graphics Libraryدارﻧﺪ .ﻳﻌﻨﻲ ﺑﺮاي اﺟﺮا ﺗﻤﺎم ﻳﺎ ﻣﺆﻟﻔﻪﻫﺎﺋﻲ از ﻧﺮماﻓﺰار MATLABو Visual C++ﺑﺎﻳﺪ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ ﻧﺼﺐ ﺷﺪه ﺑﺎﺷﺪ.
ﻣﺜﺎل: ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ زﻳﺮ را ﺑﻪ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن Cﺗﺒﺪﻳﻞ و ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن را ﺑﺴﺎزﻳﺪ .ﻛﺪ ﺣﺎﺻﻞ ﺷﺪه ﺑﻪ زﺑﺎن Cرا در دﻳﺮﻛﺘﻮري ﺟﺎري ﺑﺎز ﻛﻨﻴﺪ و ﺑﺒﻴﻨﻴﺪ .ﻓﺎﻳﻞ اﺟﺮاﺋﻲ را در ﻣﺤﻴﻂ ﻣﺘﻠﺐ از Command Windowﺑﺎ ﮔﺬاﺷﺘﻦ ﻋﻼﻣﺖ ! در ﻣﻘﺎﺑﻞ ﻧﺎم آن اﺟﺮا ﻛﻨﻴﺪ .ﻓﺎﻳﻞ اﺟﺮاﺋﻲ را در ﻣﺤﻴﻂ Windowsاز ﭘﻨﺠﺮه Command Promtاﺟﺮا ﻛﻨﻴﺪ. >> mcc -m dispp >> ! dispp.exe
function dispp ;'xs='6.5 ;)]disp(['MATLAB Version is ', xs MATLAB Version is 6.5
ﻓﺎﻳﻞ dispp.cرا ﺑﺎز ﻛﺮده و ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﻢ .ﭘﻨﺠﺮه Command Promtرا درﻣﺤﻴﻂ وﻳﻨﺪوز ﺑﺎز ﻛﺮده و از داﺧﻞ آن دﺳﺘﻮر dispp.exeرا اﺟﺮا ﻣﻲﻛﻨﻴﻢ.
ﺗﺒﺪﻳﻞ ﺑﺮﻧﺎﻣﻪ ﮔﺮاﻓﻴﻜﻲ ﺑﻪ زﺑﺎن
C++
دﺳﺘﻮر mcc -B sgl functin nameاز ﻳﻚ ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲِ داراي دﺳﺘﻮرات ﮔﺮاﻓﻴﻜﻲ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن C++و ﻫﻢﭼﻨﻴﻦ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ ﻣﺮﺑﻮﻃﻪ را ﻛﻪ از ﭘﻨﺠﺮه Command Promtوﻳﻨﺪوز ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ ﻣﻲﺳﺎزد.
ﻣﺜﺎل: از ﺗﺮﻛﻴﺐ دو ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ زﻳﺮ ﻛﻪ ﻳﻜﻲ دﻳﮕﺮي را ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﻛﻨﺪ ،ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن C++ﻫﻢراه ﺑﺎ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ ﺑﺴﺎزﻳﺪ .ﻓﺎﻳﻞ اﺟﺮاﺋﻲ را در ﻣﺤﻴﻂ MATLABو از ﭘﻨﺠﺮه Command Promtاﺟﺮا ﻛﻨﻴﺪ. )function y = sawt(t,T ;y=10*rem(t,T)/T
>> mcc -B sgl tsawt >> !tsawt
function tsawt ;)n=200;T=2;t=linspace(0.01,3*T,n ;)f=sawt(t,T ;)F=fft(f ;)f1=ifft(F )plot(t,abs(f1),'x',t,f
ﺧﻼﺻﻪ دﺳﺘﻮرات ﻛﺎﻣﭙﺎﻳﻠﺮ در ﻛﻠﻴﻪ دﺳﺘﻮرات زﻳﺮ ﻧﺎم ام -ﻓﺎﻳﻞ ﺑﻌﺪاز دﺳﺘﻮر ﻣﻲآﻳﺪ. mcc -xﺗﺮﺟﻤﻪ ﻳﻚ M-fileﺑﻪ Cو ﺗﻮﻟﻴﺪ C MEX-fileﻛﻪ از درون ﻣﺘﻠﺐ ﻗﺎﺑﻞ اﺟﺮاﺳﺖ mcc -Sﺗﻮﻟﻴﺪ Cو Simulink S-Functionﻣﺮﺑﻮﻃﻪ mcc -mﺗﺮﺟﻤﻪ ﻳﻚ M-fileﺑﻪ Cو ﺗﻮﻟﻴﺪ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن ،ﻗﺎﺑﻞ اﺟﺮا ﺑﺪون ﻧﻴﺎز ﺑﻪ ﻣﺘﻠﺐ mcc -pﺗﺮﺟﻤﻪ ﻳﻚ M-fileﺑﻪ C++و ﺗﻮﻟﻴﺪ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن ،ﻗﺎﺑﻞ اﺟﺮا ﺑﺪون ﻧﻴﺎز ﺑﻪ ﻣﺘﻠﺐ mcc -B sglﺗﻮﻟﻴﺪ ﻳﻚ ﻓﺎﻳﻞ ﻛﺎرﺑﺮديِ C Graphics Library Applicationو ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن ﻗﺎﺑﻞ اﺟﺮا ﺑﺪون ﻧﻴﺎز ﺑﻪ ﻣﺘﻠﺐ ،از ﻳﻚ ام -ﻓﺎﻳﻞ ﮔﺮاﻓﻴﻜﻲ
94
mcc -B sglcppﺗﻮﻟﻴﺪ ﻳﻚ ﻓﺎﻳﻞ ﻛﺎرﺑﺮديِ C++ Graphics Library Applicationو ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن ﻗﺎﺑﻞ اﺟﺮا ﺑﺪون ﻧﻴﺎز ﺑﻪ ﻣﺘﻠﺐ ،از ﻳﻚ ام -ﻓﺎﻳﻞ ﮔﺮاﻓﻴﻜﻲ mcc -m -W lib:libfoo -T link:lib foo.mﺗﻮﻟﻴﺪ ﻳﻚ ﻛﺘﺎبﺧﺎﻧﻪ Cاز ام -ﻓﺎﻳﻞ foo.m mcc -p -W lib:libfoo -T compile:libﺗﻮﻟﻴﺪ ﻳﻚ ﻛﺘﺎبﺧﺎﻧﻪ C++
ﺗﻮﻟﻴﺪ ﻳﻚ ﻛﺘﺎبﺧﺎﻧﻪ ﻣﺸﺘﺮك ﺑﺎ Cﺑﺮاي ﻣﺤﺎﺳﺒﺎت ﺧﺎص ﻛﻪ از ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﺷﻮد mcc -W lib:mylib -L C -t -T link:lib -h Function1 Function2 ... mcc -B pcodeﺗﻮﻟﻴﺪ P-Codeﺑﺮاي ﻣﺤﻴﻂ MATLAB
ﺳﺎزﻧﺪه اﻛﺴﻞ
Excel Builder
دﺳﺘﻮر mxltoolﻳﻚ واﺳﻂ ﮔﺮاﻓﻴﻜﻲ GUIدر اﺧﺘﻴﺎر ﻗﺮار ﻣﻲدﻫﺪ ﻛﻪ ﺑﺎ آن در ﻣﺤﻴﻂ ﻣﺘﻠﺐ ﻣﻲﺗﻮان ﺑﺮﻧﺎﻣﻪﻫﺎ و ﻣﺎﻛﺮوﻫﺎﺋﻲ ﺟﻬﺖ اﺳﺘﻔﺎده در داﺧﻞ اﻛﺴﻞ ﻧﻮﺷﺖ .ﭘﺲ از اﺟﺮاي اﻳﻦ دﺳﺘﻮر از ﻣﻨﻴﻮي Helpآن اﻃﻼﻋﺎت ﺑﻴﺶﺗﺮ را ﺑﻪ دﺳﺖ آورﻳﺪ.
5-9ﺗﻤﺮﻳﻦ -1ﺣﺎﺻﻞﺿﺮب ﻳﻚ ﺗﺎﺑﻊ ﻧﻤﺎﺋﻲ و ﻳﻚ ﺗﺎﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ را ﺑﻪ ﺻﻮرت inlineﺗﻌﺮﻳﻒ و ﺑﺎ )( ezplotرﺳﻢ ﻛﻨﻴﺪ. -2ﻣﻘﺪار ،ﻣﻘﺪار ﻣﺸﺘﻖ ،و ﻣﻘﺪار ﻣﺸﺘﻖ ﻣﺸﺘﻖ ﻳﻚ ﻣﻌﺎدﻟﻪ درﺟﻪ ﭼﻬﺎر را ﺑﺎ ﻳﻚ ام-ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ ﭼﻨﺪ آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ ﺑﺮﮔﺮداﻧﻴﺪ .ﻫﻤﻴﻦ ﻋﻤﻞ را اﻳﻦﺑﺎر ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﺎﺑﻊ اﻧﺠﺎم دﻫﻴﺪ .ﺑﺮاي ام-ﻓﺎﻳﻞ ﻫﺎي ﺗﺎﺑﻌﻲ راﻫﻨﻤﺎ ﺑﻨﻮﻳﺴﻴﺪ .ﻣﻌﺎدﻟﻪ را ﺑﺎ راه ﺑﺮد ﻧﻴﻮﺗﻦ و ﺑﺎ اﺳﺘﻔﺎده از ام-ﻓﺎﻳﻞ ﻫﺎ ﺣﻞ ﻛﻨﻴﺪ -3ﻓﺎﻛﺘﻮرﻳﻞ را ﺑﺎ ﻳﻚ ﺗﺎﺑﻊ ،ﺑﺪون اﺳﺘﻔﺎده از ﺑﺎزﮔﺸﺘﻲ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ. -4ﺗﺎﺑﻌﻲ ﺑﺎ ورودي ﻧﺎم ﺑﻨﻮﻳﺴﻴﺪ ،ﻛﻪ در ﻫﺮ ﺑﺎر اﺟﺮا ﻧﺎم درﻳﺎﻓﺘﻲ را ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﺎ ﺣﺮف اﻟﻔﺒﺎ ) (A,B,C,...ﻛﻨﺎر ﻧﺎم ﭼﺎپ ﻛﻨﺪ. -5ﻳﻚ ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ اﻳﺠﺎد ﻛﻨﻴﺪ ﻛﻪ آرﮔﻮﻣﺎن ورودﻳﺶ ﺗﺎﺑﻊ دﻳﮕﺮي ﺑﺎﺷﺪ. -6ﺑﺎ ﺗﻮاﺑﻌﻲ ﻛﻪ ﺗﺎﻛﻨﻮن ﻧﻮﺷﺘﻪاﻳﺪ و ﺑﺎ اﺳﺘﻔﺎده از ﻛﺎﻣﭙﺎﻳﻠﺮ ﻣﺘﻠﺐ ﺑﺮﻧﺎﻣﻪ Cو ﺑﺮﻧﺎﻣﻪ C++ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ ،و آنﻫﺎ را از ﭘﻨﺠﺮه ﻓﺮﻣﺎن وﻳﻨﺪوز اﺟﺮا ﻛﻨﻴﺪ.
95
ﻓﺼﻞ 10رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ
(Symbolic Math Tool Box) Symbolic Math
ﻧﻮﺷﺘﻦ ﻋﺒﺎرات و ﻓﺮﻣﻮلﻫﺎ ﺑﺎ ﺣﺮوف و ﻋﻼﺋﻢ ،در ﻣﺘﻠﺐ رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ ﮔﻔﺘﻪ ﻣﻲﺷﻮد .در ﺟﺒﺮ و آﻧﺎﻟﻴﺰ رواﺑﻂ رﻳﺎﺿﻲ ﺑﺎ ﺣﺮوﻓﻲ ﻧﻈﻴﺮ x, y, a ,bﻧﺸﺎن داده ﻣﻲﺷﻮﻧﺪ ﻛﻪ روﺷﻲ ﻛﺎرآﻣﺪ و آﺷﻨﺎ ﺑﻪ ذﻫﻦ و ﭼﺸﻢ اﺳﺖ .ﻣﺘﻠﺐ ﺑﺎ اﺳﺘﻔﺎده از ﺳﺎﺧﺘﺎر و ﻣﻮﺗﻮر Mapleاﻳﻦ ﻛﺎر را اﻧﺠﺎم ﻣﻲدﻫﺪ .اﻟﺒﺘﻪ ﺧﻂﻧﻮﺷﺘﻪي ﻛﺎﻣﭙﻴﻮﺗﺮي ﺑﻪ ﺧﻮاﻧﺎﺋﻲ ﻓﺮﻣﻮلﻧﻮﺷﺘﻪﻫﺎي ﭼﺎﭘﻲ و 2
دﺳﺘﻲ ﻧﻴﺴﺖ )ﻣﺜﻼٌ ﻋﺒﺎرت sin 2xﺑﻪ ﺻﻮرت ﻧﻤﺎدﻳﻦِ sin(2*x)^2ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد( .اﻣﺎ ﻛﻮﺷﺶ ﺷﺪه اﺳﺖ ﻛﻪ ﺣﺪاﻛﺜﺮ ﻣﺸﺎﺑﻬﺖ ﺑﺎ روش ﻧﻮﺷﺘﺎري ﺟﺒﺮي ﻓﺮاﻫﻢ ﺷﻮد .ﺑﺮاي ﻛﺎر ﺑﺎ رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ ﺑﺎﻳﺪ از ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ اﺳﺘﻔﺎده ﻛﺮد.
1-10ﻣﻘﺎﻳﺴﻪ ﭼﻨﺪ ﻧﻮع داده آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ﺑﺎ دﻗﺖ اﻓﺰوده
double array
ﻣﺘﻐﻴﺮي ﻛﻪ ﺑﻪﺻﻮرت x = 7ﺗﻌﺮﻳﻒ ﺷﻮد ،آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ﺑﺎ دﻗﺖ اﻓﺰوده اﺳﺖ )ﭘﻴﺶﻓﺮض اﻋﺪاد ﺗﻌﺮﻳﻒ ﺷﺪه دﻗﺖ اﻓﺰوده ﻳﺎ doubleاﺳﺖ( .ﭘﺎﺳﺦ دﺳﺘﻮر ) isnumeric(xدرﺳﺘﻲ ﻳﺎ ﻣﻨﻄﻖِ ﻳﻚ ﺧﻮاﻫﺪ ﺑﻮد.
آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻛﺎراﻛﺘﺮي ﻣﺘﻐﻴﺮي ﻛﻪ ﺑﻪ ﺻﻮرت ' d = '7ﺗﻌﺮﻳﻒ ﺷﻮد ،ﻣﺘﻐﻴﺮ ﻛﺎراﻛﺘﺮي ﻳﺎ رﺷﺘﻪاي اﺳﺖ .ﭘﺎﺳﺦ دﺳﺘﻮر ) ischar(dدرﺳﺘﻲ ﺧﻮاﻫﺪ ﺑﻮد.
ﺷﻴﺊ ﻳﺎ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﻣﺘﻐﻴﺮي ﻛﻪ ﺑﻪ ﺻﻮرت) a = sym(7ﺗﻌﺮﻳﻒ ﺷﻮد ،ﻳﻚ ﺷﻴﺊ ﻧﻤﺎدﻳﻦ symbolicاﺳﺖ و ﭘﺎﺳﺦ )isobject(a
درﺳﺘﻲ اﺳﺖ.
اﻧﻮاع دﻳﮕﺮ داده در ﻣﺘﻠﺐ اﻧﻮاع دﻳﮕﺮي از ﻣﺘﻐﻴﺮﻫﺎ ﻧﻈﻴﺮ ) singleﻛﻪ ﺷﺮح آن ﻗﺒﻼٌ آﻣﺪ( و cell arrayو sparse matrix
ﻧﻴﺰ وﺟﻮد دارﻧﺪ .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ help datatypesرا اﺟﺮا ﻛﻨﻴﺪ.
ﻧﻤﺎﻳﺶ ﻣﺘﻐﻴﺮﻫﺎ در ﭘﻨﺠﺮه
workspace
ﺳﻪ ﻣﺘﻐﻴﺮ ﻓﻮق ﻛﻪ از ﺳﻪ ﻧﻮع ﻣﺨﺘﻠﻒ ﻫﺴﺘﻨﺪ در workspaceﺑﺎ ﺳﻪ ﻧﺸﺎﻧﻚ iconﻣﺨﺘﻠﻒ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ:
ﺷﻜﻞ 1-10
96
2-10ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﻋﻤﻞ ﻣﻌﻜﻮس ﻛﺮدن را ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ .ﺑﻪ ﻣﺘﻐﻴﺮ ﻋﺪدي xﻣﻘﺪار داده ،آن را ﻣﻌﻜﻮس ﻣﻲﻛﻨﻴﻢ .در ﭘﺎﻳﺎن دو ﻣﺘﻐﻴﺮ ﻋﺪدي ﺧﻮاﻫﻴﻢ داﺷﺖ. ;>> x = 7 )>> xr = x^(-1 xr = 0.1429 ﺣﺎل ﻣﺘﻐﻴﺮ dرا ﻣﺴﺎوي ﻛﺎراﻛﺘﺮ ' '7ﻗﺮار داده ،آن را ﻣﻌﻜﻮس ﻣﻲﻛﻨﻴﻢ .اﻳﻦ ﻋﻤﻞ ﻣﻘﺪار ﻋﺪدي ﻳﺎ ﻛﺪ اﺳﻜﻲ ﻣﺘﻐﻴﺮ dرا
ﻛﻪ ﻳﻚ ﻣﺘﻐﻴﺮ ﻛﺎراﻛﺘﺮي اﺳﺖ ﻣﻌﻜﻮس ﻣﻲﻛﻨﺪ )ﻛﺪ اﺳﻜﻲ ﻛﺎراﻛﺘﺮ ' '7ﻋﺪد 55اﺳﺖ( dr = 0.0182 % 1/55
;'>> d = '7 )>> dr = d^(-1
ﺳﭙﺲ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ aرا ﻣﺴﺎوي 7ﻧﻤﺎدﻳﻦ ﮔﺮﻓﺘﻪ و آن را ﻣﻌﻜﻮس ﻣﻲﻛﻨﻴﻢ ،ﻧﻤﺎدﻳﻦ ﺑﻮدن ﻣﻘﺪار ﻣﻌﻜﻮس را اﻣﺘﺤﺎن ﻛﺮده، ﺳﭙﺲ آن را ﺑﻪ ﻣﻘﺪار ﻋﺪدي ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﻴﻢ .ﺑﺎ ﻋﻤﻞ روي aﻳﻚ ﻣﺘﻐﻴﺮ )ﺷﻴﺊ( ﻧﻤﺎدﻳﻦ دﻳﮕﺮ ﺑﻪ ﻧﺎم arاﻳﺠﺎد ﻣﻲﺷﻮد. ar = 1/7
;)>> a = sym(7 )>> ar = a^(-1
ﭼﻮن arدر ﺳﻤﺖ ﭼﭗ ﻳﻚ ﻋﺒﺎرت ﻧﻤﺎدﻳﻦ ﻗﺮار دارد ،ﺧﻮد ﺑﻪ ﺧﻮد ﻣﻌﺮﻓﻲ ﻣﻲﺷﻮد و ﻧﻴﺎز ﺑﻪ ﻣﻌﺮﻓﻲ ﺟﺪا ﻧﺪارد .ﻧﻤﺎدﻳﻦ ﺑﻮدن اﻳﻦ ﺷﻴﺊ را ﺑﺎ دﺳﺘﻮر )( isobjectاﻣﺘﺤﺎن ﻣﻲﻛﻨﻴﻢ: ans = 1
)>> isobject(ar
ﺑﺎ دﺳﺘﻮر doubleﻣﻲﺗﻮان ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻋﺪدي را ﻧﻴﺰ ﺑﻪ ﻋﺪد ﺗﺒﺪﻳﻞ ﻛﺮد: )>> bs = double(ar bs = 0.1429 )>> isnumeric(bs ans = 1 ﻫﻤﻴﻦ ﻛﺎر ﺑﺎ دﺳﺘﻮر )( evalﻧﻴﺰ ﺷﺪﻧﻲ اﺳﺖ: ans = 0.1429 )>> eval(ar
ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ aرا ﻣﺴﺎوي -5ﻧﻤﺎدﻳﻦ ﻗﺮار داده b = a^2 + aو z = b^.5را ﺑﻪ دﺳﺖ آورده ﻣﻘﺎدﻳﺮ ﻋﺪدي آنﻫﺎ را ﻧﻴﺰ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ. )>> a = sym(-5 >> b = a^2 + a >> z = b ^ 0.5
a = -5 b = 20 )z = 20^(1/2
ﭼﻮن ﺑﻪ bو zﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻧﺴﺒﺖ داده ﺷﺪه ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد ﻫﺴﺘﻨﺪ: bd = 20 zd = 4.4721
)>> bd = double(b )>> zd = double(z
ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ دﺳﺘﻮر )( findsymﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﻳﻚ ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ را ﺑﻪ ﺗﺮﺗﻴﺐ اﻟﻔﺒﺎ ﻧﺸﺎن ﻣﻲدﻫﺪ. ans = t, x
ans = t, x, y, z
>> syms x t y z ;>> f = x^t; f1 = z + t^x*y )>> findsym(f), findsym(f1
ﺗﻌﺪاد nﻣﺘﻐﻴﺮ اول ﻛﻪ از xﺷﺮوع ﻣﻲﺷﻮﻧﺪ ﺑﺎ ) findsym(f1,nﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ: ans = x, y, z
)>> findsym(f1,3
ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ ﻣﺘﻐﻴﺮ ﻋﺪدي u = 0.257را در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ و ﺑﺎ آن ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ usرا ﭘﺪﻳﺪ آورده ،ﺑﻪ دو ﺻﻮرت ﻛﺴﺮي و اﻋﺸﺎري )ﺗﺎ ﭘﻨﺞ رﻗﻢ( ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ. us = 257/1000
;>> u = 0.257 )>> us = sym(u
97
ﭘﺎراﻣﺘﺮ ' 'dﻧﻤﺎﻳﺶ را ﺑﻪ ﺻﻮرت اﻋﺸﺎري در ﻣﻲآورد .دﺳﺘﻮر )( digitsﻛﻪ ﻓﻘﻂ ﺑﺮاي ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺑﻪ ﻛﺎر ﻣﻲ- رود ﺗﻌﺪاد ارﻗﺎم اﻋﺪاد ﻧﻤﺎدﻳﻦ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ. )>> digits(5 )'>> us = sym(u,'d
us = .25700
ﻧﻤﺎﻳﺶ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺑﺮاي ﻫﺮﻧﻮع ﻋﻤﻠﻴﺎت ﻧﻤﺎدﻳﻦ ﺑﺎﻳﺴﺘﻲ اﺑﺘﺪا ﻣﺘﻐﻴﺮﻫﺎي ﻣﻮرد اﺳﺘﻔﺎده را ﻣﻌﺮﻓﻲ ﻛﺮد .اﻳﻦ ﻛﺎر ﺑﺎ دﺳﺘﻮرﻫﺎي )( symو syms
اﻧﺠﺎم ﻣﻲﺷﻮد .ﻣﺘﻐﻴﺮﻫﺎﺋﻲ ﻛﻪ ﺑﺮ اﺛﺮ ﻋﻤﻠﻴﺎت ﺑﺮ روي اﺷﻴﺎء ﻧﻤﺎدﻳﻦ ﺣﺎﺻﻞ ﺷﻮﻧﺪ ﺧﻮدﺑﻪﺧﻮد ﻧﻤﺎدﻳﻦ ﺧﻮاﻫﻨﺪ ﺑﻮد و ﻧﻴﺎز ﺑﻪ ﻣﻌﺮﻓﻲ اوﻟﻴﻪ ﻧﺪارﻧﺪ. >> syms a b )>> (a+b)^(1/2
)ans = (a+b)^(1/2 اﻣﺎ ﻋﺒﺎرت زﻳﺮ ﺗﻮﻟﻴﺪ ﺧﻄﺎ ﻣﻲﻛﻨﺪ زﻳﺮا wﻣﻌﺮﻓﻲ ﻧﺸﺪه اﺳﺖ: ??? Undefined function or variable 'w'.
)>> (a+w)^(1/2
ﻳﻚ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﻣﻘﺪاردار و ﻳﻚ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﺑﺪون ﻣﻘﺪار را ﺟﻤﻊ ﻛﺮده و رﺷﻴﻪ دوم ﻣﻲﮔﻴﺮﻳﻢ .ﺑﻪ ﻣﻌﺮﻓﻲ ﻳﻚ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ )ﺳﻤﺒﻠﻴﻚ( ﺑﺎ ﻣﻘﺪار دﻫﻲ و ﺑﺪون ﻣﻘﺪار دﻫﻲ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .اﻣﺎ ﻣﺘﻐﻴﺮ cﻛﻪ از ﻋﻤﻠﻴﺎت ﺑﺮ روي ﻣﺘﻐﻴﺮﻫﺎي ﻗﺒﻼً ﻣﻌﺮﻓﻲ ﺷﺪه ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ ،ﻧﻴﺎز ﺑﻪ ﻣﻌﺮﻓﻲ ﻧﺪارد ;)>> a = sym(7 >> syms b )>> c = (a+b)^(1/2
)c = (7+b)^(1/2 ﺑﺎ ﻛﺎرﺑﺮد ﻋﺒﺎرات ﺑﺎﻻ ﻣﻘﺪار ﻧﻤﺎدﻳﻦ aﻫﻔﺖ اﺳﺖ و ﻣﻘﺪار ﻧﻤﺎدﻳﻦ bﺧﻮدِ bاﺳﺖ ،ﻣﻘﺪار اﺷﻴﺎء ﻧﻤﺎدﻳﻦِ ﺑﺪون ﻣﻘﺪار ﺑﺎ
ﺧﻮدﺷﺎن ﻣﺴﺎوي اﺳﺖ .اﻳﻦ ﻣﻮﺿﻮع را ﻣﻲﺗﻮان روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺗﺤﻘﻴﻖ ﻛﺮد: b = b
>> a , b
a = 7
ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﻧﻤﺎدﻳﻦ ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ xاﺳﺖ ،ﻟﺬا ﺑﺪون ذﻛﺮ ﭘﺎراﻣﺘﺮ ،ﻋﻤﻞ رﻳﺎﺿﻲ ﺑﺮ ﺣﺴﺐ xﻳﺎ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻧﺎم ﺑﻪ xاﻧﺠﺎم t
ﻣﻲﺷﻮد .ﻣﺜﻼً ﻣﺸﺘﻖ xرا ﺑﺮ ﺣﺴﺐ xو tﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ. >> syms x t >> f = x^t )>> diff(f
ans =x^t*t/x
اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ را ﺧﻮدﻣﺎن ﺗﻌﻴﻴﻦ ﻛﻨﻴﻢ ،آنرا ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ دوم ﻣﻲآورﻳﻢ: )>> diff(f,t
)ans = x^t*log(x
ﻳﺎ ﻣﺸﺘﻖ ) sin(at + bﺑﺮ ﺣﺴﺐ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻧﺎم ﺑﻪ xﻛﻪ در اﻳﻦﺟﺎ tاﺳﺖ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد: )>> g = sin(a*t + b )>> dg = diff(g
dg =cos(a*t+b)*a
ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ aرا ﻣﺴﺎوي -5ﻧﻤﺎدﻳﻦ ﻗﺮار داده b = a^2 + aو z = b^.5را ﺑﻪ دﺳﺖ آورده ﻣﻘﺎدﻳﺮ ﻋﺪدي آنﻫﺎ را ﻧﻴﺰ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ. )z = 20^(1/2
b = 20
a = -5
>> a = sym(-5),b = a^2 + a,z = b^.5 ﭼﻮن ﺑﻪ bو zﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻧﺴﺒﺖ داده ﺷﺪه
ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد ﻫﺴﺘﻨﺪ: zd = 4.4721
98
bd = 20
)>> bd = double(b), zd = double(z
ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ دﺳﺘﻮر زﻳﺮ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺗﺎﺑﻊ
t
f = xرا ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ: ans = t, x
)>> findsym(f
اوﻟﻴﻦ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﺑﺎ اﺿﺎﻓﻪ ﻛﺮدن ﭘﺎراﻣﺘﺮ 1ﺑﻪ دﺳﺘﻮر ﻓﻮق ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ: ans = x
)>> findsym(f,1
ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ ﺑﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي u = 0.257ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ usرا ﭘﺪﻳﺪ آورده ،ﺑﻪ دو ﺻﻮرت ﻛﺴﺮي و اﻋﺸﺎري )ﺗﺎ ﭘﻨﺞ رﻗﻢ( ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ. us = 257/1000
;>> u = 0.257 )>> us = sym(u
ﭘﺎراﻣﺘﺮ ' 'dﻧﻤﺎﻳﺶ را ﺑﻪ ﺻﻮرت اﻋﺸﺎري در ﻣﻲآورد .دﺳﺘﻮر )( digitsﻛﻪ ﻓﻘﻂ ﺑﺮاي ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺑﻪ ﻛﺎر ﻣﻲ- رود ﺗﻌﺪاد ارﻗﺎم اﻋﺪاد ﻧﻤﺎدﻳﻦ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ. us = .25700
)>> digits(5 )'>> us = sym(u,'d
3-10ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ رﻳﺸﻪ دوم رﻳﺸﻪ دوم ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ aﺑﻪ ﻃﺮﻳﻖ زﻳﺮ ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ. )b = a^(1/2
>> syms a )>> b = sqrt(a
ﺗﻮان رﻳﺸﻪ دوم ) exp(-zرا از ﻃﺮﻳﻖ ﺑﻪ ﺗﻮان رﺳﺎﻧﺪن ﺑﻪ دﺳﺖ ﻣﻲآورﻳﻢ. )z = exp(-z)^(1/2
>> syms z ;)>> b = exp(-z >> z = b ^ 0.5
ﻣﺸﺘﻖ ﻣﺸﺘﻖ اول و دوم ﻋﺒﺎرت -z^2 + a^2را ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ. d = -2*z dd = -2
>> syms a z )>> d = diff(-z^2 + a^2 )>> dd = diff(d
اﻧﺘﮕﺮال اﻧﺘﮕﺮال a^2 + aرا ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﻴﻢ. c = 1/3*a^3+1/2*a^2
>> syms a >> b = a^2 + a )>> c = int(b
اﻧﺘﮕﺮال ﻣﺤﺪود اﻧﺘﮕﺮال ) exp(-zرا ﻣﺎﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ﺑﻲﻧﻬﺎﻳﺖ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ. c = 1
>> syms z ;)>> b = exp(-z )>> c = int(b,z,0,inf
99
ﺗﺒﺪﻳﻞ ﺑﻪ ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ و رﻳﺸﻪ و ﻗﻄﺐ ﻳﻚ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ دﺳﺘﻮر)( residueﻳﻚ ﻛﺴﺮ را از ﻓﺮم 1ﺑﻪ ﻓﺮم ) 2ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ( ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ.
ﻓﺮم 2
ﻓﺮم 1
ﻣﺜﺎل: ﺑﺮاي ﺣﺼﻮل رﻳﺸﻪ و ﻗﻄﺐِ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻓﺮم ، 1آن را ﺑﻪ ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﻴﻢ .ﻋﺒﺎرت ﺗﺒﺪﻳﻞ ﺷﺪه ﺑﻪ ﺷﻜﻞ ﻓﺮم 2 ﺧﻮاﻫﺪ ﺑﻮد. − 1.4167 0.6653 1.3320 − + − 1.25 s − 1.5737 s + 1.1644 s + 0.4093 ﻓﺮم 2
1.3320 -0.4093
-0.6653 -1.1644
ﻓﺮم 1
r = -1.4167 p = 1.5737 k = -1.2500
]>> b = [ 5 3 -2 7 ]>> a = [-4 0 8 3 )>> [r, p, k] = residue(b,a
ﺗﺒﺪﻳﻞ ﻋﺒﺎرت ﺟﺒﺮي ﺑﻪ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ ) [N,D] = numden(Aﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ Aرا ﺑﻪ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ .ﭼﻨﺪﺟﻤﻠﻪايﻫﺎي ﺻﻮرت و x y ﻣﺨﺮج ﺣﺘﻲاﻻﻣﻜﺎن ﺗﺠﺰﻳﻪﻧﺎﭘﺬﻳﺮ ﺑﻮده و ﺿﺮاﺋﺐ آنﻫﺎ اﻋﺪاد ﺻﺤﻴﺢ ﻫﺴﺘﻨﺪ .اﮔﺮ ﻋﺒﺎرت + y x
را ﺑﻪ ﺻﻮرت ﻛﺴﺮ
ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ درآورﻳﻢ. n = x^2 + y^2 d = y*x
>> syms x y )>> [n,d] = numden(x/y + y/x
x2 + y 2 ﻋﺒﺎرت ﺗﺒﺪﻳﻞ ﺷﺪه ﺑﻪ اﻳﻦ ﺷﻜﻞ ﻣﻲﺑﺎﺷﺪ: yx
4-10اﻋﺪاد ﻣﺨﺘﻠﻂ ﻧﻤﺎدﻳﻦ ﺑﺮاي اﻳﻦ ﻛﻪ ﺑﺘﻮاﻧﻴﻢ ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ را ﺑﻪ ﺻﻮرت i*yﻧﺸﺎن دﻫﻴﻢ ﺑﺎﻳﺴﺘﻲ yﺣﺘﻤﺎٌ ﻋﺪد ﺣﻘﻴﻘﻲ ﺑﺎﺷﺪ .ﻟﺬا از ﭘﺎراﻣﺘﺮ realاﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ .ﺣﻘﻴﻘﻲ ﺑﻮدن xو yﺑﻪ ﻣﻌﻨﻲ ﻣﺜﺒﺖ ﺑﻮدن ﻋﺒﺎرت x^2 + y^2ﻣﻲﺑﺎﺷﺪ.
ﻣﺰدوج ﻳﻚ ﻋﺪد ﻣﺨﺘﻠﻂ ﻣﺰدوج ﻳﻚ ﻋﺪد ﻣﺨﺘﻠﻂ ﻧﻤﺎدﻳﻦ را ﺑﻪ دﺳﺖ آورده ،در ﺧﻮدش ﺿﺮب ﻛﺮده ،و ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ .دﺳﺘﻮر )( expandدر اﻳﻦﺟﺎ ﺿﺮب دو ﭘﺮاﻧﺘﺰ را ﺑﺎز ﻣﻲﻛﻨﺪ. cz = x-i*y )az =(x+i*y)*(x-i*y ans = x^2+y^2
100
syms x y real ; z = x + i*y )cz = conj(z )az = z*conj(z ))expand(z*conj(z
>> >> >> >> >>
5-10ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ ﻣﻌﺮﻓﻲ ﻳﻚ ﺗﺎﺑﻊ ﻛﻠﻲ ﻣﺜﺎل: ﺗﺎﺑﻊ ) f(xرا ﺑﻪ ﺻﻮرت ﻧﻤﺎدﻳﻦ ﻣﻌﺮﻓﻲ ﻣﻲﻛﻨﻴﻢ. )f = f(x
ﺟﺎي ﮔﺰﻳﻨﻲ ﻳﻚ ﻋﺒﺎرت ﺑﻪ ﺟﺎي
)')>> f = sym('f(x
(subs = substitution) x
ﻣﺜﺎل ﻫﺎ: (1 ﺑﺎ ﻋﺒﺎرت ) x+h ، subs(f,x,x+hرا ﺑﻪ ﺟﺎي xﻗﺮار ﻣﻲدﻫﻴﻢ )fs = f(x+h
>> syms x h y )>> fs = subs(f,x,x+h
(2 fs − f ﻣﻘﺪار ﻧﻤﺎدﻳﻦ h
را ﺑﻪ دﺳﺖ آورﻳﺪ. df = (f(x+h)-f(x))/h
>> df = (fs-f)/h
ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﻣﺨﺘﻠﻂ ﻣﺜﺎل: ﻣﺸﺘﻖ eixرا ﺑﻪ دﺳﺖ ﻣﻲآورﻳﻢ. )ep1 = i*exp(i*x
)>> ep = exp(i*x )>> ep1 = diff(ep
6-10ﺣﺪ ﺗﺎﺑﻊ در ﮔﺮﻓﺘﻦ ﺣﺪ ،اﮔﺮ ﺟﻬﺖ ﻣﻴﻞ ﻣﺘﻐﻴﺮ را ﻧﻨﻮﻳﺴﻴﻢ ،ﭘﻴﺶ ﻓﺮضِ ﺣﺪ ﻳﻌﻨﻲ x → 0اﻋﻤﺎل ﻣﻲﺷﻮد.
ﻣﺜﺎل ﻫﺎ: cos(x + h)− cosx ﺗﻌﻴﻴﻦ h
lim ∞→h
li = 0
>> syms x h )>> lm = '(cos(x+h;'cos(x))/h ) >> li = limit(lm, h, inf hﻣﺘﻐﻴﺮ ﻣﻴﻞ ﻛﻨﻨﺪه و (∞) infﻣﻘﺼﺪ ﺗﻤﺎﻳﻞ اﺳﺖ %
ﻣﻲﺗﻮان ﺑﻪ اﻳﻦ ﺻﻮرت ﻧﻮﺷﺖ ، lm = sym('(cos(x+h) - cos(x))/h') :اﻣﺎ ﻣﺘﻠﺐ اﺟﺎزه ﻣﻲدﻫﺪ ﻛﻪ ﺗﺎﺑﻊ را ﺑﻪ ﺻﻮرت رﺷﺘﻪ ﺗﻌﺮﻳﻒ ﻛﺮده ،ﺳﭙﺲ ﻋﻤﻠﻴﺎت ﻧﻤﺎدﻳﻦ را اﻧﺠﺎم دﻫﻴﻢ .ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﻧﻮﺷﺘﻦ ﺗﻮاﺑﻊ راﺣﺖﺗﺮ و ﻧﻤﺎﻳﺶ آنﻫﺎ واﺿﺢﺗﺮ ﻣﻲﺷﻮد.
ﺳﺆال :ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ رﺷﺘﻪاي ﺑﻮدن lmﻣﺘﻐﻴﺮ liاز ﭼﻪ ﻧﻮع اﺳﺖ؟
ﺗﻌﻴﻴﻦ ﻣﺸﺘﻖ از ﻃﺮﻳﻖ ﻳﺎﻓﺘﻦ ﺣﺪ
)lz = -sin(x
>> syms x h )>> lm = '(cos(x+h'cos(x))/h ) >> lz = limit(lm, h, 0
101
ﺣﺪ و ﮔﺮاﻳﺶ ﺣﺪ ans = NaN
ﺣﺪ ﺗﺎﺑﻊ 1/xرا ﺑﻪ ازاي x → 0ﺑﺪون ﮔﺮاﻳﺶ )>> limit(1/x
ﺣﺪ ﺗﺎﺑﻊ 1/xرا ﺑﻪ ازاي x → 0ﺑﺎ ﮔﺮاﻳﺶ ﭼﭗ ans = -inf )'>> limit(1/x,x,0,'left ﺣﺪ ﺗﺎﺑﻊ 1/xرا ﺑﻪ ازاي x → 0ﺑﺎ ﮔﺮاﻳﺶ راﺳﺖ ans = inf )'>> limit(1/x,x,0,'right
7-10ﺗﺎﺑﻊ ام -ﻓﺎﻳﻠﻲ ﻧﻤﺎدﻳﻦ ﻣﺜﺎل: sin x ﺗﺎﺑﻊ ام -ﻓﺎﻳﻠﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﻪ ازاي ﻳﻚ آرﮔﻮﻣﺎن ﻧﻤﺎدﻳﻦ ﻣﻘﺪار x
را ﺑﺮﮔﺮداﻧﺪ ،آن را در دﻳﺮﻛﺘﻮري ﺟﺎري ﺿﺒﻂ ﻛﻨﻴﺪ.
اﻳﻦ ﺗﺎﺑﻊ را ﺑﺎ ﻳﻚ آرﮔﻮﻣﺎن ﻧﻤﺎدﻳﻦ ﺑﺪون ﻣﻘﺪار و ﻳﻚ آرﮔﻮﻣﺎن ﻧﻤﺎدﻳﻦ ﻣﻘﺪار دار از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ .ﻫﻢﭼﻨﻴﻦ ﺑﺮاي آن ﻳﻚ راﻫﻨﻤﺎ ﺑﻨﻮﻳﺴﻴﺪ و آن را ﻧﻴﺰ اﺟﺮا ﻛﻨﻴﺪ. % Function M-File sinc.m )function z = sinc(x %SINC The symbolic sinc function sin(x)/x. %This function receives a symbolic variable as the input argument. ))if isequal(x,sym(0 ;z = 1 else ;z = sin(x)/x end >> syms q )>> sinc(q ans = sin(q)/q ans = 1
;)>> x = sym(0 )>> sinc(x
>> help sinc SINC The symbolic sinc function sin(x)/x. This function receives a symbolic variable as the input argument.
8-10ﺳﺮي ﻫﺎ ﺳﺮي ﺑﺎ دﺳﺘﻮر ) symsum(s,a,bﻣﺤﺎﺳﺒﻪ ﻣﻲﺷﻮد a,b .ﻣﻘﺎدﻳﺮ اﺑﺘﺪاﺋﻲ و اﻧﺘﻬﺎﺋﻲ ﭘﺎراﻣﺘﺮ ﺳﺮي را ﻣﻌﻴﻦ ﻣﻲﻛﻨﻨﺪ
ﻣﺜﺎل: ∞ 1 ﻣﺤﺎﺳﺒﻪ ﺳﺮي: ∑ 2 k k =1
>> syms x k )>> s1 = symsum(1/k^2,1,inf s1 = 1/6*pi^2
9-10ﺗﻮاﺑﻊ آﺳﺎن ﺳﺎز ﺑﺮاي ﻧﻤﺎﻳﺶ واﺿﺢﺗﺮ ﻋﺒﺎرات ﻧﻤﺎدﻳﻦ از اﻳﻦ ﺗﻮاﺑﻊ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ .اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ آﺳﺎن ﺳﺎز ﻫﻤﻴﺸﻪ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﻫﻢراه ﻧﻴﺴﺖ و ﺑﺴﺘﮕﻲ ﺑﻪ ﻫﻮﺷﻤﻨﺪي ﻧﺮماﻓﺰار دارد.
102
ﺗﺎﺑﻊ
)(pretty
ﻳﻚ ﻋﺒﺎرت را ﺑﻪ ﻓﺮم ﺟﺒﺮي ﺧﻮاﻧﺎ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ.
ﻣﺜﺎل: >> syms x ;))>> f1 = (5+4*cos(x))^3*sin(x)^2*(1+sin(x )>> pretty(f1 3 2 ))(5 + 4 cos(x)) sin(x) (1 + sin(x
ﺗﻮاﺑﻊ )( collectو
)(expand
ﻣﻜﻤﻞ ﻳﻚ دﻳﮕﺮ ﻫﺴﺘﻨﺪ و ﻋﺒﺎرات ﻧﻤﺎدﻳﻦ را ﺑﺎز ﻳﺎ ﺑﺴﺘﻪ ﻣﻲﻛﻨﻨﺪ.
ﻣﺜﺎل:
ﻓﺎﻛﺘﻮرﮔﻴﺮي
ans = (y-1)*x^2+(y-2)*x
>> syms x y ;>> f = x^2*y + y*x - x^2 - 2*x )>> collect(f
ans = 4*x^2+20*x+25
>> g = (2*x+5)^2 )>> expand(g
)(factor
ﻣﺜﺎل: از ﻋﺒﺎرت x 3 − 1و ﻋﺪد ﻧﻤﺎدﻳﻦ 625ﻓﺎﻛﺘﻮر ﻣﻲﮔﻴﺮﻳﻢ.
ﺳﺎده ﻛﺮدن ﺑﺎ
)gf =(x-1)*(x^2+x+1
>> syms x >> g = x^3-1 )>> gf = factor(g
ans = (5)^4
;)>> y = sym(625 )>> factor(y
)(simplify
ﺳﻌﻲ ﻣﻲﻛﻨﺪ ﻫﺮ ﻋﺒﺎرت ﻧﻤﺎدﻳﻦ را ﻳﻪ ﺳﺎدهﺗﺮﻳﻦ ﻓﺮم ﻧﻤﺎدﻳﻦ ﻧﻤﺎﻳﺶ دﻫﺪ.
ﻣﺜﺎل: 2 5
2
2
y x
ﻋﺒﺎرات e e , sin x + cos x, x xرا ﺳﺎده ﻣﻲﻛﻨﻴﻢ.
ﺳﺎده ﻛﺮدن ﺑﺎ
)ans = exp(y+x
>> syms x y ))>> simplify(exp(y)*exp(x
ans = 1
)>> simplify(sin(x)^2+cos(x)^2
ans = x^7
)>> simplify(x^2*x^5
)(simple
اﻳﻦ دﺳﺘﻮر اﻧﻮاع دﺳﺘﻮرﻫﺎي ﺳﺎدهﺳﺎزي را ﻛﻪ ﺑﺮ روي ﻳﻚ ﻋﺒﺎرت ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ ،اﺟﺮا ﻣﻲﻛﻨﺪ .ﺧﻮدﺗﺎن simpleرا ﺑﺮاي ) sin(x)*cos(xاﺟﺮا ﻛﻨﻴﺪ.
10-10ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﻧﻤﺎدﻳﻦ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮي از ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮ ﻧﻤﺎدﻳﻦ ﺑﻪ ﻃﺮﻳﻖ زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد. 103
>> syms a b c >> M = [a b c; a/2 b/2 c/2; c a b] >> s2 = sum(M(2,:))% ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ ردﻳﻒ دو
M = [ a, b, c] [ 1/2*a, 1/2*b, 1/2*c] [ c, a, b] s2 = 1/2*a+1/2*b+1/2*c
>> a = sym(-6); b = sym(-6); c = sym(-6);%ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻨﻲ ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎ ﻧﺴﺒﺖ ﻣﻲدﻫﻴﻢ >> sv = eval(s2)% ﻋﺪد ﻧﻤﺎدﻳﻦ اﺳﺖ
sv = -9
>> isobject(sv)
ans = 1
: ﻗﺎﺑﻞ اﺳﺖdouble() ﺑﺎ >> svd = double(sv)%ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد ﻣﺤﺎﺳﺒﺎﺗﻲ
svd = -9
>> isnumeric(svd)
ans = 1
ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮي از ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ را ﺑﺮاﺑﺮ ﻣﻘﺪارx و-1 را ﺑﺮاﺑﺮ ﻣﻘﺪار ﻧﻤﺎدﻳﻦa ، در ﻣﺎﺗﺮﻳﺲِ ﻣﺸﺘﻖ، ﻣﺸﺘﻖ ﻣﻲﮔﻴﺮﻳﻢ،ﻣﺎﺗﺮﻳﺲ زﻳﺮ را ﺗﺸﻜﻴﻞ ﻣﻲدﻫﻴﻢ . ﻗﺮار ﻣﻲدﻫﻴﻢpi/4 ﻧﻤﺎدﻳﻦ ┌ ┐ │ cos(a*x) sin(a*x)│ │ │ │-sin(a*x ) cos(a*x)│ └ ┘ >> syms a x >> M = [cos(a*x) sin(a*x ); -sin(a*x ) cos(a*x)]; Md = [ -sin(a*x)*a, cos(a*x)*a] >> Md = diff(M) [ -cos(a*x)*a, -sin(a*x)*a] >> a = sym(-1); Mde = [ -sin(x), -cos(x)] >> Mde = eval(Md) [ cos(x), -sin(x)] >> x = sym(pi/4); >> MM = eval(Mde) >> double(MM)
MM = [ -1/2*2^(1/2), -1/2*2^(1/2)] [ 1/2*2^(1/2), -1/2*2^(1/2)] ans = -0.7071 0.7071
-0.7071 -0.7071
104
11-10رﺳﻢ ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﺑﺎ
)(ezplot
ﻣﺜﺎل: رﺳﻢ ﺗﺎﺑﻊ
1 2 x 2
−
:e >> syms x (>> k = sym;))1/sqrt(2 ;)>> f = exp(k*x^2 )>> ezplot(f
ﺷﻜﻞ 2-10
12-10درﻳﺎﻓﺖ راﻫﻨﻤﺎ در ﻣﻮرد رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ ﺑﺮاي درﻳﺎﻓﺖ راﻫﻨﻤﺎ در ﻣﻮرد رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ اﻳﻦ دﺳﺘﻮرﻫﺎ را از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ: help mfunlist, mhelp index[packages], mhelp diff ﭘﻴﺸﻮﻧﺪ mدر ﻛﻠﻤﺎت ﻓﻮق ﺑﻪﺟﺎي Mapleآﻣﺪه اﺳﺖ.
ﻫﻢﭼﻨﻴﻦ ﻣﻲﺗﻮاﻧﻴﺪ ﻣﻨﻮي Help_MATLAB Helpرا اﺟﺮا و راﻫﻨﻤﺎي Symbolic Math Toolboxرا ﻣﻄﺎﻟﻌﻪ ﻛﻨﻴﺪ.
105
13-10ﺗﻤﺮﻳﻦ -1ﺗﺎﺑﻊ ) tan(y/xرا ﺗﻌﺮﻳﻒ ﻛﺮده ﻣﺸﺘﻖﻫﺎي آن را ﻧﺴﺒﺖ ﺑﻪ ﻫﺮﻳﻚ از دو ﻣﺘﻐﻴﺮ ﺟﺪاﮔﺎﻧﻪ ﺑﻪ دﺳﺖ آورﻳﺪ. -2ﻣﺸﺘﻖﻫﺎي اول و دوم ﺗﺎﺑﻊ ) exp(i*xرا ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ. -3ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ aرا ﻣﺴﺎوي -5ﻧﻤﺎدﻳﻦ ﻗﺮار داده b = a^2 + aو z = b^.5را ﺑﻪ دﺳﺖ آورده ﻣﻘﺎدﻳﺮ ﻋﺪدي آنﻫﺎ را ﻧﻴﺰ ﭘﻴﺪا ﻛﻨﻴﺪ. -4ﻣﺎﺗﺮﻳﺲ Mgi = magic(3)/5را اﻳﺠﺎد ﻛﻨﻴﺪ .آن را ﺑﻪ ﺻﻮرت ﻧﻤﺎدﻳﻦ )Mgs = sym(Mgi
درآورﻳﺪ .ﺳﭙﺲ دﺗﺮﻣﻴﻨﺎن ) det(Mgsو ﻣﺎﺗﺮﻳﺲ ﻣﻌﻜﻮس ) inv(Mgsآن را ﺑﻪ دﺳﺖ آورﻳﺪ. -5ﻣﺸﺘﻖ x^2+2*xرا ﺑﺎ اﺳﺘﻔﺎده از ﺟﺎيﮔﺰﻳﻨﻲ و ﺣﺪ ﺑﻪ دﺳﺖ آورﻳﺪ. x -6اﻳﻦ ﺣﺪ را lim (1 + )n n ∞→n -7ﻣﺸﺘﻖ ﺗﺎﺑﻊ ) r = sqrt(x^2 + y^2 + z^2را ﺑﻪ دﺳﺖ آورﻳﺪ .ﺗﺎﺑﻊ ) ri = int(rرا ﺑﻪ
ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ.
دﺳﺖ آورده ،و ﺑﺎ دﺳﺘﻮر ) pretty(riآنرا ﺧﻮاﻧﺎﺗﺮ ﻧﻤﺎﻳﺶ دﻫﻴﺪ. -8ﻣﻨﺤﻨﻲ ﺗﺎﺑﻊ زﻳﺮ و ﻣﻨﺤﻨﻲ ﻣﺸﺘﻖ آن را رﺳﻢ ﻛﻨﻴﺪ: )f2 =32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x ∞ k را ﺑﺮاي 0 < x < 1ﺣﺴﺎب ﻛﻨﻴﺪ. -9ﺳﺮي ∑ x k=0 -10ﻣﺎﺗﺮﻳﺲ ] [a b c; a/2 b/2 c/2; c a bرا ﺗﺸﻜﻴﻞ دﻫﻴﺪ .ﺣﺎﺻﻞﺟﻤﻊ ﻋﻨﺎﺻﺮ ردﻳﻒ 2آنرا ﺑﻪ
ﺻﻮرت ﻧﻤﺎدﻳﻦ ﺣﺴﺎب ﻛﻨﻴﺪ .ﻣﻘﺪار ﻋﺪدي اﻳﻦ ﺣﺎﺻﻞﺟﻤﻊ را در ازاي a = b = c = -6ﺑﻪ دﺳﺖ آورﻳﺪ. -11ﻣﻌﺎدﻟﻪ a*x^3-2*a*x+1را ﺣﻞ ﻛﻨﻴﺪ ،ﺳﭙﺲ ﺑﺎ دﺳﺘﻮر )( prettyرﻳﺸﻪﻫﺎ را ﻧﻤﺎﻳﺶ دﻫﻴﺪ .ﺑﻪ ازاي a = -1ﻣﻘﺎدﻳﺮ ﻋﺪدي رﻳﺸﻪﻫﺎ را ﺑﻪ دﺳﺖ آورﻳﺪ. d2u du d3u (0)=-1, =)(0 π اوﻟﻴﻪ ﺷﺮاﺋﻂ ﺑﺎ را -12ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ = u dx dx2 dx3
u(0)=1,ﺣﻞ ﻛﻨﻴﺪ.
-13ﺷﺪت ﺟﺮﻳﺎن ﻳﻚ ﻣﺪار RLCرا ﺑﺮاي ω = 1ﺑﺎ ﻣﻘﺎدﻳﺮ ﻳﻚ ﺑﺮاي ﻋﻨﺎﺻﺮ ﻣﺪار ،ورودي ﺳﻴﻨﻮﺳﻲ ،و ﺑﺎ ﺷﺮاﺋﻂ اوﻟﻴﻪ ﺻﻔﺮ ﺑﻪدﺳﺖ آورده و رﺳﻢ ﻛﻨﻴﺪ .راﻫﻨﻤﺎ :ﺑﺮاي ﻧﺸﺎﻧﻪ ﺷﺪت ﺟﺮﻳﺎن ﺑﻪﺟﺎي iاز curاﺳﺘﻔﺎده ﻛﻨﻴﺪ. R=1 cur
L=1
sin t
C=1
-14ﻓﺮﻣﻮل زﻳﺮ ،ﺣﻞ ﻳﻚ دﺳﺘﮕﺎه ﺑﺎ ﺷﺮاﺋﻂ اوﻟﻴﻪ f(0)=0,g(0)=1را ﻣﻲدﻫﺪ .ﭘﺎﺳﺦﻫﺎ را رﺳﻢ ﻛﻨﻴﺪ. )'[f,g] = dsolve('Df=3*f+4*g,Dg =-4*f+3*g','f(0) = 0,g(0)= 1
-15ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻳﺮ را ﺑﻪ ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ و دوﺑﺎره ﺑﻪ ﻛﺴﺮ ﻛﻠﻲ ﺑﺮﮔﺮداﻧﻴﺪ .ﺗﻐﻴﻴﺮ در ﺿﺮﻳﺐﻫﺎ و ﻧﺮﻣﺎل ﺷﺪن ﺿﺮﻳﺐ ﺗﺮم اول ﻣﺨﺮج را ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ:
-16ﺑﺎ اﺳﺘﻔﺎده از ﻓﺎﻛﺘﻮرﮔﻴﺮي ،ﺑﺎ ﻧﻮﺷﺘﻦ ﻳﻚ ام -ﻓﺎﻳﻞ ﺗﻮانﻫﺎي 1ﺗﺎ 6ﻋﺪد 3را در ﻳﻚ ﺟﺪول ﻧﻤﺎﻳﺶ دﻫﻴﺪ.
106
ﻓﺼﻞ 11ﻋﻤﻠﻴﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ 1-11ﺣﻞ ﻣﻌﺎدﻻت ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي ،دﺳﺘﻮرﻫﺎي )( rootsو
)(poly
دﺳﺘﻮر ) roots(dرﻳﺸﻪﻫﺎي ﭼﻨﺪﺟﻤﻠﻪاي را ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ ﻛﻪ ﺿﺮاﺋﺐ آن اﻋﻀﺎء ﺑﺮدار ]d = [n1 n2 ...
ﺑﺎﺷﻨﺪ .اﻳﻦ دﺳﺘﻮر از روشﻫﺎي ﭘﻴﺸﺮﻓﺘﻪي ﻣﺤﺎﺳﺒﺎت ﻋﺪدي ﺑﺮاي رﺳﻴﺪن ﺑﻪ رﻳﺸﻪﻫﺎ اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ و ﻧﻴﺎزي ﺑﻪ ﺣﺪس اوﻟﻴﻪ ﻧﺪارد roots() .رﻳﺸﻪﻫﺎي ﻣﻮﻫﻮﻣﻲ و ﺣﻘﻴﻘﻲ را ﺑﻪ دﺳﺖ ﻣﻲآورد. دﺳﺘﻮر ) poly(bﭼﻨﺪ ﺟﻤﻠﻪاي را ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ ﻛﻪ رﻳﺸﻪﻫﺎي آن اﻋﻀﺎء ﺑﺮدار bﺑﺎﺷﻨﺪ .اﻳﻦ دو ﺗﻮاﺑﻊ ﻣﻌﻜﻮس ﻳﻚ- دﻳﮕﺮ ﻫﺴﺘﻨﺪ.
ﻣﺜﺎل ﻫﺎ: رﻳﺸﻪي ﻣﻌﺎدﻟﻪي ﭼﻨﺪ ﺟﻤﻠﻪاي )]>> r1 = roots([3,4.6,-5.8 r1 = -2.3545 0.8211 )]>> r2 = roots([3,4.6,5.8 r2 = -0.7667 + 1.1600i -0.7667 - 1.1600i
ﺿﺮاﺋﺐ ﭼﻨﺪ ﺟﻤﻠﻪاي از روي رﻳﺸﻪﻫﺎ )]-4.0001
ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي
3.0001
-2.0000
-4.0001
3.0001
>> rr = roots( [1.0000 rr = 1.6506 0.1747 + 1.5469i 0.1747 - 1.5469i )>> poly(rr ans = 1.0000 -2.0000
)(fzero
)( fzeroﺳﻌﻲ ﻣﻲﻛﻨﺪ ﻛﻪ ﻣﻘﺪار رﻳﺸﻪ واﻗﻌﻲ را ﺣﻮل و ﺣﻮش ﻳﻚ ﺣﺪس اوﻟﻴﻪ ﻳﺎ ﻧﻘﻄﻪ ﺷﺮوع starting pointﻛﻪ دﺳﺘﻲ وارد ﻣﻲﺷﻮد ،ﭘﻴﺪا ﻛﻨﺪ )( fzeroدر واﻗﻊ ﻣﺤﻞ ﺗﻐﻴﻴﺮ ﻋﻼﻣﺖ ﺗﺎﺑﻊ را ﭘﻴﺪا ﻣﻲﻛﻨﺪ، ﻟﺬا ﺑﻬﺘﺮ اﺳﺖ ﺑﺮاي ﺗﻮاﺑﻊ ﭘﻴﻮﺳﺘﻪ ﺑﻪﻛﺎر رود. اﻳﻦ ﺗﺎﺑﻊ ﻛﻪ ﺑﻪاﻳﻦ ﺷﻜﻞ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد ) fzero(f,x0دو آرﮔﻮﻣﺎن اﺻﻠﻲ دارد .ﺗﺎﺑﻊ fﻛﻪ ﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﺻﻮرت رﺷﺘﻪ، ﮔﻴﺮه ،ﻳﺎ ﺧﻂ ﻓﺮﻣﺎن وارد ﺷﻮد .ﺣﺪس اوﻟﻴﻪ ، x0ﻣﻘﺪاري اﺳﺖ ﺣﺘﻲاﻻﻣﻜﺎن ﻧﺰدﻳﻚ ﺑﻪ رﻳﺸﻪ و دﺳﺘﻲ وارد ﻣﻲﺷﻮد. ﭘﺎراﻣﺘﺮﻫﺎي دﻳﮕﺮ: Pﻛﻪ ﺑﻪ اﻳﻦ ﺻﻮرت وارد ﻣﻲﺷﻮد ) . fzero(f,X0,Pدر ﺻﻮرت ﻣﺮاﺟﻌﻪ ﺑﻪ ﮔﻴﺮه ﺗﺎﺑﻊ P ،ﻣﻘﺪار ورودي ﺗﺎﺑﻊ f
ﺧﻮاﻫﺪ ﺑﻮد. optionsﻛﻪ ﺑﻪ اﻳﻦ ﺻﻮرت وارد ﻣﻲﺷﻮد ) fzero(f,X0,optionsﺑﺮاي درك ﺑﻬﺘﺮ optionsﺑﻪ ﻣﺜﺎل زﻳﺮ ﻳﺎ help optimsetﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ.
ﻣﺜﺎل ﻫﺎ: ارﺳﺎل ﺑﻪ ﺻﻮرت رﺷﺘﻪ ;')>> y = 'cos(x)+sin(x)+log(x )>> X0 = fzero(y,1 X0 = 0.2885
107
رﻳﺸﻪ را اﻣﺘﺤﺎن ﻣﻲﻛﻨﻴﻢ: )>> cos(X0) + sin(X0) + log(X0 ans = 0
ارﺳﺎل ﺑﻪ ﺻﻮرت ﮔﻴﺮه )function y = fz(q ;)y = exp(q)*sin(q)+log(q ;>> x0 = 1 )>> rt = fzero(@fz,x0 rt = 0.4771
اﮔﺮ ﻣﺎﻳﻞ ﺑﺎﺷﻴﻢ ﺗﻌﺪاد دﻓﻌﺎت ﺗﻜﺮار ﺑﺮاي رﺳﻴﺪن ﺑﻪ ﻧﺘﻴﺠﻪ ﻧﻤﺎﻳﺶ داده ﺷﻮد: ;>> options = optimset('Display','iter'); x0 = 1 )>> rt = fzero(@fz,x0,options
ﻧﺘﻴﺠﻪ را ﺧﻮدﺗﺎن اﻣﺘﺤﺎن و ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ.
ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﻏﻴﺮ ﺧﻄﻲ ﺑﺎ)() fsolveﺟﻌﺒﻪ اﺑﺰار ﺑﻬﻴﻨﻪ ﺳﺎزي (Optimization Toolbox ﻓﺮم ﻛﻠﻲ اﻳﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﻜﻞ زﻳﺮ اﺳﺖ: ) x = fsolve(fun,x0,options,P1,P2, ...
funﺗﺎﺑﻊ ﻣﺨﺼﻮﺻﻲ اﺳﺖ ﻛﻪ ﻓﺮم ﻣﻌﺎدﻻت ﻏﻴﺮﺧﻄﻲ ﺧﻮد را در آن ﻣﻲﮔﺬارﻳﻢ ،و وﻳﮋه ﻛﺎرﺑﺮد در آرﮔﻮﻣﺎن )( fsolveﻳﺎ ﻧﻈﺎﺋﺮش ﻣﺎﻧﻨﺪ )( ode45اﺳﺖ .ﺑﻘﻴﻪ ﭘﺎراﻣﺘﺮﻫﺎ ﻣﺸﺎﺑﻪ fzeroﻫﺴﺘﻨﺪ .اﮔﺮ ﺳﻤﺖ ﭼﭗ ﺗﺴﺎوي ] [x,fvalﻗﺮار دﻫﻴﻢ ،ﺟﻮاب ﻣﻌﺎدﻻت دﺳﺘﮕﺎه ﻧﻴﺰ در ازاي رﻳﺸﻪ ﻫﺎي ﺑﻪ دﺳﺖ آﻣﺪه ﭼﺎپ ﺧﻮاﻫﻨﺪ ﺷﺪ.
ﻣﺜﺎل: دﺳﺘﮕﺎه زﻳﺮ را ﺣﻞ ﻣﻲﻛﻨﻴﻢ. -x
x2 - x1 2 = 0 -x1 2x1- x2 = 0 )function F = fsl(x ;)F(1) = x(2)-x(1) ^ -x(2 ;)F(2) = 2*x(1)- x(2) ^ -x(1 % The following form of writing F is also accepted ;)% F = [x(2)-x(1) ^ -x(2 % ;])2*x(1)- x(2) ^ -x(1
-0.00
>> format bank ;]>> x0 = [2 2 ;)>> [a,fv] = fsolve(@fsl,x0 a = 2.98 0.55 fv = -0.00
ﻧﻮﺷﺘﻦ fvﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ ﻣﺸﺎﺑﻪ ﻋﻤﻞ زﻳﺮ اﺳﺖ: -0.00
ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺧﻄﻲ ﺑﻬﺘﺮ اﺳﺖ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺧﻄﻲ ﺑﺎ اﺳﺘﻔﺎده از ﺗﻘﺴﻴﻢ راﺳﺖ ﺑﻪ ﭼﭗ ﻣﺎﺗﺮﻳﺴﻲ ﺣﻞ ﺷﻮد.
ﻣﺜﺎل: دﺳﺘﮕﺎه ﻣﻌﺎدﻻت زﻳﺮ را در ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﻣﺘﻠﺐ ﺣﻞ ﻛﻨﻴﺪ.
108
)>> fsl(a ans = -0.00
1 1 y + z = 1 2 3 1 1 1 x + y + z = 1 2 3 4 1 1 1 x + z = 1 y + 4 3 5
x
+
ﺻﻮرت ﻣﺎﺗﺮﻳﺴﻲ دﺳﺘﮕﺎه ﻓﻮق ﭼﻨﻴﻦ اﺳﺖ: ││1
││X1
×
││X1│ = │1 ││1
││X1
│ 1/3 │ 1/5
1/2 1/4
│ 1/4
1/3
│ 1 │ 1/3 │ 1/2
ﻛﻪ ﺑﻪ ﺻﻮرت M * X = Bﻧﻤﺎﻳﺶ داده ﺷﺪه و ﺑﺎ ﻓﺮﻣﻮل X = M\Bﺣﻞ ﻣﻲﺷﻮد: ;]>> M = [ 1 1/2 1/3; 1/2 1/3 1/4; 1/3 1/4 1/5 ; ']>> B = [1 1 1 >> X = M\B X = 3.0000 -24.0000 30.0000
ﺣﻞ ﻣﻌﺎدﻻت ﺑﺎ دﺳﺘﻮر )() solveﺟﻌﺒﻪ اﺑﺰار رﻳﺎﺿﻴﺎت ﺳﻤﺒﻠﻴﻚ (Symbolic Math Toolbox از دﺳﺘﻮر ) solve(funﺑﺮاي ﺗﻌﻴﻴﻦ ﺳﻤﺒﻠﻴﻚ رﻳﺸﻪﻫﺎي ﻣﻌﺎدﻻت اﺳﺘﻔﺎده ﻣﻲﺷﻮد fun .دﺳﺘﮕﺎﻫﻲ از ﻣﻌﺎدﻻت اﺳﺖ. ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﺣﺮف ﺑﻪ xاﺳﺖ ،اﻣﺎ در ﻓﺮم ) solve(fun,varﭘﺎراﻣﺘﺮ varﺗﻌﻴﻴﻦ ﻛﻨﻨﺪه ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ اﺳﺖ. ﻣﻌﺎدﻟﻪ funﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﺻﻮرت ﺳﻤﺒﻠﻴﻚ ﻳﺎ ﺑﻪ ﺻﻮرت رﺷﺘﻪ ﻧﻮﺷﺘﻪ ﺷﻮد .اﮔﺮ ﻃﺮف راﺳﺖ ﻣﻌﺎدﻟﻪ ﺻﻔﺮ ﺑﺎﺷﺪ ﻣﻲﺗﻮاﻧﻴﻢ آن- را ﻧﻨﻮﻳﺴﻴﻢ ،در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﺑﺎﻳﺪ ﻃﺮف راﺳﺖ ﺑﻌﺪ از ﻋﻼﻣﺖ ﺗﺴﺎوي ﻧﻮﺷﺘﻪ ﺷﻮد. اﮔﺮ ﻣﻌﺎدﻟﻪ داراي ﺿﺮاﺋﺐ ﻋﺪدي ﺑﺎﺷﺪ ،ﭘﺎﺳﺦﻫﺎي ﻋﺪدي ﺳﻤﺒﻠﻴﻚ ﺣﺎﺻﻞ ﻣﻲﺷﻮد ،ﻛﻪ ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد اﺳﺖ .اﮔﺮ ﻣﻌﺎدﻟﻪ داراي ﺿﺮاﺋﺐ ﺳﻤﺒﻠﻴﻚ ﺑﺎﺷﺪ ،ﭘﺎﺳﺦﻫﺎي ﺳﻤﺒﻠﻴﻚ ﺣﺎﺻﻞ ﻣﻲﺷﻮد.
ﻣﺜﺎل ﻫﺎ: ﭘﺎﺳﺦ ﻋﺪدي >> syms x ))>> f1 = (5+4*cos(x))^3*sin(x)^2*(1+sin(x )>> z = solve(f1 ])z = [ pi-acos(5/4 [ ]0 [ ]-1/2*pi
رﻳﺸﻪﻫﺎ را از ﺣﺎﻟﺖ ﻧﻤﺎدﻳﻦ ﺑﻪ ﻋﺪد ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﻴﻢ: )>> zd = double(z zd = 3.1416 - 0.6931i 0 -1.5708
ﭘﺎﺳﺦ ﺳﻤﺒﻠﻴﻚ >> syms a b c x ;>> S = a*x^2 + b*x + c )>> X = solve(S ]))X = [1/2/a*(-b+(b^2-4*a*c)^(1/2 ]))[1/2/a*(-b-(b^2-4*a*c)^(1/2
ﺗﻐﻴﻴﺮ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ را bﻣﻲﮔﻴﺮﻳﻢ و ﺑﺮﺣﺴﺐ bﺣﻞ ﻣﻲﻛﻨﻴﻢ ،ﻟﺬا xﺑﻪ ﺻﻮرت ﭘﺎراﻣﺘﺮ ﻋﻤﻞ ﻣﻲﻛﻨﺪ: 109
)>> solve(S,b ans = -(a*x^2+c)/x
ﺣﻞ دﺳﺘﮕﺎه دو ﻣﻌﺎدﻟﻪ ﺑﺎ رد ﻣﻌﺎدﻻت ﺑﻪ ﺻﻮرت رﺷﺘﻪ 2 2
x y
0
]0
-2*a
= 0 y - a = 0 x2 ; '>> q = 'x^2*y^2, x-y/2-a )>> [x,y] = solve(q ]x = [ 0 0 a a y = [ -2*a
رد ﻣﻌﺎدﻻت ﺑﻪ ﺻﻮرت ﺳﻤﺒﻠﻴﻚ و ﻣﺤﺎﺳﺒﻪ ﻣﻘﺎدﻳﺮ ﻋﺪدي
]0
ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي ﺑﺎ
>> syms x y a )>> [x,y] = solve(x^2*y^2, x-y/2-a ;)>> a = sym(1 )>> eval(x), eval(y ]ans = [ 0 0 1 1 ans =[ -2 -2 0
ODE45
ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر اﻳﻦ ﮔﻮﻧﻪ اﺳﺖ: )[T,X] = ODE45(odefun,tspan,X0,options,p1,...
odefunﺗﺎﺑﻊ ﻣﺨﺼﻮﺻﻲ اﺳﺖ ﻛﻪ ﻓﺮم ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ﺧﻮد را در آن ﻣﻲﮔﺬارﻳﻢ ،و وﻳﮋه ﻛﺎرﺑﺮد در آرﮔﻮﻣﺎن )( ode45ﻳﺎ ﻧﻈﺎﺋﺮش ﻣﺎﻧﻨﺪ )( fsolveاﺳﺖ. tspanﻓﺎﺻﻠﻪاي اﺳﺖ ﻛﻪ در آن ﺗﺎﺑﻊ اﻧﺘﮕﺮال ﮔﻴﺮي ﺷﺪه وﺟﻮد دارد )ﻣﻨﺤﻨﻲ ﻳﺎ ﺷﻜﻞ ﻣﻮج ﺟﻮاب ﻣﻌﺎدﻻت در آن ﻓﺎﺻﻠﻪ ﺗﺮﺳﻴﻢ ﻣﻲﺷﻮد(. X0ﺑﺮدار ﺷﺮاﺋﻂ اوﻟﻴﻪ اﺳﺖ optionsﻳﻚ ﺑﺮدار از ﻧﻮع ﺳﺎﺧﺘﺎر structureاﺳﺖ و ﺷﺎﻣﻞ اﻧﺘﺨﺎب ﻫﺎﺋﻲ اﺳﺖ ﻛﻪ ﺗﻮﺳﻂ ﻣﻘﺎدﻳﺮ odeset
ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﻧﺪ .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ راﻫﻨﻤﺎي آن ﻣﺮاﺟﻌﻪ ﺷﻮد. p1,...ﺑﺮدارﻫﺎﺋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ در ﺻﻮرت وﺟﻮد داﺷﺘﻦ در آرﮔﻮﻣﺎن odefunﺑﻪ آن رد ﻣﻲﺷﻮﻧﺪ. Xﺑﺮدار ﺳﺘﻮﻧﻲ ﻣﻌﺎدﻟﻪ ﻫﺎي ﭘﺎﺳﺦ اﺳﺖ ﻛﻪ ﺑﺮﺣﺴﺐ ﺑﺮدار Tﺑﺎﻳﺪ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮد .ﻣﺜﻼً اﮔﺮ دو ﻣﻌﺎدﻟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﻢ، ) X(:,1ﺑﺮدار ﻣﻌﺎدﻟﻪ اول و ) X(:,2ﻣﻌﺎدﻟﻪ دوم ﻫﺴﺘﻨﺪ.
ﻣﺜﺎل: دﺳﺘﮕﺎه ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻞ زﻳﺮ را ﺣﻞ ﻛﻨﻴﺪ. dx1/dt = x2 dx2/dt = -2δ dx1/dt - x1
اﺑﺘﺪا ﻫﺮ دو ﻣﻌﺎدﻟﻪ را در ﺗﺎﺑﻊ زﻳﺮ ﺷﺒﻴﻪ ﺳﺎزي ﻣﻲﻛﻨﻴﻢ: )function dx = frosc(t,x,del )dx = zeros(2,1,1 ;)dx(1) = x(2 ;)dx(2) = -2*del*x(2)-x(1 % dx = [x(2); -2*del*x(2)-x(1)]; % this form is also correct ﭘﺎراﻣﺘﺮﻫﺎي ﺿﺮوري را در ODE45ﺟﺎيﮔﺰﻳﻦ ﻣﻲﻛﻨﻴﻢ ،ﭼﻮن optionsﻧﺪارﻳﻢ ﺑﻪ ﺟﺎي آن ﺑﺮدار ﺗﻬﻲ ﻣﻲﮔﺬارﻳﻢ.
110
% odee.m ;echo off ;odefun = @frosc ;)tspan = linspace(0,40 ;]X0 = [1 1 ;][ = options ;]p = [0.1 1 5 %underdamp, damp, %over damp clf hold on for k = 1:3 [T,X] = ... ODE45(odefun,tspan,... ;))X0,options,p(k ))plot(T,X(:,1 end hold off
ﺷﻜﻞ 1-11
ﺳﺆال :دو ﻣﻌﺎدﻟﻪ ﻓﻮق را ﺑﻪ ﺻﻮرت ﺗﻚ ﻣﻌﺎدﻟﻪ x + 2δ dx/dt - d2x/dt2 = 0در آورﻳﺪ و ﺗﺤﻘﻴﻖ ﻛﻨﻴﺪ ﻛﻪ ﻳﻚ ﻣﻌﺎدﻟﻪ ﻧﻮﺳﺎن ﻛﻨﻨﺪه )ﻧﻈﻴﺮ ﻣﺪار LCﻳﺎ ﺑﺎر -ﻓﻨﺮ( اﺳﺖ .ﺿﺮﻳﺐ δﻧﺸﺎن دﻫﻨﺪه ﻛﺪام ﻋﺎﻣﻞ ﻓﻴﺰﻳﻜﻲ اﺳﺖ؟
ﺣﻞ ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي )ﺟﻌﺒﻪ اﺑﺰار رﻳﺎﺿﻴﺎت ﺳﻤﺒﻠﻴﻚ (Symbolic Math Toolbox دﺳﺘﻮر زﻳﺮ ﺑﺮاي ﺣﻞ ﺳﻤﺒﻮﻟﻴﻚ ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي ﺑﻪ ﻛﺎر ﻣﻲرود: )'r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v eqﻫﺎ ﻣﻌﺎدﻻت cond ،ﻫﺎ ﺷﺮاﺋﻂ اوﻟﻴﻪ ،و vﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ اﺳﺖ ،در ﺻﻮرت ﻧﺒﻮد آن ﻧﺰدﻳﻚ ﺗﺮﻳﻦ ﺣﺮف ﺑﻪ xﻣﺘﻐﻴﺮ
ﻣﺴﺘﻘﻞ ﻓﺮض ﻣﻲﺷﻮد.
ﻣﺜﺎل ﻫﺎ: dy ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ درﺟﻪ ﻳﻚ ﻣﺮﺗﺒﻪ اولِ = 1 + y 2 dx
ﺑﺪون ﺷﺮط اوﻟﻴﻪ و ﺑﺎ ﺛﺎﺑﺖِ C1 )'>> y = dsolve('Dy = 1 + y^2 )y = tan(t+C1
ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ ﺷﺮط اوﻟﻴﻪ y(0) = 1 )'>> y = dsolve('Dy = 1 + y^2', 'y(0) = 1 )y = tan(t+1/4*pi
ﺳﺆال :ﺟﻮاب ﻓﻮق را ﺑﺎ ﻣﺸﺘﻖﮔﻴﺮي اﻣﺘﺤﺎن ﻛﻨﻴﺪ. dx 2 ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ﻣﺮﺗﺒﻪ اول درﺟﻪ دو ) + x 2 = 1 dt )'>> x = dsolve('Dx)^2 + x^2 = 1','x(0) = 0 ])x = [-sin(t ])[ sin(t
( ﺑﺎ ﺷﺮط اوﻟﻴﻪ x(0) = 0
dy d2 y ﺑﺎ ﺷﺮاﺋﻂ اوﻟﻴﻪ (0) = 0 ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ﻣﺮﺗﺒﻪ دوم = cos 2 x- y dx dx 2 ;)'>> y = dsolve('D2y = cos(2*x) - y', 'y(0) = 1', 'Dy(0) = 0', 'x )>> simplify(y )y =-2/3*cos(x)^2+1/3+4/3*cos(x ⎧ df ⎪⎪ dt = 3f +4g ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ⎨ ⎪ dg = -4f +3g ⎪⎩ dt y(0) = 1,
111
)'>> [f g] = dsolve('Df = 3*f+4*g', 'Dg = -4*f+3*g )f = exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2 )g = -exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2 )>> pretty(f )exp(3 t) (cos(4 t) C1 + sin(4 t) C2
ﺗﺎﺑﻊ ﻣﻌﻜﻮس ﻳﻚ ﺗﺎﺑﻊ ﺑﺎ
)(finverse
اﻳﻦ دﺳﺘﻮر ﺗﺎﺑﻊ ﻣﻌﻜﻮس ﺗﺎﺑﻌﻲ ﻳﻚ ﺗﺎﺑﻊ رﻳﺎﺿﻲ را ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
ﻣﺜﺎل ﻫﺎ: ))>> finverse(sin(x )asin(x )>> finverse(exp(u-2*v),u )2*v+log(u
ﺗﺮﻛﻴﺐ ﺗﺎﺑﻌﻲ ﺑﺎ
compose
ﻋﺒﺎرت ) compose(f,gﺗﺎﺑﻊ ) g = g(yرا در ) f = f(xﺗﺮﻛﻴﺐ ﻣﻲﻛﻨﺪ ﺑﻪ ﻧﺤﻮي ﻛﻪ)) f(g(yﺑﻪ دﺳﺖ آﻳﺪ.
ﻣﺜﺎل: >> syms x y ;)>> f = 1/x + x^2; g = sin(y )>> compose(f,g )>> u = compose(f,g u = 1/sin(y)+sin(y)^2
2-11ﺗﻘﺮﻳﺐ ﺟﺒﺮي ﻣﻨﺤﻨﻲ ﻣﻌﺎدﻻت ﮔﺎﻫﻲ ﺿﺮوري اﺳﺖ ﻛﻪ راﺑﻄﻪي ﻧﺎﻣﺸﺨﺼﻲ را ﻛﻪ ﻣﺎﺑﻴﻦ ﺗﻌﺪادي داده وﺟﻮد دارد ﺑﻪ ﺻﻮرت ﻳﻚ ﻣﻌﺎدﻟﻪ ﺟﺒﺮي ﭼﻨﺪ ﺟﻤﻠﻪ- اي درآورﻳﻢ .ﺗﻮاﺑﻊ ﭼﻨﺪﺟﻤﻠﻪاي زﻳﺮ ﺑﺮاي اﻧﺠﺎم اﻳﻦ ﻛﺎر در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪهاﻧﺪ.
ﺑﺮﺧﻮراﻧﺪن ﻳﻚ ﻣﻨﺤﻨﻲ در ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي
)(Curve Fitting with polyfit(x,y,n), polyval
اﮔﺮ xو yدو ﺑﺮدار ﺑﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﻣﺴﺎوي و راﺑﻄﻪ ﺗﺎﺑﻌﻲ ﺟﺒﺮي ﻳﺎ ﻧﺎﻣﺸﺨﺺ ﺑﺎﺷﻨﺪ ،ﻳﻌﻨﻲ) . y = f(xدﺳﺘﻮر ) pf = polyfit(x,y,nﺿﺮاﺋﺐ ﻣﻌﺎدﻟﻪ درﺟﻪ y1 = f1(x) ، nرا در ﺑﺮدار pfﻗﺮار ﻣﻲدﻫﺪ )ﻃﺒﻌﺎً pf
داراي n+1ﻋﻀﻮ ﺧﻮاﻫﺪ ﺑﻮد( y1 .ﻣﻨﺤﻨﻲ ﺑﺮازش اﺳﺖ و ﻣﻘﺎدﻳﺮ ﺑﺮدار y1ﺑﻪ ﻣﻘﺎدﻳﺮ yﻧﺰدﻳﻚ ﻫﺴﺘﻨﺪ ،ﺑﻪ ﻧﺤﻮي ﻛﻪ: ≈ )y = f(x = )y1 = f1(x n n-1 pf(1)x + pf(2)x )+ ... +pf(n)x + pf(n+1
ﻣﻘﺪار nﻛﻪ اﻧﺘﺨﺎﺑﺶ ﺑﻪ ﻋﻬﺪه ﻛﺎرﺑﺮ اﺳﺖ در ﻣﻴﺰان ﺑﺮازش دو ﻣﻨﺤﻨﻲ ﺗﺄﺛﻴﺮ دارد. ﭘﺲ از ﺑﻪ دﺳﺖ آوردن ﺿﺮاﺋﺐ ، pfاﺟﺮاي دﺳﺘﻮر ) ، y1 = polyval(pf,xﺑﺮدار y1را ﺑﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﻋﻨﺎﺻﺮ xو yاﻳﺠﺎد ﻣﻲﻛﻨﺪ.
ﻣﺜﺎل: ﺗﺎﺑﻊ y = exp(x).*xرا در ﻳﻚ ﭼﻨﺪ ﺟﻤﻠﻪاي درﺟﻪ ﭼﻬﺎر ﺑﺨﻮراﻧﻴﺪ .ﻣﻘﺎدﻳﺮ ﺑﺮدار ﭼﻨﺪﺟﻤﻠﻪاي را ﺑﺎ ﻧﺎم yyﺑﺎ ﺣﻠﻘﻪ forﺗﻌﻴﻴﻦ و ﺗﻌﺪادي از آنﻫﺎ را ﺑﺎ ﺑﺮدار yﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ y1 .را ﺑﺎ )( polyvalﺑﻪ دﺳﺖ آورﻳﺪ دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ y1ﻫﻤﺎن yyﺧﻮاﻫﺪ ﺑﻮد .ﻣﻨﺤﻨﻲﻫﺎي yو y1را ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ. % polyf.m ;x = -1:0.1:1; y = exp(x).*x; n = 4 ;)pf = polyfit(x,y,n
112
for k=1:21 yy(k)=... ;)pf(1)*x(k)^4+pf(2)*x(k)^3+pf(3)*x(k)^2+pf(4)*x(k)+pf(5 end )er = abs(y-yy '(disp y yy )'y-yy )]')disp([y(1:5)' yy(1:5)' er(1:5 y1 = polyval(pf,x); % yy1 is the same as yy )'plot(x,y,x,y1,'p >> polyf.m y yy y-yy -0.3679 -0.3649 0.0030 -0.3659 -0.3673 0.0014 -0.3595 -0.3621 0.0027 -0.3476 -0.3498 0.0021 -0.3293 -0.3301 0.0008
ﺷﻜﻞ 2-11
درﻳﺎﻓﺖ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﻣﻨﺤﻨﻲ ﺑﺎ
ginput
ﺑﺎ اﺟﺮاي دﺳﺘﻮر [X, Y] = ginputﻳﻚ ﺗﻘﺎﻃﻊ ﻣﻮﺋﻴﻦ ﻇﺎﻫﺮ ﻣﻲﺷﻮد .اﻳﻦ ﺗﻘﺎﻃﻊ را ﺑﺎ ﻣﺎوس ﺑﻪ ﻫﺮ ﻧﻘﻄﻪ ﮔﺮاف ﺑﺮده و ﻛﻠﻴﻚ ﻛﻨﻴﻢ ﻣﺨﺘﺼﺎت آن ﻧﻘﻄﻪ در ﺑﺮدارﻫﺎي Xو Yذﺧﻴﺮه ﻣﻲﺷﻮﻧﺪ .ﺑﺎ اﻳﻦﻛﺎر ﻳﻚ ﻳﺎ ﺗﻌﺪادي ﻧﻘﻄﻪ روي ﮔﺮاف اﻧﺘﺨﺎب ﻣﻲﻛﻨﻴﻢ .ﭘﺲ از اﻧﺘﺨﺎب ﻧﻘﺎط ﻛﻠﻴﺪ > <Enterرا ﻣﻲزﻧﻴﻢ .ﺳﭙﺲ ﻣﻲﺗﻮاﻧﻴﻢ ﻫﺮﻳﻚ از ﺑﺮدارﻫﺎي ﺑﻪدﺳﺖ آﻣﺪه را ﻣﻄﺎﻟﻌﻪ ﻛﻨﻴﻢ. دﺳﺘﻮر ) [X, Y] = ginput(nﻓﻘﻂ اﻣﻜﺎن اﻧﺘﺨﺎب nﻧﻘﻄﻪ را ﻣﻲدﻫﺪ.
ﺣﻞ ﺗﺮﺳﻴﻤﻲ اﺑﺘﺪا ﻣﻨﺤﻨﻲ ﻣﻌﺎدﻟﻪ را رﺳﻢ و ﺳﭙﺲ ﺑﺎ دﺳﺘﻮر)( ginputﻣﺨﺘﺼﺎت ﻧﻘﻄﻪ ﻳﺎ ﻧﻘﺎط ﺑﺮﺧﻮرد ﻣﻨﺤﻨﻲ ﺑﺎ ﻣﺤﻮر xرا ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﻴﻢ .ﺑﺎ اﺟﺮاي )( ginputاﻣﻜﺎن اﻧﺘﺨﺎب ﺗﻌﺪادي ﻧﻘﻄﻪ روي ﮔﺮاف ﺑﺎ ﻛﻠﻴﻚ ﻣﺎوس و ﻗﺮار دادن ﻣﺨﺘﺼﺎت آنﻫﺎ در ﻳﻚ ﺑﺮدار ﻓﺮاﻫﻢ ﻣﻲﺷﻮد .ﻛﻠﻴﺪ > <Enterﻛﺎر اﻧﺘﺨﺎب ﻧﻘﻄﻪﻫﺎ را ﺗﻤﺎم ﻣﻲﻛﻨﺪ.
ﻣﺜﺎل ﻫﺎ: رﻳﺸﻪ ﻣﻌﺎدﻟﻪ ﺑﺎ روش ﺗﺮﺳﻴﻤﻲ ;')>> y = 'cos(x)+sin(x)+log(x )]>> fplot(y,[0.1,2*pi ﭼﻮن ) log(0ﺑﻲﻧﻬﺎﻳﺖ اﺳﺖ ،ﻣﺤﻮر xرا از 0.1ﺷﺮوع ﻛﺮدهاﻳﻢ %
روي ﮔﺮاف در ﻣﺤﻞ ﺻﻔﺮ ﺗﺎﺑﻊ ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ
>> [X, Y]= ginput % X = 0.2830 Y = -0.0015
رﻳﺸﻪ ﻣﻌﺎدﻟﻪ ﻓﻮق ﺗﻘﺮﻳﺒﺎً X = 0.2830اﺳﺖ. 113
رﻳﺸﻪ ﻣﻌﺎدﻟﻪ ﺑﺎ روش ﺗﺮﺳﻴﻤﻲ ،و ﺗﺤﻘﻴﻖ آن ﺑﺎ )(fzero '>> y = 'exp(x)+20*x )>> ezplot(y >> [X, Y] = ginput X = -0.0601 Y = -0.2715 )>> X0 = fzero(y,X X0 = -0.0477 >> y0 = exp(X0)+20*X0 y0 = -1.1102e-016
3-11ﺗﻤﺮﻳﻦ -1ﺗﺎﺑﻊ ) sin(8*a)+sin(9*aرا ﺑﻪ ﺻﻮرت inlineﺗﻌﺮﻳﻒ و آنرا ﺑﺎ )( fplotو )(ezplot
رﺳﻢ ﻛﻨﻴﺪ. -2ﺿﺮاﺋﺐ ﻣﻌﺎدﻟﻪ درﺟﻪ ﺳﻪ را ﺑﻪ ﻳﻚ ام -ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ دو آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ رد ﻛﺮده و رﻳﺸﻪﻫﺎ را ﺑﺎ راهﺑﺮد ﻧﻴﻮﺗﻦ ﺑﺮﮔﺮداﻧﻴﺪ .ﺗﺎﺑﻊ را ﺑﺎ ﻋﺪد ﮔﺬاري ﺑﻪ ﺟﺎي آرﮔﻮﻣﺎنﻫﺎ از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ. -3رﻳﺸﻪﻫﺎي ﻣﻌﺎدﻟﻪ ﻓﻮق را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر )( rootsﺑﻪ دﺳﺖ آورده و ﺑﺎ ﻧﺘﻴﺠﻪ ﺑﺎﻻ ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ. -4ﺗﺎﺑﻊ peaksرا ﻛﻪ از ﺗﻮاﺑﻊ ﻧﻤﻮﻧﻪ ﻣﺘﻠﺐ اﺳﺖ از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا و ﺳﺎﺧﺘﺎر آن را ﺑﺒﻴﻨﻴﺪ .ﻧﺎم ﺻﺤﻴﺢ ﺗﺎﺑﻊِ رﺳﻢِ آﺳﺎن ﺳﻪ ﺑﻌﺪي را ﺟﺴﺘﺠﻮ ﻛﻨﻴﺪ و ﺗﺎﺑﻊ peaksرا ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن آن )ﺑﺎ رد ﻛﺮدن ﮔﻴﺮه( رﺳﻢِ آﺳﺎن ﻛﻨﻴﺪ. -5ﻳﻚ ﻓﺎﻳﻞ Cو ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آنرا از ﻳﻚ ﺗﺎﺑﻊ ﻣﺤﺎﺳﺒﺎﺗﻲ ﻣﺘﻠﺐ ﻛﻪ ﺧﻮدﺗﺎن ﻧﻮﺷﺘﻪاﻳﺪ ،ﭘﺪﻳﺪ آورﻳﺪ. -6ﻳﻚ ﻓﺎﻳﻞ C++و ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آنرا از ﻳﻚ ﺗﺎﺑﻊ ﮔﺮاﻓﻴﻜﻲ ﻣﺘﻠﺐ ﻛﻪ ﺧﻮدﺗﺎن ﻧﻮﺷﺘﻪاﻳﺪ ،ﭘﺪﻳﺪ آورﻳﺪ. -7از راه ﺳﻌﻲ و ﺧﻄﺎ ﺑﺰرگﺗﺮﻳﻦ ﻋﺪدي را ﻛﻪ ﻣﺘﻠﺐ ﻣﻲﺗﻮاﻧﺪ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ ﻓﺎﻛﺘﻮرﻳﻞ آنرا ﺑﺮﮔﺮداﻧﺪ ﭘﻴﺪا ﻛﻨﻴﺪ.
114
ﻓﺼﻞ 12ﻣﺒﺎﺣﺜﻲ ﭘﻴﺮاﻣﻮن رﺷﺘﻪ ﻫﺎ 1-12رﺷﺘﻪ ﺑﻪ ﻣﺜﺎﺑﻪ آراﻳﻪ )ﺑﺮدار( در ﻣﺘﻠﺐ رﺷﺘﻪ ،ﺑﺮداري اﺳﺖ ﻛﻪ ﻋﻨﺎﺻﺮ آن از ﻛﺎراﻛﺘﺮﻫﺎي اﺳﻜﻲ ﺗﺸﻜﻴﻞ ﻣﻲﺷﻮﻧﺪ ،ﻋﻼوه ﺑﺮ ﺗﻮاﺑﻊ و دﺳﺘﻮرات ﺑﺮداري ﺑﻌﻀﻲ ﺗﻮاﺑﻊ ﺧﺎص ﻧﻴﺰ در ﻣﻮرد رﺷﺘﻪﻫﺎ وﺟﻮد دارﻧﺪ.
دﺳﺘﺮﺳﻲ ﺑﻪ ﺣﺮوف رﺷﺘﻪ ﻣﺜﺎل: ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ رﺷﺘﻪ را درﻳﺎﻓﺖ و ﺗﻚ ﺗﻚ ﻋﻨﺎﺻﺮ آن را ﺑﺎ ﻳﻚ ﻓﺎﺻﻠﻪ در ﺑﻴﻦﺷﺎن ﭼﺎپ ﻛﻨﺪ .آن را اﺟﺮا ﻛﻨﻴﺪ .ﺗﺎﺑﻊ را ﺑﺎ ﻧﺎم bl.mدر دﻳﺮﻛﺘﻮري ﺟﺎري ﺿﺒﻂ ﻛﺮده و آنرا از ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺑﺎ ﻳﻚ آرﮔﻮﻣﺎن دلﺧﻮاه ﻓﺮاﺧﻮاﻧﻲ ﻛﻨﻴﺪ. ﻳﺎدآوري :ﺑﻠﻮك try...catch...endﺑﺮاي ﺑﻪ دام اﻧﺪاﺧﺘﻦ ﺧﻄﺎ error trappingﺑﻪ ﻛﺎر ﻣﻲرود. دﺳﺘﻮرات زﻳﺮِ catchدر ﺻﻮرت وﻗﻮع ﺧﻄﺎ اﺟﺮا ﻣﻲﺷﻮﻧﺪ .در اﻳﻦ ﻣﺜﺎل ﺧﻄﺎ وﻗﺘﻲ روي ﻣﻲدﻫﺪ ﻛﻪ kاز اﻧﺪﻳﺲ ﺑﺎﻻﺗﺮﻳﻦ ﻋﻨﺼﺮِ ssﺑﻴﺸﺘﺮ ﺷﺪه ﺑﺎﺷﺪ ،دراﻳﻦﺻﻮرت ﺳﻄﺮ) try ss(kﺧﻄﺎ را ﻣﻲﺑﻴﻨﺪ و دﺳﺘﻮر زﻳﺮ catchﻳﻌﻨﻲ breakاﺟﺮا ﻣﻲﺷﻮد. )function = bl(ss ;k = 1 while 1 ﺣﻠﻘﻪ اداﻣﻪدار ﺗﺎ ﺑﻲﻧﻬﺎﻳﺖ % اﮔﺮ ﺧﻄﺎ ﻧﺪاﺷﺘﻴﻢ ،دﺳﺘﻮرات زﻳﺮ اﺟﺮا ﻣﻲﺷﻮﻧﺪ %
;)try ss(k
;))fprintf('%c ',ss(k ;k = k + 1 catch اﮔﺮ ﺧﻄﺎ داﺷﺘﻴﻢ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم ﻣﻲﺷﻮد % break end end )'>> bl('Azadeh A z a d e h
ﻋﺪد اﺳﻜﻲ ﻳﻚ ﻛﺎراﻛﺘﺮ از ﺗﻮاﺑﻊ )( singleو )( doubleﻣﻲﺗﻮان ﺑﺮاي ﻧﻤﺎﻳﺶ ﻋﺪد اﺳﻜﻲ ﻳﻚ ﻛﺎراﻛﺘﺮ اﺳﺘﻔﺎده ﻛﺮد .ﺗﺎﺑﻊ )( charﻋﺪد اﺳﻜﻲ را ﺑﻪ ﺻﻮرت ﻛﺎراﻛﺘﺮ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ .اﮔﺮ رﺷﺘﻪاي ﺑﻪ ﺗﻮاﺑﻊ )( singleو )( doubleارﺳﺎل ﺷﻮد ،ﻛﺪﻫﺎي اﺳﻜﻲ ﻛﺎراﻛﺘﺮﻫﺎي آن ﭼﺎپ ﻣﻲﺷﻮد.
ﻣﺜﺎل ﻫﺎ:
;]66
رﺷﺘﻪ × n
65
76
)'>> single('pi ans = 112 105 )'>> Mt = double('LAB Mt = 76 65 66 >> Mt1 = [77 65 84 )>> char(Mt1 ans = MATLAB
m
ﺑﺮاي اﻳﺠﺎد ﻣﺎﺗﺮﻳﺲ رﺷﺘﻪاي از ﺗﺎﺑﻊ )( charاﺳﺘﻔﺎده ﻣﻲﺷﻮد .ﺑﺎ ﺗﻌﺮﻳﻒ ﻣﺎﺗﺮﻳﺲ رﺷﺘﻪاي m × nﻃﻮل ﻫﻤﻪ ردﻳﻒﻫﺎ ﺑﺮاﺑﺮ ﻃﻮل درازﺗﺮﻳﻦ ردﻳﻒ ﻣﻲﺷﻮد.
115
ﻣﺜﺎل: ﻳﻚ رﺷﺘﻪ ﭼﻨﺪ ﺳﻄﺮي ﺗﻮﻟﻴﺪ ،و ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ را در ﻣﻮرد آن اﺟﺮا ﻛﻨﻴﺪ ﻃﻮل ﺳﻄﺮ اول را ﺑﻪ دﺳﺖ آورﻳﺪ. )'>> NA = char('Mostafa','Hemmatabadi','Iran NA = Mostafa Hemmatabadi Iran )>> ndims(NA ans = 2 )>> size(NA ans = 3 11 )>> length(NA ))(ans = 11 % length is max(size >> N1 = NA(1,:) % first row ans = Mostafa )>> length(N1 ans = 11
2-12ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ ﻳﻚ رﺷﺘﻪ اﮔﺮ ﺑﺎ ﻛﺎﻟﻦ )ﺑﺪون اﺳﺘﻔﺎده از ﮔﻴﻮﻣﻪ( ﺗﻌﺮﻳﻒ ﺷﻮد ،ﻛﺎراﻛﺘﺮﻫﺎي ﻋﻀﻮ آن ﻛﺪ اﺳﻜﻲ )ﻋﺪد( ﺧﻮاﻫﻨﺪ ﺑﻮد .ﻣﺮﺗﺐ ﺷﺪهي ﭼﻨﻴﻦ رﺷﺘﻪاي ﺑﻪ ﺻﻮرت ﻋﺪدي ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد ،ﺑﺮاي ﻧﻤﺎﻳﺶ آن ﺑﻪ ﺻﻮرت ﻛﺎرﻛﺘﺮ از ﺗﺎﺑﻊ )( charاﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ.
ﻣﺮﺗﺐ ﺳﺎزي ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي
)(sort
ﻣﺜﺎل ﻫﺎ: ﺗﻌﺮﻳﻒ رﺷﺘﻪ ﺑﻪ ﺻﻮرت آراﻳﻪ ﻛﺎراﻛﺘﺮي ]'>> xs = ['b' 'd' 'a' 'c xs = bdac )>> sort(xs ans = abcd
ﺗﻌﺮﻳﻒ رﺷﺘﻪ ﺑﻪ ﺻﻮرت ﻣﻌﻤﻮل '>> xs = 'bdac xs = bdac )>> sort(xs ans = abcd
رﺷﺘﻪ ﺑﻪ ﺻﻮرت اﻋﺪاد )اﺳﻜﻲ( 114
115
116
117
118
119
122
121
120
119
118
117
ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ ﺑﺎ ﺗﺎﺑﻊ ﺣﺒﺎﺑﻲ و ﻣﻘﺎﻳﺴﻪ ﺑﺎ
'>> ss = 'z' : -1 : 'r ss = 122 121 120 )>> stn = sort(ss stn = 114 115 116 )>> st = char(stn st = rstuvwxyz
)(sort
روش bubble sortﻛﻪ ﺑﺮﻧﺎﻣﻪ آن را ﻧﻮﺷﺘﻪاﻳﻢ ،ﻳﻜﻲ از ﻛﻨﺪﺗﺮﻳﻦ روﺗﻴﻦﻫﺎي ﻣﺮﻧﺐﺳﺎزي اﺳﺖ ،اﻣﺎ ﻣﺮﺗﺐ ﺳﺎزي داﺧﻠﻲ ﻣﺘﻠﺐ )( sortاز روﺗﻴﻦﻫﺎي ﻣﺪرنﺗﺮ و ﺳﺮﻳﻊﺗﺮ ﻣﺎﻧﻨﺪ quick sortاﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ.
116
ﻣﺜﺎل: ﺗﺎﺑﻊ ﻣﺮﺗﺐ ﺳﺎزي ﺣﺒﺎﺑﻲ bubble sortرا ﺑﻨﻮﻳﺴﻴﺪ .ﺳﺮﻋﺖ اﺟﺮاي آن را ﺑﺎ ﺳﺮﻋﺖ ﺗﺎﺑﻊ داﺧﻠﻲ ﻣﺘﻠﺐ )(sort
ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ .ﺗﺎﺑﻊ ﻣﺮﺗﺐ ﺳﺎزي ﺣﺒﺎﺑﻲ ﺑﻪ ﻃﺮﻳﻖ زﻳﺮ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد: % Function M-File bubbles.m )function y = bubbles(x ;)n = length(x ;for k = 1 : n % count the passes for j = 1 : n - k )if x(j) > x(j+1 temp = x(j); x(j) = x(j+1); x(j+1) = temp; % swap end end end ;y = x در ام -ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎم bsrt.mﻳﻚ آراﻳﻪ از ﻛﺎراﻛﺘﺮﻫﺎ )ﻳﻚ رﺷﺘﻪ( ﻛﻪ ﺷﺎﻣﻞ aﺗﺎ ) zﻛﺪ اﺳﻜﻲ 97ﺗﺎ (122ﺑﻪ ﻃﻮر
ﻣﻌﻜﻮس اﺳﺖ را ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ .ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ،ﭼﻮن ﻧﺎﻣﺮﺗﺐﺗﺮﻳﻦ ﺳﺎﻣﺎﻧﻪ را دارد ،ﺑﻴﺸﺘﺮﻳﻦ ﻋﺒﻮر )ﺗﻜﺮار( ﺑﺮاي ﻣﺮﺗﺐ ﺳﺎزي آن اﻧﺠﺎم ﺧﻮاﻫﺪﺷﺪ. % Script M-File bsrt.m, calls the function bubbles.m clc, clear ; 'x = 'z' : -1 : 'a ﻳﻚ آراﻳﻪ ﺑﺰرگ ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ xr = repmat(x,1,200);% tic ;))xrs = char(sort(xr ;tc = toc )fprintf('for MATLAB sort: %f Secs\n',tc tic ; ))xrs = char(bubbles(xr ;tc = toc )fprintf('for bubble sort: %f Secs',tc >> bsrt for MATLAB sort: 0.060000 Secs for bubble sort: 2.213000 Secs
3-12ﺗﻮاﺑﻊ رﺷﺘﻪ اي ﺗﺎﺑﻊ ) strcmp(s1,s2و ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪ اي ﺑﺮاي رﺷﺘﻪ ﻫﺎ دو رﺷﺘﻪ را ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﺪ و در ﺻﻮرت ﻳﻚﺳﺎﻧﻲ ﻛﺎﻣﻞِ آنﻫﺎ) true ،ﻣﻨﻄﻖِ ﻳﻚ( ودر ﻏﻴﺮ آن ) falseﻣﻨﻄﻖِ ﺻﻔﺮ( ﺑﺮﻣﻲﮔﺮداﻧﺪ. ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪاي ،ﻋﻨﺎﺻﺮ رﺷﺘﻪﻫﺎ را ﺗﻚ ﺑﻪ ﺗﻚ ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﻨﺪ ،زﻳﺮا رﺷﺘﻪﻫﺎ ،آراﻳﻪ ﻳﺎ ﺑﺮدار ﻣﺘﺸﻜﻞ از ﻛﺎراﻛﺘﺮﻫﺎ ﻫﺴﺘﻨﺪ .ﺑﺮاي ﻣﻘﺎﻳﺴﻪ دو رﺷﺘﻪ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪاي ﺑﺎﻳﺴﺘﻲ ﻃﻮل آنﻫﺎ ﻣﺴﺎوي ﺑﺎﺷﺪ .ﻧﺘﻴﺠﻪ ﻣﻘﺎﻳﺴﻪ ﻣﻨﻄﻖ اﺳﺖ.
ﻣﺜﺎل ﻫﺎ: ;]>> s1 = 'ABC'; s2 = [65 66 67 )>> s3 = char(s2 )>> as = strcmp(s1,s3 as = 1 )>> islogical(as ans = 1 '>> s1 = 'ABCD'; s2 = 'ABC )>> strcmp(s1,s2
117
0
ﺟﻤﻊ ﻛﺮدن رﺷﺘﻪﻫﺎ ﺑﺎ دﺳﺘﻮر
1
1
1
0
0
0
;'= 'Arman ;'= 'arman == s2 0 1 > s1 1 0
= ans >> s1 >> s2 >> s1 = ans >> s2 = ans
)(strcat
دﺳﺘﻮر )( strcatﭼﻨﺪ رﺷﺘﻪ را ﺳﺮﻫﻢ )ﺑﺎﻫﻢ ﺟﻤﻊ( ﻛﺮده و ﺣﺎﺻﻞﺟﻤﻊ را در ﻳﻚ رﺷﺘﻪ ﺟﺪﻳﺪ ﻗﺮار ﻣﻲدﻫﺪ. )( strcatﻓﻀﺎﻫﺎي ﺧﺎﻟﻲ اﻧﺘﻬﺎي رﺷﺘﻪﻫﺎ را ﺣﺬف ﻣﻲﻛﻨﺪ ،اﻣﺎ ﻣﻲﺗﻮان ﻓﻀﺎﻫﺎي ﺧﺎﻟﻲ را ﺑﻪ اﻧﺪازه دلﺧﻮاه ﺗﻌﺮﻳﻒ و داﺧﻞ رﺷﺘﻪ ﻗﺮار داد.
ﻣﺜﺎل ﻫﺎ: ;'>> s1 = 'My '; s2 = 'Name'; s3 = ' Is )>> s = strcat(s1,s2,s3 s = MyNameIs ;)>> sp = repmat([' '],1,4 )]'>> xb = strcat(['Iran', sp, 'My', sp, 'Country xb = Iran My Country
4-12ﻗﺎﻟﺐﺑﻨﺪي رﺷﺘﻪ
String Formatting
ﺗﻌﻴﻴﻦ ﻓﺮﻣﺖ ﺑﺮاي ﻧﻤﺎﻳﺶ رﺷﺘﻪ ﺑﺎ
)(fprintf
ﺑﺎ اﺳﺘﻔﺎده از )( fprintfﻳﻚ رﺷﺘﻪ را ﻣﻲﺗﻮان ﺑﻪ اﻧﺤﺎء ﻣﺨﺘﻠﻒ ﻧﻤﺎﻳﺶ داد .ﺑﺮاي ﻧﻤﺎﻳﺶ ﻛﺎراﻛﺘﺮﻫﺎﺋﻲ ﻧﻈﻴﺮ ﺗﻘﺴﻴﻢ ﻣﻌﻜﻮس \ ،و آﭘﻮﺳﺘﺮوف ' در ﺗﻌﺮﻳﻒ رﺷﺘﻪ دو ﺗﺎ از آن ﻫﺎ را ﻣﻲآورﻳﻢ
ﻣﺜﺎل: ﺟﻤﻠﻪ زﻳﺮ را ﺑﺎ )( fprintfﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ. Mathworks'MATLAB a poweful language. ?Is'nt it ;'ss1 = 'Mathworks''MATLAB ;'?tt1 = 'Is''nt it )fprintf('%20s \nis a poweful language.\t%s',ss1,tt1 ?Is'nt it
ﻧﮕﻪ داري رﺷﺘﻪ در ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺎ
is >> >> >>
Mathworks'MATLAB is a poweful language.
)(sprintf
ﻫﻤﺎﻧﻨﺪ )( fprintfﻛﻪ ﺧﺮوﺟﻲ را ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻣﻲﻓﺮﺳﺘﺪ ،ﺑﺎ اﺳﺘﻔﺎده از )( sprintfﻣﻲﺗﻮان ﺧﺮوﺟﻲ را ﺑﻪ داﺧﻞ ﻳﻚ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي ﻓﺮﺳﺘﺎد.
ﻣﺜﺎل: % M-File fL.m ;'na = 'New Book ;ex = 345 ;'nat = na ﭼﻮن رﺷﺘﻪ دو ﺑﻌﺪي ﺳﺘﻮن ﺑﻌﺪ ﺳﺘﻮن در داﺧﻞ ﻣﺘﻐﻴﺮ ﻗﺮار ﻣﻲﮔﻴﺮد اﺑﺘﺪا آنرا ﺗﺮاﻧﻬﺎد ﻣﻲﻛﻨﻴﻢ % )snew = sprintf('%s\n%d',nat,ex >> fL
118
snew = New Book 345
5-12ﺗﻤﺮﻳﻦ -1رﺷﺘﻪ dcbaرا ﺑﻪ ﺻﻮرت آراﻳﻪ ﻋﺪدي )ﺑﺎ ﻋﻨﺎﺻﺮي از ﻛﺪﻫﺎي اﺳﻜﻲ( ﺗﻌﺮﻳﻒ ،وﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي )( sortﻣﺮﺗﺐ ﻛﻨﻴﺪ. -2ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ را ﺑﺮاي رﺷﺘﻪ NA = char('Self','Teaching','Book') m×nاﻣﺘﺤﺎن ﻛﻨﻴﺪ .ﻃﻮل ردﻳﻒﻫﺎ را ﺑﻪ دﺳﺖ آورﻳﺪ. -3ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو رﺷﺘﻪ s1و s2را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن از ﺻﻔﺤﻪ ﻛﻠﻴﺪ درﻳﺎﻓﺖ و ﺑﺪون داﻧﺴﺘﻦ ﻃﻮل آنﻫﺎ، رﺷﺘﻪ درازﺗﺮ را ﺑﺎ رﺷﺘﻪ ﻛﻮﺗﺎهﺗﺮ ﻫﻢاﻧﺪازه ﻛﺮده ،و ﻣﻘﺎﻳﺴﻪ را اﻧﺠﺎم دﻫﺪ .ﺳﭙﺲ ﺣﺮوف ﺣﺬف ﺷﺪه رﺷﺘﻪ درازﺗﺮ را ﺑﺎ ﭘﻴﻐﺎم truncated:ﻧﻤﺎﻳﺶ دﻫﺪ .اﻳﻦ ﺗﺎﺑﻊ را از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ. -4ﺑﺎ اﺳﺘﻔﺪه از ﺗﺎﺑﻊ )( sprintfﻋﺒﺎرت زﻳﺮ را در ﻣﺘﻐﻴﺮ snowﻗﺮار داده و آن را ﺑﻪ دو ﺻﻮرت ﻛﺪ اﺳﻜﻲ و ﻛﺎراﻛﺘﺮي ﻧﻤﺎﻳﺶ دﻫﻴﺪ. MATLAB Ver 6.5
-5ﺑﺎ forﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻌﻜﻮس رﺷﺘﻪ ' ss = 'Good Studentرا ﭼﺎپ ﻛﻨﺪ .راﻫﻨﻤﺎ :ﺑﺮاي ﺗﻌﻴﻴﻦ ﺣﺪ ﺑﺎﻻﺋﻲ ﺷﻤﺎرﻧﺪه از ) length(ssاﺳﺘﻔﺎده ﻛﻨﻴﺪ. -6آراﻳﻪ ﻣﺘﺸﻜﻞ از ﻛﺪﻫﺎي اﺳﻜﻲ ]97
98
99
xn = [100را ﻣﺮﺗﺐ ﻛﺮده ﺑﻪ ﺻﻮرت
ﻛﺎراﻛﺘﺮي ﻧﻤﺎﻳﺶ دﻫﻴﺪ.
119
ﻓﺼﻞ 13ﺳﻴﮕﻨﺎل ،ﺳﻴﺴﺘﻢ ،ﻓﻴﻠﺘﺮ 1-13ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ
)(fft
دﺳﺘﻮر ) Y = fft(yﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪي ﺑﺮدار yرا ﻛﻪ Nﻋﻨﺼﺮ دارد ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ y .و Yﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ ﻫﺴﺘﻨﺪ .در ﺗﺌﻮري ﻣﺨﺎﺑﺮات yو Yدو ﺑﺮدار ﻣﻜﻤﻞ در ﺣﻮزه زﻣﺎن و در ﺣﻮزه ﻓﺮﻛﺎﻧﺲ ﻧﺎم دارﻧﺪ .ﻣﻌﻤﻮﻻٌ ﺑﺮاي آﻧﺎﻟﻴﺰ ﺳﻴﮕﻨﺎلﻫﺎي ﻣﺨﺎﺑﺮاﺗﻲ ﺑﻴﻦ ﻣﻴﺪان زﻣﺎن و ﻣﻴﺪان ﻓﺮﻛﺎﻧﺲ آﻣﺪ و رﻓﺖ ﻣﻲﻛﻨﻴﻢ. ﺑﺎﻳﺪ دﻗﺖ داﺷﺖ ﻛﻪ ﻫﺮ ﺳﻴﮕﻨﺎل در MATLABﺑﻪﺻﻮرت ﻳﻚ ﺑﺮدار ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد و ﻣﺠﻤﻮﻋﻪاي از ﻧﻘﺎط ﻣﺠﺰا ﻳﺎ ﻧﻤﻮﻧﻪ- ﺑﺮداري ﺷﺪه ) (sampledاﺳﺖ .ﻓﺮض ﻛﻨﻴﺪ ﺳﻴﮕﻨﺎل yداراي Nﻋﻨﺼﺮ اﺳﺖ ،ﻋﺒﺎرت ) ، Y = fft(yﺑﺮدار Yرا ﺑﻪ ﺻﻮرت زﻳﺮ اﻳﺠﺎد ﺧﻮاﻫﺪ ﻛﺮد: N
Σ
y(n)*exp(-j*2*pi*(k-1)*(n-1)/N), 1 <= k <= N.
= )Y(k
n=1
) Y(kﻋﻨﺼﺮ kام ﺑﺮدار Yاﺳﺖ ،ﭼﻨﺎنﭼﻪ ذﻛﺮ ﺷﺪ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ Yﻧﻴﺰ Nاﺳﺖ. ﭼﻮن ) Y(kﻣﺨﺘﻠﻂ اﺳﺖ ،ﺑﺎﻳﺪ ﻗﺪرﻣﻄﻠﻖ آنرا ﺑﺎ دﺳﺘﻮر)( barﻳﺎ )( stemﻧﻤﺎﻳﺶ دﻫﻴﻢ.
ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ وارون
)ifft(t
اﻳﻦ ﺗﺎﺑﻊ ﺑﺮدار Yرا ﺑﻪ ﻣﻴﺪان ﻣﻌﻜﻮس ﻣﻲﺑﺮد )در ﺳﻴﮕﻨﺎلﻫﺎي ﻣﺨﺎﺑﺮاﺗﻲ از ﻣﻴﺪان ﻓﺮﻛﺎﻧﺲ ﺑﻪ ﻣﻴﺪان زﻣﺎن ﻣﻲروﻳﻢ(. ﻋﺒﺎرت ) ، y = ifft(Yﺑﺮدار yرا ﺑﻪ ﺻﻮرت زﻳﺮ اﻳﺠﺎد ﺧﻮاﻫﺪ ﻛﺮد: N
Y(k)*exp( j*2*pi*(k-1)*(n-1)/N), 1 <= n <= N.
Σ
)y(n) = (1/N
k=1
) y(nﻋﻨﺼﺮ nام ﺑﺮدار yاﺳﺖ ،ﭼﻨﺎنﭼﻪ ذﻛﺮ ﺷﺪ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ yﻣﺴﺎوي Nاﺳﺖ.
ﻣﺜﺎل ﻫﺎ: ﻣﺸﺎﻫﺪه ﮔﺴﺘﺮه ﻓﺮﻛﺎﻧﺲ ﻳﻚ ﭘﺎﻟﺲ ﺳﻴﻨﻮﺳﻲ ﻳﻚ ﺑﺮدار ﺳﻴﻨﻮﺳﻲِ ﺷﺎﻣﻞ 500دراﻳﻪ را ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ ﻛﺮده و ﻃﻴﻒ ﻓﺮﻛﺎﻧﺴﻲ آن را ﺗﺎ ﻫﺎرﻣﻮﻧﻴﻚ دﻫﻢ ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ. %ffts ;n = 500 ;)thet = linspace(-2*pi,2*pi,n ;)sig = sin(thet ;)SIG = fft(sig ; )aSIG = abs(SIG )bar(aSIG(1:10),0
ﺷﻜﻞ 1-13
ﺳﺆال :ﺑﺎ ﺗﻐﻴﻴﺮ ﺗﻌﺪاد اﻋﻀﺎء ﺑﺮدار ﺳﺎزﻧﺪه ﭘﺎﻟﺲ ﺳﻴﻨﻮﺳﻲ ﺑﻪ ﻳﻚ دﻫﻢ و ده ﺑﺮاﺑﺮ ﭼﻪ ﺗﻐﻴﻴﺮي در ﻃﻴﻒ اﻳﺠﺎد ﻣﻲﺷﻮد ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ ي ﺗﺎﺑﻊ ﺻﻌﻮدي Ramp ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﺗﺎﺑﻊ ﺻﻌﻮدي ﺑﻨﻮﻳﺴﻴﺪ ،ﺑﺮدار ﺻﻌﻮدي yرا ﺑﻪ ﺻﻮرت ﺗﺎﺑﻊ ﺑﺮدار زﻣﺎن tاﻳﺠﺎد و 120
. ﻧﻤﻮدارﻫﺎي ﻣﺮﺑﻮﻃﻪ را رﺳﻢ ﻛﻨﻴﺪ. ﺳﭙﺲ ﺗﺒﺪﻳﻞ وارون ﻛﺮده دو ﭘﺎﻟﺲ را ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ.ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ ﻛﻨﻴﺪ . ﺿﺒﻂ ﻣﻲﻛﻨﻴﻢramp.m ﺗﺎﺑﻊ زﻳﺮ را ﻧﻮﺷﺘﻪ و در ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎمramp ﺑﺮاي اﻳﺠﺎد ﺷﻜﻞ function ot = ramp(t,T) % t is the time duration of the wave and T is its period. ot = 10*rem(t,T)/T; % rmp.m Tp = 2; n=100 t = linspace(0,Tp); y = ramp(t,Tp); plot(t,y); title('Ramp') xlabel 'Time' clf Y = fft(y); aY = abs(Y); stem(aY(1:n/2)), title 'Descrete Fourier Transform of a Ramp Pulse' xlabel 'Frequency' clf y1 = ifft(Y); ay1 = abs(y1); plot(t,ay1,'x') title 'Inverse Fourier Transform'
2-13 ﺷﻜﻞ
. را ﻫﻢ اﻣﺘﺤﺎن ﻛﻨﻴﺪbar() وplot() ﺑﺮاي ﻧﻤﺎﻳﺶ ﻃﻴﻒ ﻓﺮﻛﺎﻧﺴﻲ ﻋﺒﺎرات:ﺳﺆال
3-13 ﺷﻜﻞ
121
2-13ﺗﻮاﺑﻊ ﺳﻴﺴﺘﻢ ﻫﺎ دﺳﺘﻮر اﻳﺠﺎد ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﭘﻴﻮﺳﺘﻪ
tf
اﻳﻦ دﺳﺘﻮر) SYS = tf(num,denﻳﻚ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﭘﻴﻮﺳﺘﻪ ﺑﻪ ﻧﺎم SYSاز ﻛﺴﺮي ﺑﺎ ﺻﻮرت و ﻣﺨﺮج numو denﭘﺪﻳﺪ ﻣﻲآورد SYS .ﻳﻚ ﺷﻲء از ﻧﻮع TFﺧﻮاﻫﺪ ﺑﻮد .ﺑﺮدارﻫﺎي numو denاز ﺿﺮاﺋﺐ sاﺳﺘﺨﺮاج ﻣﻲﺷﻮﻧﺪ.
ﻣﺜﺎل: s ﺑﺮدارﻫﺎي numو denرا از ﻋﺒﺎرت s2 + 2s + 10 Transfer function: s -------------s^2 + 2 s + 10
اﺳﺘﺨﺮاج ﻛﻨﻴﺪ .و ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻣﺮﺑﻮﻃﻪ را ﺑﻪدﺳﺖ آورﻳﺪ. ;]>> num = [1 0 ;]>> den = [1 2 10 )>> h = tf(num, den
ﺗﺮﺳﻴﻢ )( bodeﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ دﺳﺘﻮر) bode(SYSﺗﺮﺳﻴﻢ Bodeرا ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ ﺧﻄﻲ ﺑﻲﺗﻐﻴﻴﺮ ﺑﺎ زﻣﺎن LTI
) (Linear Time-Invariantﻛﻪ ﺑﺎ )( tfﻳﺎ دﺳﺘﻮرات ﻣﺸﺎﺑﻪ آن ﭘﺪﻳﺪ آﻣﺪه اﻳﺠﺎد ﻣﻲﻛﻨﺪ .داﻣﻨﻪ ﻓﺮﻛﺎﻧﺲ و ﺗﻌﺪاد ﻧﻘﺎط ﺧﻮدﺑﻪﺧﻮد ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﻧﺪ.
واﻛﻨﺶ ﭘﻠﻪ اي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ
)(step(), impulse
دﺳﺘﻮر ) step(SYSواﻛﻨﺶ در ﻣﻘﺎﺑﻞ ﭘﺎﻟﺲ ﭘﻠﻪاي و دﺳﺘﻮر ) impulse(SYSواﻛﻨﺶ در ﻣﻘﺎﺑﻞ ﺳﻴﮕﻨﺎل اﻳﻤﭙﺎﻟﺲ را ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ LTIﻛﻪ ﺑﺎ )( tfﻳﺎ دﺳﺘﻮرات ﻣﺸﺎﺑﻪ آن ﭘﺪﻳﺪ آﻣﺪه ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻨﺪ .داﻣﻨﻪ ﻓﺮﻛﺎﻧﺲ و ﺗﻌﺪاد ﻧﻘﺎط ﺧﻮدﺑﻪﺧﻮد ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﻧﺪ.
دﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ
Nyquist Diagram
دﺳﺘﻮر ) nyquist(SYSدﻳﺎﮔﺮام ﻣﺮﺑﻮﻃﻪ را ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ LTIﭘﻴﻮﺳﺘﻪ ﻳﺎ ﮔﺴﺴﺘﻪ رﺳﻢ ﻣﻲﻛﻨﺪ .اﻳﻦ دﻳﺎﮔﺮام ﺑﺮاي آﻧﺎﻟﻴﺰ ﺳﻴﺴﺘﻢ )ﺷﺎﻣﻞ ، gain margin, phase marginو ﭘﺎﻳﺪاري( ﺑﻪﻛﺎر ﻣﻲرود.
ﺗﻐﻴﻴﺮ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﺑﻪ ﻓﺮم ﻓﻀﺎي ﺣﺎﻟﺖ
tf2ss
اﻳﻦ دﺳﺘﻮر ، [A,B,C,D] = tf2ss(b,a) :ﭘﺎراﻣﺘﺮﻫﺎي ﻓﻀﺎي ﺣﺎﻟﺖ را از ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ.
ﻣﺜﺎل ﻫﺎ: اﻧﺘﮕﺮاﺗﻮر ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻣﺪار ﺷﻜﻞ 4-13را ﺧﻮدﺗﺎن ﭘﻴﺪا ﻛﺮده و در ﻣﺤﻴﻂ MATLABﭘﺪﻳﺪ آورﻳﺪ .ﺗﺮﺳﻴﻢ )( ، bodeدﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ ،واﻛﻨﺶ ﭘﻠﻪاي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ آنرا ﻧﻤﺎﻳﺶ دﻫﻴﺪ .ﺑﺎ ﻓﺮض 1/RC = 1 1/RC ─────── s + 1/RC
ﺷﻜﻞ 4-13
% intr.m ;]num = [0 1]; den = [1 1 )H = tf(num,den )subplot(2,2,1),bode(H )subplot(2,2,2),step(H )subplot(2,2,3),impulse(H )subplot(2,2,4),nyquist(H >> intr
122
ﻣﻨﺤﻨﻲ ﺷﺎرژ ﺧﺎزن ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺪار اﻧﺘﮕﺮاﺗﻮر و ﭘﺎﺋﻴﻦﮔﺬر اﺳﺖ
1 ----s + 1
Transfer function:
ﺷﻜﻞ 5-13
اﺳﻴﻼﺗﻮر ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﭘﻴﻮﺳﺘﻪ ﻣﺪار ﻧﻮﺳﺎﻧﻲ ﺷﻜﻞ 6-13را ﻣﺤﺎﺳﺒﻪ ﻛﺮده و ﭘﺪﻳﺪ آورﻳﺪ .ﺗﺮﺳﻴﻢ )( ، bodeدﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ، واﻛﻨﺶ ﭘﻠﻪاي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ آنرا ﻧﻤﺎﻳﺶ دﻫﻴﺪ .ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻣﺜﺎل ﻓﻮق را ﺑﻪ ﻓﺮم ﻓﻀﺎي ﺣﺎﻟﺖ درآورﻳﺪ. % oscil.m ;]B = [10000 ;]A = [1 0 10000 ;)H = tf(B,A )bode(H),step(H),impulse(H),nyquist(H )[A,B,C,D] = tf2ss(num,den >> oscil A = -1 B = 1 C = 1 D = 0
1/LC ─────── 2 s + 1/LC ﺷﻜﻞ 6-13
10H 10µF
ﺷﻜﻞ 7-13
123
دﺳﺘﻮر rlocusﺑﺮاي رﺳﻢ ﻣﻜﺎن ﻫﻨﺪﺳﻲ رﻳﺸﻪ ﻫﺎ اﻳﻦ دﺳﺘﻮر ﺑﺮاي ﺑﺮرﺳﻲ ﺗﻐﻴﻴﺮات ﺿﺮﻳﺐ ﺑﺎزﺧﻮر feedback gainsﺑﺮ روي ﻣﻜﺎن ﻗﻄﺐﻫﺎي ﺳﻴﺴﺘﻢﻫﺎي ﺣﻠﻘﻪ ﺑﺴﺘﻪ closed-loopﻣﺎﻧﻨﺪ ﺳﻴﺴﺘﻢ ﻧﻤﻮﻧﻪ زﻳﺮ ﻛﺎرﺑﺮد دارد.
ﻣﺜﺎل:
;]B = [2 5 1 ;]A = [1 2 3 ;)h = tf(B, A )rlocus(h
>> >> >> >>
ﺷﻜﻞ 8-13
ﺳﻴﺴﺘﻢ ﻓﻴﺪﺑﻚ ﻣﻨﻔﻲ ﺑﺎ دﺳﺘﻮر
)(feedback
دﺳﺘﻮر )( feedbackﻣﺪل LTIرا ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ ﺑﺎزﺧﻮر ﻣﻨﻔﻲ ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ.
ﻣﺜﺎل: ﺷﻜﻞ 9-13ﻣﺪل LTIﻳﻚ ﺳﻴﺴﺘﻢ ﻛﻨﺘﺮل ﺳﺮﻋﺖ را ﻧﺸﺎن ﻣﻲدﻫﺪ.
ﺷﻜﻞ 9-13
;)]G = tf([2 5 1],[1 2 3 ;)H = zpk(-2,-10,5 )Cloop = feedback(G,H Zero/pole/gain: )0.18182 (s+10) (s+2.281) (s+0.2192 ----------------------------------)(s+3.419) (s^2 + 1.763s + 1.064
3-13ﻣﺪل زﻣﺎن ﮔﺴﺴﺘﻪ
Discrete-Time Models
ﻣﺪل زﻣﺎن ﮔﺴﺴﺘﻪ ﺑﺮاي آﻧﺎﻟﻴﺰ ﺳﻴﺴﺘﻢﻫﺎﺋﻲ ﻛﻪ ﺑﺎ ﺳﻴﮕﻨﺎلﻫﺎي ﮔﺴﺴﺘﻪ ﻳﺎ ﻧﻤﻮﻧﻪﺑﺮداﺷﺘﻪ) (Sampledﻛﺎر ﻣﻲﻛﻨﻨﺪ ،ﺑﻪﻛﺎر ﻣﻲرود .ﺗﻌﻴﻴﻦ ﺳﻴﺴﺘﻢ ﺑﺮاي آن ﺷﺒﻴﻪ ﺑﻪ ﺳﻴﺴﺘﻢ زﻣﺎن ﭘﻴﻮﺳﺘﻪ اﺳﺖ ،اﻣﺎ دراﻳﻦﺟﺎ ﺑﺎﻳﺪ ﻣﺪتزﻣﺎن ﻧﻤﻮﻧﻪﺑﺮداري ) (sampling period OR sample timeﻧﻴﺰ ذﻛﺮ ﺷﻮد.
ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﮔﺴﺴﺘﻪ ﻣﺪار
Lead
ﻣﺜﺎل: ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﮔﺴﺴﺘﻪ ﻣﺪار 10-13را ﻛﻪ در ﻛﻨﺘﺮل ،ﻣﺪار Leadﻧﺎم دارد اﺑﺘﺪا ﻣﺤﺎﺳﺒﻪ ﻛﺮده ،ﺳﭙﺲ ﭘﺪﻳﺪ آورﻳﺪ. 124
ﺗﺮﺳﻴﻢ )( ، bodeدﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ ،واﻛﻨﺶ ﭘﻠﻪاي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ آنرا ﻧﻤﺎﻳﺶ دﻫﻴﺪ. R1 = R2 = 1, C = 100µF, time sample = 0.1 )s + (1/R1C ─────────────────── )s + (R1+R2)/(R1R2C
ﺷﻜﻞ 10-13
% dtm.m ;]B=[1 10000 ;]A=[1 20000 )Hz=tf(B,A,0.1 )'subplot(2,2,1),bode(Hz, 'k )'subplot(2,2,2),step(Hz, 'k )'subplot(2,2,3),impulse(Hz, 'k )'subplot(2,2,4),nyquist(Hz, 'k >> dtm
ﺷﻜﻞ 11-13
ﺑﻪ ﻣﻨﺤﻨﻲ ﺗﻐﻴﻴﺮ ﻓﺎز ) . (leadواﻛﻨﺶ ﭘﻠﻪاي ،و اﻳﻤﭙﺎﻟﺴﻲ در ﻣﺪل ﮔﺴﺴﺘﻪ ﺗﻮﺟﻪ ﻛﻨﻴﺪ.
4-13ﻓﻴﻠﺘﺮﻫﺎ ﻓﻴﻠﺘﺮ Butterworthآﻧﺎﻟﻮگ و دﻳﺠﻴﺘﺎل ،دﺳﺘﻮر
)(butter
دﺳﺘﻮر )'[B,A] = butter(N,w,'sﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﭘﺎﺋﻴﻦﮔﺬر درﺟﻪ Nﺑﺎﺗﺮورث ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﻄﻴﻊ w rad/secرا اﻳﺠﺎد ﻣﻲﻛﻨﺪ B .و Aﺑﻪ ﺗﺮﺗﻴﺐ ﺻﻮرت و ﻣﺨﺮج ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻓﻴﻠﺘﺮ ﻫﺴﺘﻨﺪ. دﺳﺘﻮر)' [B,A] = butter(N,[w1 w2],'sﻳﻚ ﻓﻴﻠﺘﺮ ﻣﻴﺎنﮔﺬر ﻣﺎﺑﻴﻦ w1و w2را اراﺋﻪ ﻣﻲدﻫﺪ، 125
و دﺳﺘﻮر)' [B,A] = butter(N,w,'high','sﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﺑﺎﻻﮔﺬر اﻳﺠﺎد ﻣﻲﻛﻨﺪ. دﺳﺘﻮر )[B,A] = butter(N,Wnﻳﻚ ﻓﻴﻠﺘﺮ ﺑﺎﺗﺮورث ﭘﺎﺋﻴﻦﮔﺬر دﻳﺠﻴﺘﺎل درﺟﻪ Nﺑﺎ ﻓﺮﻛﺎﻧﺲ ﻗﻄﻊ Wnﻃﺮح ﻣﻲ- ﻛﻨﺪ .داﻣﻨﻪ ﻓﺮﻛﺎﻧﺲ ﻗﻄﻊ 0.0 < Wn < 1.0اﺳﺖ .اﮔﺮ Wn = 1ﺑﮕﻴﺮﻳﻢ ﻣﻌﺎدل ﻧﺼﻒ ﺳﺮﻋﺖ ﻧﻤﻮﻧﻪﺑﺮداري sample rateﺧﻮاﻫﺪ ﺑﻮد.
ﻣﺜﺎل ﻫﺎ: ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﭘﺎﺋﻴﻦ ﮔﺬر ﺑﺎﺗﺮورث در ﻳﻚ ام -ﻓﺎﻳﻞ ﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﭘﺎﺋﻴﻦﮔﺬر ﺑﺎﺗﺮورث درﺟﻪ 3ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﻄﻴﻊ ، 1000 rad/sec ﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﻣﻴﺎنﮔﺬر درﺟﻪ 3ﺑﺎ ﻓﺎﺻﻠﻪ ﻋﺒﻮر 1000 rad/secﺗﺎ ، 10000 rad/sec و ﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﺑﺎﻻﮔﺬر درﺟﻪ 3ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﻄﻴﻊ 1000 rad/sec
اﻳﺠﺎد ﻛﻨﻴﺪ .و ﻧﻤﻮدار ﻓﺮﻛﺎﻧﺴﻲ آنﻫﺎ را رﺳﻢ ﻧﻤﺎﺋﻴﺪ. % agfil.m echo off ;)'[B,A] = butter(3,1000,'s ;)L = tf(B,A clf, bode(L),title('LP'), pause ;)'[B,A] = butter(3,[1000 10000],'s ;)B = tf(B,A clf, bode(B),title('BP'), pause ;)'[B,A] = butter(3,1000,'high','s ;)H = tf(B,A clf, bode(H),title('HP'), clf
ﺷﻜﻞ 12-13
ﻓﻴﻠﺘﺮ ﭘﺎﺋﻴﻦ ﮔﺬر دﻳﺠﻴﺘﺎل ﻳﻚ ﻓﻴﻠﺘﺮ ﭘﺎﺋﻴﻦﮔﺬر دﻳﺠﻴﺘﺎل درﺟﻪ 3ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﻗﻄﻊ 0.3ﻃﺮح ﻛﻨﻴﺪ. )>> [B,A] = butter(3,0.3
126
B = 0.0495 0.1486 0.1486 0.0495 A = 1.0000 -1.1619 0.6959 -0.1378 )>> Hb = tf(B,A,0.1 Transfer function: 0.04953 z^3 + 0.1486 z^2 + 0.1486 z + 0.04953 --------------------------------------------z^3 - 1.162 z^2 + 0.6959 z - 0.1378 Sampling time: 0.1 )>> bode(Hb
ﺷﻜﻞ 13-13
5-13ﺗﻤﺮﻳﻦ -1ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ ﺑﺮاي ﭘﺎﻟﺲ ﻣﺮﺑﻌﻲ ﺷﻜﻞ را ﺑﻨﻮﻳﺴﻴﺪ و ﺗﺮﺳﻴﻢ ﻛﻨﻴﺪ .ﺗﺮﺳﻴﻢ ﻃﻴﻒ ﻓﺮﻛﺎﻧﺴﻲ را ﺑﺎ )bar(aF
و) plot(aFﻧﻴﺰ اﻣﺘﺤﺎن ﻛﻨﻴﺪ .راﻫﻨﻤﺎ :ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ در ﺣﻮزه ﻓﺮﻛﺎﻧﺲ ﺑﻪ ﺷﻜﻞ sin(x)/xاﺳﺖ. -2ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ را ﺑﺮاي ﭘﺎﻟﺲ ﻣﺜﻠﺜﻲ ﺷﻜﻞ ﺑﻨﻮﻳﺴﻴﺪ و ﺗﺮﺳﻴﻢ ﻛﻨﻴﺪ. -3ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ را ﺑﺮاي ﺷﻜﻞ ﻣﻮج زﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ و ﺗﺮﺳﻴﻢ ﻛﻨﻴﺪ ;)a = linspace(-pi,pi); x = sin(a) - sin(4*a -4ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﮔﺴﺴﺘﻪ و زﻣﺎن ﭘﻴﻮﺳﺘﻪ دو ﻣﺪار زﻳﺮ را ﭘﺪﻳﺪ آورﻳﺪ .ﺗﺮﺳﻴﻢ )( ، bodeدﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ،
واﻛﻨﺶ ﭘﻠﻪاي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ آنﻫﺎ را ﻧﻤﺎﻳﺶ دﻫﻴﺪ L = 1 mH, C = 100µF, time sample = 0.1 sec
-5ﻓﻴﻠﺘﺮﻫﺎي ﭘﺎﺋﻴﻦﮔﺬر و ﺑﺎﻻﮔﺬر آﻧﺎﻟﻮگ و دﻳﺠﻴﺘﺎل ﺑﺎﺗﺮورث درﺟﻪ 4ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﻄﻴﻊ ، 10000 rad/sec و ﻣﻴﺎنﮔﺬر ﻣﺎﺑﻴﻦ 1000 rad/secو 10000 rad/secاﻳﺠﺎد ﻛﻨﻴﺪ .و ﻧﻤﻮدار ﻓﺮﻛﺎﻧﺴﻲ آنﻫﺎ را رﺳﻢ ﻧﻤﺎﺋﻴﺪ. 127
ﻓﺼﻞ 14واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ 1-14واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ
(GUI) graphical user interface
ﺑﺎ دﺳﺘﻮر guideﻣﺨﻒ graphical user interface development environment
اﺑﺰار ﺗﻮﻟﻴﺪ GUIدر اﺧﺘﻴﺎر ﻗﺮار ﻣﻲﮔﻴﺮد ،ﻛﻪ ﺷﺎﻣﻞ دو ﭘﻨﺠﺮه ﻣﻬﻢ اﺳﺖ: )Layout Editor(LE), User Interface Controls (uicontrols در ﭘﻨﺠﺮه اول ﭼﻬﺎرﭼﻮب اﺻﻠﻲ GUIرا ﻛﻪ ﭘﺲ از اﺟﺮا ﻣﺸﺎﺑﻪ ﭘﻨﺠﺮهﻫﺎي اﺳﺘﺎﻧﺪارد ﻣﺤﻴﻂ Windowsﺧﻮاﻫﺪ ﺑﻮد،
ﻃﺮاﺣﻲ ﻣﻲﻛﻨﻴﻢ .ﭘﻨﺠﺮه دوم ﻳﻚ ﻣﻴﻠﻪ اﺑﺰار tools barاﺳﺖ ﻛﻪ دﻛﻤﻪﻛﻨﺘﺮلﻫﺎي ﺿﺮوري ﺟﻬﺖ ﻳﻚ ﺑﺮﻧﺎﻣﻪ GUIرا ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ .روش ﻛﺎر ﺑﺪﻳﻦﮔﻮﻧﻪ اﺳﺖ ﻛﻪ اﺑﺘﺪا دﻛﻤﻪﻫﺎي ﻻزم ﺑﺮاي ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻣﺤﻮﻃﻪ LEﻣﻨﺘﻘﻞ ﻣﻲﺷﻮد ،ﺳﭙﺲ ﺑﻪ ﻫﺮ دﻛﻤﻪ وﻇﻴﻔﻪ ﺧﺎص ﺧﻮدش از ﻃﺮق ﻳﻚ زﻳﺮ ﺑﺮﻧﺎﻣﻪ ﻣﺮﺑﻮط ﺑﻪ آن دﻛﻤﻪ ﻛﻪ Callback Functionﻧﺎم دارد ﻣﺤﻮل ﻣﻲﺷﻮد .اﻟﺒﺘﻪ در ﺑﻴﻦ راه اﻋﻤﺎل ﻓﺮﻋﻲ دﻳﮕﺮي ﻧﻈﻴﺮ ﺗﻌﻴﻴﻦ ﺷﺎﺧﺼﻪﻫﺎي propertiesدﻛﻤﻪﻫﺎ ،و ﭘﻨﺠﺮهﻫﺎ ﻧﻴﺰ اﻧﺠﺎم ﻣﻲﺷﻮد .ﺑﻪ ﻣﺜﺎلﻫﺎي زﻳﺮ و ﺗﻮﺿﻴﺤﺎت ﻣﺮﺑﻮﻃﻪ ﺗﻮﺟﻪ ﻛﻨﻴﺪ.
ﻣﺜﺎل: ﭘﻨﺠﺮهاي ﺑﺴﺎزﻳﺪ ﺷﺎﻣﻞ -1 :ﻳﻚ دﻛﻤﻪ ﻓﺸﺎري push buttonﻛﻪ روي آن ﻛﻠﻤﻪ Timeﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺎﺷﺪ و ﭘﺲ از ﻛﻠﻴﻚ ،ﺳﺎﻋﺖ را روي ﺧﻮدش ﻧﻤﺎﻳﺶ دﻫﺪ -2.ﻳﻚ دﻛﻤﻪ ﻣﺘﻦ اﻳﺴﺘﺎ Static text buttonﻛﻪ روي آن Date ﻧﻮﺷﺘﻪ ﺑﺎﺷﺪ و ﭘﺲ از ﻓﺸﺮدن دﻛﻤﻪ ﻓﺸﺎري ﻗﺒﻠﻲ ﺗﺎرﻳﺦ را ﻧﺸﺎن دﻫﺪ -3 .ﻳﻚ دﻛﻤﻪ ﻓﺸﺎري ﻛﻪ روي آن Refresh
ﻧﻮﺷﺘﻪ ﺑﺎﺷﺪ و دو دﻛﻤﻪ ﻗﺒﻞ را ﺑﻪ ﺣﺎﻟﺖ اول ﺑﺮﮔﺮداﻧﺪ.
ﺣﻞ: اﺑﺘﺪا دﺳﺘﻮر guideرا ازﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻣﻲﻛﻨﻴﻢ .ﭘﺲ از ﻇﻬﻮر اﺑﺰارﻫﺎي ﻣﺮﺑﻮﻃﻪ ) ﺷﻜﻞ (1-14ﺳﻪ دﻛﻤﻪ ﺧﻮاﺳﺘﻪ ﺷﺪهي ﻓﻮق را از ﻣﻴﻠﻪ اﺑﺰار uicontrolsاﻧﺘﺨﺎب و ﺑﻪ داﺧﻞ LEﻣﻲآورﻳﻢ ﭘﺲ از ﺑﻌﻀﻲ وﻳﺮاﻳﺶﻫﺎ ﻛﻪ ذﻛﺮ ﺧﻮاﻫﻨﺪ ﺷﺪ ،ﺷﻜﻞ 2-14ﺣﺎﺻﻞ ﻣﻲﺷﻮد.
)Layout Editor(LE
← uicontrols
ﺷﻜﻞ 1-14
128
ﺷﻜﻞ 2-14
ﺷﺎﺧﺼﻪ ﻳﺎب
property inspector
روي ، LEراﺳﺖ ﻛﻠﻴﻚ و از ﻣﻨﻮي ﻓﻮري ﻛﻪ ﺑﺎز ﻣﻲﺷﻮد اﻧﺘﺨﺎب ﺷﺎﺧﺼﻪﻳﺎب property inspectorرا ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ .ﭘﻨﺠﺮه ﻣﺮﺑﻮﻃﻪ ﺑﺎز ﻣﻲﺷﻮد.
→ ﺷﺎﺧﺼﻪي ﻋﻨﻮان
ﺷﻜﻞ 3-14
ﺷﺎﺧﺼﻪ ﻋﻨﻮان
Name or String
اﻳﻦ ﺷﺎﺧﺼﻪ ﺑﺮاي ﺑﻌﻀﻲ از اﺷﻴﺎء Stringو ﺑﺮاي ﺑﻌﻀﻲ Nameﮔﻔﺘﻪ ﺷﺪه و روي ﺷﻴﺊ ﺣﻚ ﻣﻲﺷﻮد .ﺑﺮاي ﻛﺎر ﺑﺎ اﻳﻦ ﺷﺎﺧﺼﻪ از ﻣﺜﺎل ﻓﻮق -1در ﺷﺎﺧﺼﻪﻳﺎب ﺷﺎﺧﺼﻪ Nameرا اﻧﺘﺨﺎب و ﻣﻘﺎﺑﻞ آن ﻛﻠﻤﻪ Time Dateرا ﻣﻲﻧﻮﻳﺴﻴﻢ .ﻧﺎم ﭘﻨﺠﺮهي ﺣﺎﺻﻞ ﭘﺲ از اﺟﺮا Time Dateﻣﻲﺷﻮد -2 .دﻛﻤﻪ ﻣﺘﻦ را ﻓﻌﺎل ﻛﺮده از ﺷﺎﺧﺼﻪﻳﺎب ﺑﺮاي ﺷﺎﺧﺼﻪي Stringﻛﻠﻤﻪ Dateرا ﻣﻲﻧﻮﻳﺴﻴﻢ .اﻳﻦ ﻛﻠﻤﻪ روي دﻛﻤﻪ ﻣﺘﻦ ﺣﻚ ﻣﻲﺷﻮد -3 .دﻛﻤﻪ ﻓﺸﺎري اول را ﻓﻌﺎل ﻛﺮده از ﺷﺎﺧﺼﻪﻳﺎب ﺑﺮاي ﺷﺎﺧﺼﻪي Stringﻛﻠﻤﻪ Timerرا ﻣﻲﻧﻮﻳﺴﻴﻢ .اﻳﻦ ﻛﻠﻤﻪ روي دﻛﻤﻪ ﺣﻚ ﻣﻲﺷﻮد -4 .دﻛﻤﻪ ﻓﺸﺎري دوم را ﻓﻌﺎل ﻛﺮده از ﺷﺎﺧﺼﻪﻳﺎب ﺑﺮاي ﺷﺎﺧﺼﻪي Stringﻛﻠﻤﻪ Refreshرا ﻣﻲﻧﻮﻳﺴﻴﻢ .اﻳﻦ ﻛﻠﻤﻪ روي دﻛﻤﻪ ﺣﻚ ﻣﻲﺷﻮد.
129
ﺷﺎﺧﺼﻪ ﺑﺮﭼﺴﺐ
Tag
ﺷﺎﺧﺼﻪ ﺑﺮﭼﺴﺐ Tagﻧﺎم ﺷﻴﺊ اﺳﺖ ﻛﻪ در ﺑﺮﻧﺎﻣﻪ ﺑﺎ اﻳﻦ ﻧﺎم ﺑﻪ ﺷﻴﺊ ﻣﺮاﺟﻌﻪ ﻣﻲﺷﻮد .ﺷﺎﺧﺼﻪ ﺑﺮﭼﺴﺐ را ﺑﺮاي ﻫﺮ ﭼﻬﺎر ﺷﻴﺊ ،در ﭘﻨﺠﺮه ﺷﺎﺧﺼﻪﻳﺎبِ ﻫﺮﻛﺪام ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ ،اﻣﺎ ﻧﻴﺎزي ﺑﻪ ﺗﻐﻴﻴﺮ دادن آنﻫﺎ ﻧﻴﺴﺖ. ﺑﻌﻀﻲ از ﺷﺎﺧﺼﻪﻫﺎي ﻣﺜﺎل: ﻋﻨﻮان
ﺑﺮﭼﺴﺐ Tag
String or Name
)ادﻳﺖ ﻧﺸﺪه(
ﺷﻴﺊ
)ادﻳﺖ ﺷﺪه( Runtime window
Time Date
figure1
دﻛﻤﻪ ﻣﺘﻦِ اﻳﺴﺘﺎ
Static text
Date
text1
دﻛﻤﻪ ﻓﺸﺎري1
Push Button1
pushbutton1 Time
دﻛﻤﻪ ﻓﺸﺎري2
Push Button2
pushbutton2 Refresh
ﭘﻨﺠﺮه اﺟﺮا
ﺗﻮاﺑﻊ ﻓﺮاﺧﻮان
Callback Function
در داﺧﻞ ﺑﺮﻧﺎﻣﻪ ﺑﺮاي ﻋﻤﻞ ﻳﺎ اﻋﻤﺎﻟﻲ ﻛﻪ ﺑﺎ ﻓﺸﺮدن ﻳﻚ دﻛﻤﻪ ﻳﺎ ﻛﻠﻴﻚ روي ﻳﻚ ﭘﻨﺠﺮه اﻧﺠﺎم ﻣﻲﺷﻮد ﺗﺎﺑﻌﻲ ﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ ﺗﺎﺑﻊ ﻓﺮاﺧﻮان آن ﭘﻨﺠﺮه ﻳﺎ آن دﻛﻤﻪ Callback Functionﮔﻔﺘﻪ ﻣﻲﺷﻮد.
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ در ﭘﻨﺠﺮه LEاﻧﺘﺨﺎب Runرا از ﻣﻴﻠﻪ اﺑﺰار ﻳﺎ از ﻣﻨﻮي Toolsاﺟﺮا ﻣﻲﻛﻨﻴﻢ .ﻳﻚ ام -ﻓﺎﻳﻞ ﺑﺮاي ﻧﮕﻪداري دﺳﺘﻮرات ﺑﺮﻧﺎﻣﻪ ﺑﺎز ﻣﻲﺷﻮد .ﻧﺎم آن را tim.mﻣﻲﮔﺬارﻳﻢ .ﻧﺎم LEﻫﻢ ﺧﻮدﺑﻪﺧﻮد tim.figﻣﻲﺷﻮد .ﻫﺮدو ﻓﺎﻳﻞ tim.mو tim.figدر دﻳﺮﻛﺘﻮري ﺟﺎري ذﺧﻴﺮه ﻣﻲﺷﻮﻧﺪ .ﺣﺎل ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﻪ داﺧﻞ tim.mﻣﻲروﻳﻢ .در ﻣﺘﻦ ﺗﺎﺑﻊ ﻓﺮاﺧﻮان دﻛﻤﻪ ﻓﺸﺎري) 1داراي ﺑﺮﭼﺴﺐ (pushbutton1ﺑﺮﻧﺎﻣﻪ زﻳﺮ را وارد ﻣﻲﻛﻨﻴﻢ .ﺑﻪ دﺳﺘﻮرﻫﺎ و ﺳﻄﺮﻫﺎي راﻫﻨﻤﺎ commentsﻛﻪ در داﺧﻞ ام -ﻓﺎﻳﻞ ﺑﻪ ﺻﻮرت ﺧﻮدﻛﺎر ﻧﻮﺷﺘﻪ ﺷﺪه ﻛﺎري ﻧﺪارﻳﻢ. )function pushbutton1_Callback(hObject, eventdata, handles ;t = clock ;d = date ;))tm = sprintf('%2.0f: %2.0f: %2.0f:',t(4),t(5),t(6 دو رﻗﻢ از رﺷﺘﻪﻫﺎي ﺳﺎﻋﺖ ،دﻗﻴﻘﻪ و ﺛﺎﻧﻴﻪ را داﺧﻞ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي tmﻣﻲﻧﻮﻳﺴﺪ % ﻣﺘﻐﻴﺮ dtرا ﺑﺎ 12ﻣﻜﺎن اﻳﺠﺎد و رﺷﺘﻪي ﺗﺎرﻳﺦ را در آن ﻣﻲﻧﻮﻳﺴﺪ %
;)dt = sprintf('%12s',d
)set(gcbo,'String',tm ﺷﺎﺧﺼﻪي ﻋﻨﻮانِ ﺷﻴﺊ ﻣﺮﺑﻮط ﺑﻪ ﺗﺎﺑﻊ gcbo = get callback objectرا ) tmزﻣﺎن( ﻗﺮار ﻣﻲدﻫﺪ% . ))set(handles.text1,'String',char(dt ﺷﺎﺧﺼﻪي ﻋﻨﻮان ﺷﻴﺊ ) text1دﻛﻤﻪ ﻣﺘﻦ( را ﺑﻪ ) dtﺗﺎرﻳﺦ( ﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ% .
در ﻣﺘﻦ ﺗﺎﺑﻊ ﻓﺮاﺧﻮان دﻛﻤﻪ ﻓﺸﺎري) 2داراي ﺑﺮﭼﺴﺐِ (pushbutton2ﺑﺮﻧﺎﻣﻪ زﻳﺮ را وارد ﻣﻲﻛﻨﻴﻢ. )function pushbutton2_Callback(hObject, eventdata, handles )'set(handles.pushbutton1,'String','Time رﺷﺘﻪ روي دﻛﻤﻪ ﻓﺸﺎري 2را ﺑﻪ ﻛﻠﻤﻪ Timeﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ % )'set(handles.text1,'String','Date رﺷﺘﻪ روي دﻛﻤﻪ ﻣﺘﻦ را ﺑﻪ ﻛﻠﻤﻪ Dateﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ %
130
ﺑﺮﻧﺎﻣﻪي GUIﻓﻮق از 3ﻃﺮﻳﻖ ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ: در ﭘﻨﺠﺮه LEﺑﺎ اﻧﺘﺨﺎب Runاز ﻣﻴﻠﻪ اﺑﺰار -در ﭘﻨﺠﺮه LEﺑﺎ اﻧﺘﺨﺎب Runاز ﻣﻨﻮي Tools
از داﺧﻞ ام -ﻓﺎﻳﻞ ﺑﻪ ﻃﺮﻳﻖ ﻣﻌﻤﻮل اﺟﺮاي ام -ﻓﺎﻳﻞﻫﺎﻫﺮ ﺑﺮﻧﺎﻣﻪ GUIداراي دو ﻓﺎﻳﻞ اﺳﺖ ،ﻳﻜﻲ ﺑﺎ ﭘﺴﻮﻧﺪ .figﻛﻪ ﮔﺮاﻓﻴﻜﻲ اﺳﺖ و ﺳﺎﺧﺘﺎر ﭘﻨﺠﺮه ﺧﺮوﺟﻲ و اﺷﻴﺎء داﺧﻞ آن را درﺑﺮ ﻣﻲﮔﻴﺮد ،و دﻳﮕﺮي ﺑﺎ ﭘﺴﻮﻧﺪ ) .mام -ﻓﺎﻳﻞ( ﻛﻪ رﻓﺘﺎرﻫﺎي ﻫﺮ ﺷﻴﺊ را ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ codeﻧﮕﻪ ﻣﻲدارد.
اﺟﺮاي GUIو ﺑﺎز ﻛﺮدن ﻗﺴﻤﺖ ﮔﺮاﻓﻴﻜﻲ آن ﺑﺮاي ادﻳﺖ ،دو ﻋﻤﻞ ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ. ﺳﺆال :ﭘﻨﺠﺮه GUIﻣﺜﺎل ﻓﻮق را ﺑﺎز ﻛﻨﻴﺪ )ﻗﺴﻤﺖ ﮔﺮاﻓﻴﻜﻲ ﻳﻚ GUIﺑﺎ اﺟﺮاي guideو اﻧﺘﺨﺎب ﺷﺴﺘﻲ open existing GUIﺑﺮاي ادﻳﺖ ﺷﺪن ﺑﺎز ﻣﻲﺷﻮد( .ﺳﭙﺲ از ﻣﻨﻮي Toolsﺑﺮ اﻧﺘﺨﺎب GUI Options
ﻛﻠﻴﻚ ﻛﺮده در ﭘﻨﺠﺮه دﻳﺎﻟﻮگ ﺑﺎز ﺷﺪه ﻣﻘﺎﺑﻞ ﻋﻨﻮان Resize behavior:اﻧﺘﺨﺎب Proportionalرا ﺑﻴﺎورﻳﺪ .ﺳﭙﺲ ﭘﻨﺠﺮه را اﺟﺮا ﻛﻨﻴﺪ .اﻳﻦﺑﺎر اﻧﺪازه ﭘﻨﺠﺮه ﺧﺮوﺟﻲ اﻳﺠﺎد ﺷﺪه ﻗﺎﺑﻞ ﺗﻐﻴﻴﺮ اﺳﺖ ،ﺑﺎ ﺑﺮدن ﻣﺎوس ﺑﻪ ﮔﻮﺷﻪﻫﺎي آن و ﻓﺸﺮده -ﻛﺸﻴﺪن ،اﺑﻌﺎد ﭘﻨﺠﺮه را ﺗﻐﻴﻴﺮ دﻫﻴﺪ.
ﻣﺜﺎل: ﺷﺒﻴﻪ ﺳﺎزي ﻣﺪوﻻﺳﻴﻮن داﻣﻨﻪ ﻳﻚ ﻣﺪوﻻﺳﻴﻮن داﻣﻨﻪ را ﻣﻄﺎﺑﻖ ﺷﻜﻞ ،ﺷﺒﻴﻪ ﺳﺎزي ﻛﻨﻴﺪ .ﻓﺮﻛﺎﻧﺲ ) Signalﭘﻴﺶﻓﺮض (100روي ﻓﺮﻛﺎﻧﺲ Carrier
)ﭘﻴﺶﻓﺮض (1000ﻣﺪوﻟﻪ ) (AMﻣﻲﺷﻮد .داﻣﻨﻪ و ﮔﺎم زﻣﺎن زﻳﺮ ﻣﺘﻦ اﻳﺴﺘﺎي Durationﻣﻲآﻳﺪ .ﻓﺸﺮدن دﻛﻤﻪ Modulateﺷﺒﻴﻪﺳﺎزي را اﻧﺠﺎم ﻣﻲدﻫﺪ .ﻣﺤﻮر axes1ﺷﻜﻞﻣﻮج ﻣﺪوﻟﻪ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ .ﺳﭙﺲ در داﺧﻞ ﺑﺮﻧﺎﻣﻪ )ﻛﻪ ﺷﺮح آن در زﻳﺮ آﻣﺪه( ﺳﺮي ﻓﻮرﻳﻪ اﻳﻦ ﺷﻜﻞ ﻣﻮج ﺗﻌﻴﻴﻦ و دوﺑﺎره ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﻣﻌﻜﻮس اﻧﺠﺎم ﻣﻲﺷﻮد ﻛﻪ ﺑﺎﻳﺴﺘﻲ ﻧﺘﻴﺠﻪ آن ،ﺷﻜﻞ ﻣﻮج اوﻟﻴﻪ ﺑﺎﺷﺪ .ﻧﺘﻴﺠﻪ روي axes2ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد. LEرا ﻣﻄﺎﺑﻖ ﺷﻜﻞ 4-14ﻣﻲﺳﺎزﻳﻢ:
ﺷﻜﻞ 4-14
131
ﺟﺪول زﻳﺮ ﺷﺎﺧﺼﻪﻫﺎي اﺷﻴﺎء را ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ: ﺷﻴﺊ
ﻋﻨﻮان ) String or Nameادﻳﺖ ﺷﺪه( ﺑﺮﭼﺴﺐ ) Tagﭘﻴﺶﻓﺮض( TwoA
figure1 text1...text5
LE 5 Static Textدﻛﻤﻪ ﻣﺘﻦ اﻳﺴﺘﺎ را ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﻧﺎم ﮔﺬارﻳﺪ
100, 1000, 0:0.0001:0.03
edit1...edit3 axes1,axes2 pushbutton1
Edit Axes Modulate Push Button در ﭘﻨﺠﺮه LEاﻧﺘﺨﺎب Runرا از ﻣﻴﻠﻪ اﺑﺰار ﻳﺎ از ﻣﻨﻮي Toolsاﺟﺮا ﻣﻲﻛﻨﻴﻢ .ﻳﻚ ام -ﻓﺎﻳﻞ ﺑﺮاي ﻧﮕﻪداري دﺳﺘﻮرات
ﺑﺮﻧﺎﻣﻪ ﺑﺎز ﻣﻲﺷﻮد .ﻧﺎم آن را TwoA.mﻣﻲﮔﺬارﻳﻢ .ﻧﺎم LEﻫﻢ ﺧﻮدﺑﻪﺧﻮد TwoA.figﻣﻲﺷﻮد .ﻫﺮدو ﻓﺎﻳﻞ در دﻳﺮﻛﺘﻮري ﺟﺎري ذﺧﻴﺮه ﻣﻲﺷﻮﻧﺪ .ﺣﺎل ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﻪ داﺧﻞ TwoA.mﻣﻲروﻳﻢ .در ﻣﺘﻦ ﺗﺎﺑﻊ ﻓﺮاﺧﻮان pushbutton1ﺑﺮﻧﺎﻣﻪ زﻳﺮ را وارد ﻣﻲﻛﻨﻴﻢ .ﺑﻪ دﺳﺘﻮرﻫﺎ و ﺳﻄﺮﻫﺎي راﻫﻨﻤﺎ commentsﻛﻪ در داﺧﻞ ام -ﻓﺎﻳﻞ ﺑﻪ ﺻﻮرت ﺧﻮدﻛﺎر ﻧﻮﺷﺘﻪ ﺷﺪه ﻛﺎري ﻧﺪارﻳﻢ. )function pushbutton1_Callback(hObject, eventdata, handles ;))'f1 = str2double(get(handles.edit1,'String ﻧﻮﺷﺘﻪ روي دﻛﻤﻪ ﺑﺎ ﺑﺮﭼﺴﺐ edit1را ﺑﻪ ﻋﺪد ﺗﺒﺪﻳﻞ و در f1ﻣﻲرﻳﺰد% . ;))'f2 = str2double(get(handles.edit2,'String ;))'t = eval(get(handles.edit3,'String ﻧﻮﺷﺘﻪ روي دﻛﻤﻪ edit3را ﺑﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻋﺪدي ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ % ;omg1 = 2*pi*f1 ;omg2 = 2*pi*f2 ;)yt = cos(omg1*t) .* cos(omg2*t ﻣﺤﻮر اوﻟﻲ ﻓﻌﺎل ﻣﻲﺷﻮد axes(handles.axes1) % )plot(omg1*t, yt درﺟﻪ ﮔﺬاري رﻳﺰ ﻣﺤﻮر اﻓﻘﻲ را آﺷﻜﺎر ﻣﻲﻛﻨﺪ set(handles.axes1,'XMinorTick','on')%
ﺳﺮي ﻓﻮرﻳﻪِ ﺷﻜﻞ ﻣﻮج ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮد ،ﺿﺮاﺋﺐ اﻳﻦ ﺳﺮي اﻋﺪاد ﻣﻮﻫﻮﻣﻲ ﻫﺴﺘﻨﺪ
grid on yf = fft(yt);%
ﻣﻌﻜﻮس ﺳﺮي ﻓﻮرﻳﻪ ﺑﺮاي ﻣﻘﺎدﻳﺮ ﺣﻘﻴﻘﻲ ﺿﺮاﺋﺐ ﻓﻮرﻳﻪ ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﻧﺪ yt1=real(ifft(yf));% ﻣﺤﻮر دوﻣﻲ ﻓﻌﺎل ﻣﻲﺷﻮد axes(handles.axes2)% )plot(omg1*t, yt1 درﺟﻪ ﮔﺬاري رﻳﺰ ﻣﺤﻮر اﻓﻘﻲ را آﺷﻜﺎر ﻣﻲﻛﻨﺪ set(handles.axes2,'XMinorTick','on')% grid on ﻣﺤﻮرﻳﻦ (axes1) 1ﻣﻮج ﻣﺪوﻟﻪ را ﻧﺸﺎن ﻣﻲدﻫﺪ .ﺑﺮاي ﻧﻤﺎﻳﺶ روي ﻣﺤﻮرﻳﻦ (axes2)2اﺑﺘﺪا از ﻣﻮج AMﺑﺎ ﺗﺎﺑﻊ
)( fftﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﻣﻘَﻄﱠﻊ )ﺳﺮي ﻓﻮرﻳﻪ( ﮔﺮﻓﺘﻪاﻳﻢ .ﺳﭙﺲ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ ﺿﺮاﺋﺐ ﻓﻮرﻳﻪ را ﺑﺎ ﺗﺎﺑﻊ )( realﭘﻴﺪا ﻛﺮده و ﺑﺎ ﺗﺎﺑﻊ )( ifftﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﻣﻌﻜﻮس اﻧﺠﺎم دادهاﻳﻢ .ﺑﺎﻳﺴﺘﻲ ﺷﻜﻞ ﻣﻮج اوﻟﻴﻪ دو ﺑﺎره ﺑﻪ دﺳﺖ آﻳﺪ .ﻧﺘﻴﺠﻪ اﺟﺮا ﭘﺲ از ﻳﻚ ﺑﺎر ﻓﺸﺮدن دﻛﻤﻪ Modulateﺷﻜﻞ 5-14اﺳﺖ. ﺳﺆال :ﻣﻘﺎدﻳﺮ ﺳﻴﮕﻨﺎل ،ﻛﺮﻳﺮ ،و ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ را ﭼﻨﺪ ﺑﺎر ﺗﻐﻴﻴﺮ دﻫﻴﺪ و ﻧﺘﻴﺠﻪ را ﺑﺎ ﻓﺸﺮدن دﻛﻤﻪ Modulateﺑﺒﻴﻨﻴﺪ.
2-14ﺗﻤﺮﻳﻦ ﻳﻚ GUIﺑﻪ ﻧﺎم ) newﻣﻄﺎﺑﻖ ﺷﻜﻞ (6-14ﻃﺮاﺣﻲ ﻛﻨﻴﺪ ﻛﻪ ﺑﺎ ﻓﺸﺮدن دﻛﻤﻪ Startاﻋﺪاد اول را ﻧﻤﺎﻳﺶ دﻫﺪ .و ﺑﺎ ﻓﺸﺮدن دﻛﻤﻪ Exitﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم و ﭘﻨﺠﺮه ﺑﺴﺘﻪ ﺷﻮد .ﻣﺠﻤﻮﻋﻪ اﺷﻴﺎء اﻳﻦ GUIدر ﺟﺪول آﻣﺪه اﺳﺖ. راﻫﻨﻤﺎ :ﺑﺮاي ﺑﺴﺘﻦ ﭘﻨﺠﺮه از دﺳﺘﻮر ) close(handles.newاﺳﺘﻔﺎده ﺷﻮد.
132
( )ﭘﻴﺶﻓﺮضTag ﺑﺮﭼﺴﺐ tex1 edit1 pushbutton1 text2 text3 pushbutton2
( )ادﻳﺖ ﺷﺪهString or Name ﻋﻨﻮان
Enter the upper limit(5
5-14 ﺷﻜﻞ
6-14 ﺷﻜﻞ
133
ﺷﻴﺊ
EXCEL ﺑﺨﺶ دو
134
ﻓﺼﻞ 15ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺻﻔﺤﻪ ﮔﺴﺘﺮده 1-15ﺑﺮﭼﺴﺐ ﮔﺬاري ﺑﺮﭼﺴﺐ ﭘﻴﺶ ﻓﺮض ﻳﻚ ﺳﻠﻮل ﭘﺲ از اﺟﺮاي ﺑﺮﻧﺎﻣﻪ اﻛﺴﻞ ،ﺻﻔﺤﻪ ﮔﺴﺘﺮده ﺑﻪ ﺻﻮرت ﻳﻚ ﺟﺪول ﭘﻴﺶ روي ﻣﺎ ﻇﺎﻫﺮ ﻣﻲﺷﻮد .ﻫﺮ ﺧﺎﻧﻪ اﻳﻦ ﺟﺪول ﻳﻚ ﺳﻠﻮل ﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد .ﺑﺮﭼﺴﺐ ﺳﺘﻮنﻫﺎ ﺑﺎ ﺣﺮوف ﺑﺰرگ اﻧﮕﻠﻴﺴﻲ در ﺑﺎﻻي ﺟﺪول و ﺑﺮﭼﺴﺐ ردﻳﻒﻫﺎ ﺑﺎ ﻋﺪد در ﻣﻨﺘﻬﺎاﻟﻴﻪ ﺳﻤﺖ ﭼﭗ ﺟﺪول آﻣﺪهاﻧﺪ .ﺑﺮﭼﺴﺐ ﭘﻴﺶﻓﺮض ﻫﺮ ﺳﻠﻮل از ﺗﻘﺎﻃﻊ ﻧﺎم ﺳﺘﻮن و ردﻳﻒ آن ﺳﻠﻮل ﺣﺎﺻﻞﺷﺪه و ﺑﺮﭼﺴﺐ ﺳﺘﻮن -ردﻳﻒ ﮔﻔﺘﻪ ﻣﻲﺷﻮد .ﺑﺮﭼﺴﺐ ﺳﺘﻮن -ردﻳﻒ ﻫﺮ ﺳﻠﻮل ﻣﺸﺎﺑﻪ ﻧﺎم ﻣﺘﻐﻴﺮ در زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ اﺳﺖ .ﻣﺮﺑﻊ ﻛﻮﭼﻚ در ﮔﻮﺷﻪ ﻳﻚ ﺳﻠﻮل ﻓﻌﺎل )ﺳﻠﻮﻟﻲ ﻛﻪ روي آن ﻛﻠﻴﻚ ﺷﺪه( ﮔﻴﺮه اﻧﺘﻘﺎل fill handleﻧﺎم دارد ،و ﻣﺤﺘﻮﻳﺎت ﻳﻚ ﺳﻠﻮل را ﺑﻪ ﻃﻮر ﻧﺴﺒﻲ ﺑﻪ اﻃﺮاف ﻣﻲﻛﺸﺪ .ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﻄﺎﻟﻌﻪ ﻣﺒﺎﺣﺚ اداﻣﻪ دﻫﻴﺪ.
ﻣﺜﺎل: ﺑﺮاي ﻓﻌﺎل ﻛﺮدن ﺳﻠﻮل D7اﺑﺘﺪا روي آن ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ .ﺑﺮﭼﺴﺐ ﺳﺘﻮن -ردﻳﻒِ ﭘﻴﺶﻓﺮض ﻫﺮ ﺳﻠﻮل در ﺟﻌﺒﻪي ﻧﺎم ﻧﺸﺎن داده ﻣﻲﺷﻮد. ﻣﻴﻠﻪ ﻓﺮﻣﻮل←
→ﺟﻌﺒﻪ ﻧﺎم
ﺳﻠﻮل ﻓﻌﺎل D7 ↓
↑ ﮔﻴﺮه اﻧﺘﻘﺎل
ﺷﻜﻞ 1-15
ﺑﺮﭼﺴﺐ ﮔﺬاري دل ﺧﻮاه ،ﻣﺘﻐﻴﺮ و آراﻳﻪ در اﻛﺴﻞ ﻣﻲﺗﻮاﻧﻴﻢ ﺑﺮﭼﺴﺐﻫﺎي دلﺧﻮاﻫﻲ را ﺑﺮاي ﻳﻚ ﺳﺘﻮن ﻳﺎ ﻳﻚ ردﻳﻒ در ﻣﺤﻠﻲ از ﺟﺪول وارد ﻛﻨﻴﻢ .و ﺳﭙﺲ در ارﺟﺎﻋﺎت از ﺑﺮﭼﺴﺐﻫﺎي اﺧﺘﺼﺎﺻﻲ ﺧﻮدﻣﺎن اﺳﺘﻔﺎده ﻛﻨﻴﻢ .ﺳﻠﻮل ﻣﺤﻞ ﺗﻘﺎﻃﻊ ﺑﺮﭼﺴﺐﻫﺎي دلﺧﻮاه ﻧﺎم ﺳﺘﻮن -ردﻳﻒ ﺟﺪﻳﺪ را ﺧﻮاﻫﺪ ﮔﺮﻓﺖ .ﺑﺮاي ﻓﻌﺎل ﻛﺮدن ﺑﺮﭼﺴﺐ ﮔﺬاري دلﺧﻮاه ﺑﺎﻳﺴﺘﻲ اﺑﺘﺪا اﻧﺘﺨﺎب زﻳﺮ را ﺗﻴﻚ ﺑﺰﻧﻴﻢ: Tools_Options_Calculation_Accept labels in formulas
اﮔﺮ ﻳﻚ ﺳﻠﻮل را ﻣﺸﺎﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ در ﻧﻈﺮ ﺑﮕﻴﺮﻳﻢ ،ﻧﺎم ﭘﻴﺶﻓﺮض ﻣﺘﻐﻴﺮ ﻫﻤﺎن ﺑﺮﭼﺴﺐ ﺳﺘﻮن -ردﻳﻒ آن اﺳﺖ .اﻟﺒﺘﻪ ﺑﺎ ﺑﺮﭼﺴﺐ ﮔﺬاري و ﻧﺎمﮔﺬاري ﻣﻲﺗﻮان ﻧﺎم ﻣﺘﻐﻴﺮ )ﺳﻠﻮل( را ﺑﻪ دلﺧﻮاه ﺗﻌﻴﻴﻦ ﻛﺮد .اﻣﺎ ﻧﺎم ﭘﻴﺶ ﻓﺮض ﻫﻤﻴﺸﻪ ﻣﻌﺘﺒﺮ ﻣﻲﻣﺎﻧﺪ و ﻗﺎﺑﻞ ﻣﺮاﺟﻌﻪ اﺳﺖ .ﺑﺮ ﭼﺴﺐ ﻳﺎ ﻧﺎم ﺳﻠﻮل در ﺟﻌﺒﻪ ﻧﺎم ﻧﺸﺎن داده ﻣﻲﺷﻮد. ﻣﻲﺗﻮان ﻣﻘﺪار ﺳﻠﻮل را ﻳﻚ رﺷﺘﻪ ﻗﺮار داد .از رﺷﺘﻪﻫﺎ ﺑﺮاي ﺗﻮﺿﻴﺢ ﻣﻄﺎﻟﺐ ﻳﺎ ﺑﺮﭼﺴﺐﮔﺬاري ﻳﺎ ﻧﺎمﮔﺬاري )ﺗﻮﺿﻴﺢ ﻧﺎم- ﮔﺬاري ﺑﻌﺪاٌ ﻣﻲآﻳﺪ( اﺳﺘﻔﺎده ﻣﻲﺷﻮد .رﺷﺘﻪ اي ﻛﻪ ﻣﻘﺪار ﺳﻠﻮل اﺳﺖ در داﺧﻞ آن ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد. ﻣﻲﺗﻮان ﻣﻘﺪار ﺳﻠﻮل را ﻳﻚ ﻋﺪد ﻗﺮار داد .اﻳﻦ ﻋﺪد در داﺧﻞ ﺳﻠﻮل ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد. اﮔﺮ ﻣﻘﺪار ﺳﻠﻮل ﻧﺘﻴﺠﻪ ﻳﻚ ﻣﺤﺎﺳﺒﻪ ﺑﺎﺷﺪ ،ﻣﻘﺪار در ﻣﺤﻞ ﺳﻠﻮل ﻧﺸﺎن داده ﻣﻲﺷﻮد .ﻓﺮﻣﻮلِ ﻣﺤﺎﺳﺒﻪ در ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﻧﺸﺎن داده ﻣﻲﺷﻮد. 135
وﻗﺘﻲ ﺑﻪ ﻳﻚ ﺳﺘﻮن ﻣﺮاﺟﻌﻪ ﻛﻨﻴﻢ ﻧﺎم ﺳﺘﻮن ﻣﺎﻧﻨﺪ ﻧﺎم آراﻳﻪاي ﻋﻤﻞ ﻣﻲﻛﻨﺪ ﻛﻪ اﻋﻀﺎء آن آراﻳﻪ ﺳﻠﻮلﻫﺎي واﻗﻊ در ﺑﻴﻦ ﻧﺎم ﺳﺘﻮن و ﻣﺤﻞ ﻓﺮﻣﻮل اﺳﺖ
ﻣﺜﺎل ﻫﺎ: ﻣﺮاﺟﻌﻪ ﺑﻪ ﻧﺎم ﻣﺘﻐﻴﺮ )ﺳﻠﻮل( ﻳﻚ ﺑﺮﭼﺴﺐ ﺳﺘﻮن در ﻣﺤﻞ C3و ﻳﻚ ﺑﺮﭼﺴﺐ ردﻳﻒ در ﻣﺤﻞ B6وارد ﻣﻲﻛﻨﻴﻢ .در ﺳﻠﻮل ﻣﺤﻞ ﺗﻘﺎﻃﻊ آن دو ﻳﻌﻨﻲ C6
)ﻛﻪ از اﻳﻦ ﭘﺲ ﺑﺎ ﺑﺮﭼﺴﺐ Cnam Rnamﻧﻴﺰ ﻗﺎﺑﻞ ارﺟﺎع اﺳﺖ( ﻋﺪد 25را وارد ﻣﻲﻛﻨﻴﻢ .ﺳﭙﺲ ﺑﻪ ﺳﻠﻮل A8رﻓﺘﻪ ﺑﺎ ارﺟﺎع ﺑﻪ ﺳﻠﻮل Cnam Rnamدو ﺑﺮاﺑﺮ ﻣﻘﺪار آن را در A8ﻗﺮار ﻣﻴﺪﻫﻴﻢ .وﺿﻌﻴﺖ ﻣﻴﻠﻪ ﻓﺮﻣﻮل و ﺟﻌﺒﻪ ﻧﺎم را ﺑﺮرﺳﻲ ﻣﻲﻛﻨﻴﻢ. ﻫﻤﺎنﻃﻮر ﻛﻪ در ﺷﻜﻞ 2-15ﻣﻲﺷﻮد ،ﺳﻠﻮل A8را ﻣﺴﺎوي ﺑﺮﭼﺴﺐ ﺟﺪﻳﺪِ ) C6ﻳﻌﻨﻲ (Cnam Rnamﺿﺮب در دو ﻗﺮار دادهاﻳﻢ .اﮔﺮ در ﻣﺤﻞ A8ﻓﺮﻣﻮلِ 2*C6را ﻫﻢ وارد ﻛﻨﻴﻢ ﻫﻤﻴﻦ ﻧﺘﻴﺠﻪ ﺣﺎﺻﻞ ﻣﻲﺷﻮد. → ﺟﻌﺒﻪ ﻧﺎم
ﻣﻴﻠﻪ ﻓﺮﻣﻮل ←
ﺷﻜﻞ 2-15
در زﻳﺮِ Cnamﺳﻪ ﻋﺪد وارد ﻣﻲﻛﻨﻴﻢ ،ﺣﺎﺻﻞﺟﻤﻊ آنﻫﺎ را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي )( SUMدر C7ﻗﺮار ﻣﻲدﻫﻴﻢ. ﭘﺲ از وارد ﻛﺮدن اﻋﺪاد در زﻳﺮ Cnamﺑﻪ C7ﻣﻲروﻳﻢ و ﻋﺒﺎرت ) =SUM(Cnamرا وارد ﻣﻲﻛﻨﻴﻢ ،ﻣﺠﻤﻮع اﻋﺪاد ﺳﺘﻮن Cnamدر اﻳﻦ ﺳﻠﻮل ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد.
ﺷﻜﻞ 3-15
ﻣﺮاﺟﻌﻪ ﺑﻪ ﻧﺎم و ﻋﻨﺎﺻﺮ ﻳﻚ ﺳﺘﻮن )آراﻳﻪ( ﺗﻌﺪاد ﻋﻨﺎﺻﺮ )ﺳﻠﻮلﻫﺎي( ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺘﻮن fxﺷﻜﻞ زﻳﺮ را ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐ ﮔﺬاري در ﺳﻠﻮل ﺑﻌﺪ از آﺧﺮﻳﻦ ﻣﻘﺪار ﻗﺮار ﻣﻲدﻫﻴﻢ ،از ﺗﺎﺑﻊ )( COUNTﻛﻪ ﻣﺨﺼﻮص ﺷﻤﺎرش اﺳﺖ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ .ﺷﻜﻞ 4-15 136
ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ )ﺳﻠﻮلﻫﺎي( ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺘﻮن fxcﺷﻜﻞ 5-15را ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐ ﮔﺬاري در ﺳﻠﻮل ﺑﻌﺪ از آﺧﺮﻳﻦ ﻣﻘﺪار ﻗﺮار ﻣﻲدﻫﻴﻢ.
ﺷﻜﻞ 5-15
ﺷﻜﻞ 4-15
ﻣﻲﺗﻮان از ﻋﻨﻮان fxcﻛﻪ در ﺑﺎﻻي ﺳﺘﻮن Eآﻣﺪه ﺑﺮاي ﺑﺮﭼﺴﺐﮔﺬاري آن ﺳﺘﻮن اﺳﺘﻔﺎده و ﺳﭙﺲ در ﻓﺮﻣﻮلﻫﺎ ﺑﻪ آن رﺟﻮع ﻛﺮد. ﻳﺎدآوري ﻣﻲﻛﻨﻢ ﺑﺮاي اﻳﻦ ﻛﻪ ﺑﺮﭼﺴﺐﻫﺎي دلﺧﻮاه ﻗﺎﺑﻞ ارﺟﺎع ﺷﻮﻧﺪ ﺑﺎﻳﺪ از ﻣﻨﻴﻮي اﺻﻠﻲ اﻧﺘﺨﺎب زﻳﺮ ﺗﻴﻚ زده ﺷﻮد. Tools_Options_Calculation_Accept labels in formulas
ﻛﺘﺎﺑﺨﺎﻧﻪ داﺧﻠﻲ اﻛﺴﻞ ﻫﻤﺎنﻃﻮر ﻛﻪ در ﺗﺼﻮﻳﺮﻫﺎ دﻳﺪه ﻣﻲﺷﻮد ﻓﺮﻣﻮل ) COUNT(fxﺗﻌﺪاد ﺳﻠﻮلﻫﺎي ﺳﺘﻮن و ﻓﺮﻣﻮل ) SUM(fxcﻣﺠﻤﻮع ﻣﻘﺎدﻳﺮ ﺳﺘﻮن را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﻨﺪ .ﻫﺮ دو ﻓﺮﻣﻮل ﺟﺰو ﻛﺘﺎﺑﺨﺎﻧﻪ داﺧﻠﻲ اﻛﺴﻞ ﻫﺴﺘﻨﺪ ﻛﻪ ﺷﺎﻣﻞ ﺗﻌﺪاد زﻳﺎدي ﺗﻮاﺑﻊ در زﻣﻴﻨﻪﻫﺎي ﻣﺨﺘﻠﻒ ﻣﻮرد ﻧﻴﺎز ازﻗﺒﻴﻞ ﺗﻮاﺑﻊ رﻳﺎﺿﻲ ،آﻣﺎري ،ﺗﺠﺎري ،و ...ﻣﻲﺑﺎﺷﺪ.
2-15ﻓﺮﻣﻮل دﻫﻲ ﻣﻴﻠﻪ ﻓﺮﻣﻮل
Formula Bar
ﻫﺮ ﻓﺮﻣﻮل ﻛﻪ در ﻳﻚ ﺳﻠﻮل ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد ،ﺷﺎﻣﻞ ﻧﺎم ﺳﻠﻮلﻫﺎي دﻳﮕﺮي از ﺻﻔﺤﻪ ﮔﺴﺘﺮده ﻳﺎ ﻧﺎمﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه )ﻛﻪ ﺷﺮح آن ﺑﻌﺪاٌ ﻣﻲآﻳﺪ( اﺳﺖ .ﻓﺮﻣﻮل ﻧﻮﺷﺘﻪ ﺷﺪه در ﺻﻮرت اﻧﺘﺨﺎب ﺳﻠﻮل ﻣﺮﺑﻮﻃﻪ در ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﻧﺸﺎن داده ﻣﻲﺷﻮد. ﺑﺮﭼﺴﺐِ ﺳﺘﻮن -ردﻳﻒِ ﺳﻠﻮل در ﺟﻌﺒﻪ ﻧﺎم ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد .ﻫﺮﮔﺎه ﺑﺨﻮاﻫﻴﻢ در ﺳﻠﻮﻟﻲ ﻓﺮﻣﻮل ﻗﺮار دﻫﻴﻢ آن ﺳﻠﻮل را اﻧﺘﺨﺎب ﻛﺮده ودر ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﭘﺲ از ﻧﻮﺷﺘﻦ ﻋﻼﻣﺖ ﻣﺴﺎوي ﻓﺮﻣﻮل را وارد ﻣﻴﻜﻨﻴﻢ.
ﻣﺜﺎل: در ﺷﻜﻞ 6-15ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺑﺮﭼﺴﺐﻫﺎي ﺗﻌﻴﻴﻦ ﺷﺪه ﻓﺮﻣﻮل fx=ax+bرا در ﺳﻠﻮل D2ﻗﺮار ﻣﻲدﻫﻴﻢ. اﺑﺘﺪا ﺑﺮاي ﻫﺮ ﺳﺘﻮن در ﺑﺎﻻﺗﺮﻳﻦ ﺳﻄﺮش ﻳﻚ ﻋﻨﻮان ﻣﺎﻧﻨﺪ آنﭼﻪ در ﻓﺮﻣﻮل ﻓﻮق آﻣﺪه ﻗﺮار ﻣﻲدﻫﻴﻢ .ﺳﭙﺲ ﺑﻪ D2ﻣﻲروﻳﻢ و ﻓﺮﻣﻮل ﻓﻮق را ﺑﺮﺣﺴﺐ ﺑﺮﭼﺴﺐ ﺳﺘﻮن -ردﻳﻒ ﺑﻪ اﻳﻦ ﺷﻜﻞ =$A$2*C2+$B2 :در ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﻣﻲﻧﻮﻳﺴﻴﻢ .ﻫﺮﮔﺎه ﺑﻪ D2ﺑﺮوﻳﻢ اﻳﻦ ﻓﺮﻣﻮل در ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﻇﺎﻫﺮ ﻣﻲﺷﻮد .در ﻣﺒﺤﺚ ﻧﺎمﮔﺬاري ﺧﻮاﻫﻴﻢ دﻳﺪ ﻛﻪ ﭼﮕﻮﻧﻪ اﻳﻦ ﻓﺮﻣﻮل ﺑﻪ ﺷﻜﻞ fx=ax+bﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد.
137
ﺷﻜﻞ 6-15
رﺟﻮع ﻧﺴﺒﻲ و رﺟﻮع ﻣﻄﻠﻖ ﺑﻪ ﺳﻠﻮل در رﺟﻮع ﻧﺴﺒﻲ )ﺑﺪون ﻋﻼﻣﺖ ($ﻧﺴﺒﺖ ﻳﺎ ﻓﺎﺻﻠﻪ ﺳﻠﻮلﻫﺎي رﺟﻮع ﻛﻨﻨﺪه و رﺟﻮع ﺷﻮﻧﺪه ﺣﻔﻆ ﻣﻲﺷﻮد ،ﻟﺬا ﻓﺮﻣﻮلﻫﺎ ﺧﻮد را ﺑﺎ وﺿﻌﻴﺖ ﺟﺪﻳﺪ ﺗﻄﺒﻴﻖ ﻣﻲدﻫﻨﺪ .در ﻣﺮاﺟﻌﻪ ﻣﻄﻠﻖ )ﺑﺎ دو ﻋﻼﻣﺖ $در ﻛﻨﺎر ﺑﺮﭼﺴﺐﻫﺎي ﺳﺘﻮن و ردﻳﻒ( ﻣﻘﺪار ﻣﻮرد ﻣﺮاﺟﻌﻪ دﺳﺖ ﻧﺨﻮرده ﻣﻲﻣﺎﻧﺪ .در ارﺟﺎع ﻧﻴﻤﻪ ﻧﺴﺒﻲ ) ﺑﺎ ﻳﻚ ﻋﻼﻣﺖ $در ﻛﻨﺎر ﻧﺎم ﺳﺘﻮن ﻳﺎ ﻧﺎم ردﻳﻒ( ﻣﻘﺪار آنﻛﻪ ﻋﻼﻣﺖ $دارد دﺳﺖ ﻧﺨﻮرده ﻣﻲﻣﺎﻧﺪ ،اﻣﺎ دﻳﮕﺮي ﺑﻪ ﺗﻨﺎﺳﺐ ﺟﺎﺑﻪﺟﺎﺋﻲ در ردﻳﻒ ﻳﺎ ﺳﺘﻮن ﺣﺎﻟﺖ ﻧﺴﺒﻲ ﻣﻲﻳﺎﺑﺪ.
ﻣﺜﺎل: در ﺷﻜﻞ 7-15ﻳﻚ ﻛﭙﻲ از ﺳﺘﻮن fxرا در ﺳﺘﻮن fxcﻗﺮار داده ،ﻓﺮﻣﻮل ﭘﺪﻳﺪار ﺷﺪه در ﺳﻠﻮل E3را ﺑﺮرﺳﻲ ﻣﻲﻛﻨﻴﻢ. ﺑﺎ دﻗﺖ در ﻣﻴﻠﻪ ﻓﺮﻣﻮل دﻳﺪه ﻣﻲﺷﻮد ﻛﻪ رﺟﻮع ﺑﻪ ﺳﻠﻮلﻫﺎي ردﻳﻒ Cﻧﺴﺒﻲ اﺳﺖ ﻳﻌﻨﻲ ﺑﺎ ﻛﭙﻲ ﻛﺮدن D3→E3ارﺟﺎع ﻫﻢ ﻳﻚ ﺧﺎﻧﻪ ﺑﻪ راﺳﺖ آﻣﺪه . C3→D3ﻣﺮاﺟﻌﻪ ﺑﻪ ﺳﻠﻮل A2ﻣﻄﻠﻖ اﺳﺖ زﻳﺮا در ﺧﺎﻧﻪ E3ﻫﻢ $A$2دﺳﺖ ﻧﺨﻮرده. ﻣﺮاﺟﻌﻪ ﺑﻪ ﺳﺘﻮن Bﻧﻴﻤﻪ ﻧﺴﺒﻲ اﺳﺖ زﻳﺮا ﺳﺘﻮن آن ﺛﺎﺑﺖ ﻣﺎﻧﺪه اﻣﺎ ﺷﻤﺎره ردﻳﻒ ﺑﻪ ﺗﻨﺎﺳﺐ ﺟﺎﺑﻪﺟﺎﺋﻲ در ردﻳﻒ )رو ﺑﻪ ﭘﺎﺋﻴﻦ( ﺗﻐﻴﻴﺮ ﻛﺮده .$B2→$B3ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ در ﺳﺘﻮن Dﻛﻪ ﻓﺮﻣﻮل ﺟﺒﺮي fx=ax+bﻧﻮﺷﺘﻪ ﺷﺪه ،ﻣﻘﺪار aﺛﺎﺑﺖ، ﻣﻘﺪار bﺛﺎﺑﺖ -در -ﺳﺘﻮن )ﺛﺎﺑﺖ ﻧﺴﺒﻲ( ،و ﻣﻘﺪار xﻣﺘﻐﻴﺮ اﺳﺖ.
ﺷﻜﻞ 7-15
• ﺑﺮاي ﻣﺮاﺟﻌﻪ ﻧﺴﺒﻲ ﺑﻪ ﻳﻚ ﺳﺘﻮن ﻓﻘﻂ ﺑﺮﭼﺴﺐ آن را ﻣﻲآورﻳﻢ )ﻣﺜﻞ .(C2 • ﺑﺮاي رﺟﻮع ﻣﻄﻠﻖ ،ﻗﺒﻞ از ﺑﺮﭼﺴﺐ ﺳﺘﻮن و ﻗﺒﻞ از ﺷﻤﺎره ردﻳﻒ ﻋﻼﻣﺖ $ﻗﺮار ﻣﻲدﻫﻴﻢ )ﻣﺜﻞ .($A$2 • در ارﺟﺎع ﻧﻴﻤﻪ ﻧﺴﺒﻲ ﻳﺎ ﻗﺒﻞ از ردﻳﻒ ﻳﺎ ﻗﺒﻞ از ﺳﺘﻮن ﻋﻼﻣﺖ $ﻗﺮار ﻣﻲﮔﻴﺮد )ﻣﺜﻞ .($B2
138
ﻧﺎمﮔﺬاري ﺑﺮاي اﺳﺘﻔﺎده از ﻧﺎمﻫﺎي ﺳﺎدهﺗﺮ در ﻓﺮﻣﻮلﻫﺎ ،اﺑﺘﺪا ﻧﺎم و ﻣﻘﺪار را در ﺳﻠﻮلﻫﺎي ﻣﺠﺎور ﻫﻢ ،ﻋﻤﻮدي ﻳﺎ اﻓﻘﻲ ،وارد ﻛﺮده ﺳﭙﺲ ﻧﺎم و ﻣﻘﺪار را ﺑﺎ ﻫﻢ اﻧﺘﺨﺎب ﻣﻲﻛﻨﻴﻢ .از ﻣﻨﻴﻮي اﺻﻠﻲ Insert_Name_Createرا ﻣﻲآورﻳﻢ و ﻧﮕﺎه ﻣﻲﻛﻨﻴﻢ ﻧﺎم در ﭼﻪ ﺳﻤﺖِ ﻣﻘﺪار واﻗﻊ ﺷﺪه ،و ﺑﺮﺣﺴﺐ ﻧﺴﺒﺖ ﻣﻜﺎﻧﻲ ﻧﺎم ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ .ﻫﻢﭼﻨﻴﻦ ﻣﻲﺗﻮان ﺑﻪ ﻣﺠﻤﻮﻋﻪاي از ﺳﻠﻮلﻫﺎ ﻳﻚ ﻧﺎم اﺧﺘﺼﺎص داد ،اﻳﻦ ﻧﺎم ﻣﺎﻧﻨﺪ آراﻳﻪاي ﻋﻤﻞ ﻣﻲﻛﻨﺪ ﻛﻪ ﻣﻘﺎدﻳﺮ آن در ﺳﻠﻮلﻫﺎي ﻣﺠﺎور ﻧﺎم ﭼﻴﺪه ﺷﺪهاﻧﺪ. در ﻧﺎمﮔﺬاري دلﺧﻮاه ﻳﻚ ﺳﻠﻮل ﻳﺎ ﻳﻚ ﺳﺘﻮن ﺑﺎﻳﺪ از اﺧﺘﺼﺎص ﻧﺎمﻫﺎﺋﻲ ﻧﻈﻴﺮ a2, R1, C23ﻛﻪ ﺑﺮﭼﺴﺐ ﭘﻴﺶﻓﺮض ﻫﺴﺘﻨﺪ ﺧﻮدداري ﻛﺮد.
ﻣﺜﺎل ﻫﺎ: دادن ﻧﺎم ﺑﻪ ﻳﻚ ﺳﻠﻮل در ﺷﻜﻞ 8-15ﺳﻠﻮل A2را ﺑﺎ ﺣﺮف aﻧﺎمﮔﺬاري ﻛﺮده و ﻣﻘﺪار -3را ﺑﻪ aﻧﺴﺒﺖ ﻣﻲدﻫﻴﻢ. اﺑﺘﺪا ﻧﺎم و ﻣﻘﺪار را در ﺳﻠﻮلﻫﺎي ﻣﺠﺎور ﻫﻢ ،ﻋﻤﻮدي ﻳﺎ اﻓﻘﻲ ،وارد ﻛﺮده ﺳﭙﺲ آنﻫﺎ را اﻧﺘﺨﺎب ﻣﻲﻛﻨﻴﻢ .از ﻣﻨﻴﻮي اﺻﻠﻲ Insert_Name_Createرا ﻣﻲآورﻳﻢ و ﻧﮕﺎه ﻣﻲﻛﻨﻴﻢ ﻧﺎم در ﭼﻪ ﺳﻤﺖِ ﻣﻘﺪار واﻗﻊ ﺷﺪه .در ﻣﺜﺎل زﻳﺮ ﭼﻮن ﻧﺎم ﺑﺎﻻي ﻣﻘﺪار اﺳﺖ Top rowرا ﺗﻴﻚ زده OKﻣﻲﻛﻨﻴﻢ .ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﻣﺘﻐﻴﺮي ﻋﺪدي ﺑﺎ ﻧﺎم aو ﺑﺎ ﻣﻘﺪار -3ﺑﻪ ﻣﺠﻤﻮﻋﻪ ﻧﺎمﻫﺎي ﺻﻔﺤﻪ ﮔﺴﺘﺮده اﻓﺰوده ﻣﻲﺷﻮد .ﺣﺎﻻ اﮔﺮ ﺳﻠﻮل A2را اﻧﺘﺨﺎب ﻛﻨﻴﻢ ،در ﻣﻴﻠﻪ ﺑﺮﭼﺴﺐ ﻧﺎم آن aﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد )ﺷﻜﻞ .(9-15از اﻳﻦ ﺑﻪ ﺑﻌﺪ ﺑﻪ اﻳﻦ ﺳﻠﻮل ﻫﻢ ﻣﻲﺗﻮان ﺑﺎ ﻧﺎم aو ﻫﻢ ﺑﺎ ﺑﺮﭼﺴﺐ A2ﻣﺮاﺟﻌﻪ ﻛﺮد .ﻧﺎم aرا ﺑﻌﺪاٌ ﻣﻲﺗﻮان ﺗﻐﻴﻴﺮ داد.
ﺷﻜﻞ 9-15 ﺷﻜﻞ 8-15
دادن ﻧﺎم ﺑﻪ آراﻳﻪ در ﺷﻜﻞ b 10-15و xرا ﺑﻪ ﺻﻮرت دو ﻣﺘﻐﻴﺮ آراﻳﻪاي ﺗﻌﺮﻳﻒ ﻛﺮده و ﻣﻘﺎدﻳﺮ زﻳﺮ ﻫﺮ ﺳﺘﻮن را ﺑﻪ آراﻳﻪ ﻣﺮﺑﻮﻃﻪ ﻧﺴﺒﺖ ﻣﻲدﻫﻴﻢ .اﺑﺘﺪا ﻧﺎمﻫﺎ و ﻣﻘﺎدﻳﺮ را اﻧﺘﺨﺎب ﻛﺮده ،ﺑﻪ ﺗﺮﺗﻴﺐ ﻣﻠﺤﻮظ در ﺷﻜﻞ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ،ﻧﺎم آراﻳﻪﻫﺎ bو xﻣﻲﺷﻮﻧﺪ.
ﺷﻜﻞ 10-15
139
وارد ﻛﺮدن ﻓﺮﻣﻮل ﺑﺎ اﺳﺘﻔﺎده از ﻧﺎمﻫﺎي ﻗﺮاردادي ﺑﻪ D2رﻓﺘﻪ ﻓﺮﻣﻮل a*x+bرا وارد ﻣﻴﻜﻨﻴﻢ ،ﺳﭙﺲ ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل ﻓﺮﻣﻮل را ﺑﻪ ﺧﺎﻧﻪﻫﺎي زﻳﺮﻳﻦ ﻣﻲﻛﺸﻴﻢ )ﺷﻜﻞ (11-15 ﭼﻮن ﻋﻼﻣﺖ $وﺟﻮد ﻧﺪارد اﻧﺘﻘﺎل ﻧﺴﺒﻲ ﺧﻮاﻫﺪ ﺑﻮد.
ﺷﻜﻞ 11-15
3-15ﭘﺮ ﻛﺮدن ﺳﻠﻮل ﻫﺎ ﺑﺎ ﻟﻴﺴﺖ ﻫﺎي ﻗﺮاردادي ﻣﺜﺎل: روزﻫﺎي ﻫﻔﺘﻪ را ﺑﻪ ﺻﻮرت ﺳﺮي در ﺧﺎﻧﻪﻫﺎي اﻓﻘﻲ ﻳﻚ ﺻﻔﺤﻪ ﻗﺮار ﻣﻲدﻫﻴﻢ .در ﺷﻜﻞ 12-15اﺑﺘﺪا ﻛﻠﻤﻪ Monرا در ﺧﺎﻧﻪ A1وارد ﻛﺮده ﺳﭙﺲ آن را ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل fill handleﺑﻪ راﺳﺖ ﻣﻲﻛﺸﻴﻢ. ﺧﺎﻧﻪﻫﺎي ﻃﺮف راﺳﺖ ﺑﻪ ﺻﻮرت ﺳﺮي ﺑﺎ روزﻫﺎي ﻫﻔﺘﻪ ﭘﺮ ﻣﻲﺷﻮد .ﭼﻨﺎن ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ ﻣﺮﺑﻊ ﻛﻮﭼﻚ ﭘﺎﺋﻴﻦ -راﺳﺖ ﻳﻚ ﺳﻠﻮلِ اﻧﺘﺨﺎب ﺷﺪه ﮔﻴﺮه اﻧﺘﻘﺎل fill handelﻧﺎم دارد .ﺑﺮاي ﺳﺮي ﭘﺮ ﺷﺪن ﺑﺎﻳﺴﺘﻲ اﺑﺘﺪا ﺑﺎ اﺟﺮاي Tools_Options_Custom Listsﻣﻄﺎﺑﻖ ﺷﻜﻞ 13-15ﻟﻴﺴﺖ ﺳﺮي ﻣﻮرد ﻧﻈﺮ را وارد ﻛﻨﻴﻢ .ﺑﻌﻀﻲ از ﻟﻴﺴﺖﻫﺎ ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض از ﻗﺒﻞ وﺟﻮد دارﻧﺪ.
ﺷﻜﻞ 12-15
140
4-15ﺗﻤﺮﻳﻦ -1ﻳﻚ ﺑﺮﭼﺴﺐ ﺳﺘﻮن و ﻳﻚ ﺑﺮﭼﺴﺐ ردﻳﻒ در ﻣﺤﻞ D8وارد ﻛﻨﻴﺪ .در ﺳﻠﻮل آن ﻳﻚ ﻋﺪد وارد ﻛﻨﻴﺪ .ﺳﭙﺲ ﺑﻪ ﺳﻠﻮل A10رﻓﺘﻪ ﺑﺎ ارﺟﺎع ﺑﻪ ﺳﻠﻮل ﻣﺤﻞ ﺗﻘﺎﻃﻊ ﻣﺮﺑﻊ ﻣﻘﺪار آن را در A10ﻗﺮار دﻫﻴﺪ .وﺿﻌﻴﺖ ﻣﻴﻠﻪ ﻓﺮﻣﻮل و ﺟﻌﺒﻪ ﻧﺎم را ﺑﺮرﺳﻲ ﻛﻨﻴﺪ. -2در زﻳﺮِ ﺑﺮﭼﺴﺐ ﺳﺘﻮن ﻓﻮق ﭘﻨﺞ ﻋﺪد وارد ﻛﻨﻴﺪ ،ﻣﻌﺪل آنﻫﺎ را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي در ﺳﻠﻮل زﻳﺮﻳﻦ ﻗﺮار دﻫﻴﺪ. -3ﻳﻚ ﺳﺘﻮن را ﺑﺮﭼﺴﺐ ﻗﺮاردادي دﻫﻴﺪ ،و ﺗﻌﺪادي ﻋﺪد زﻳﺮ آن وارد ﻛﻨﻴﺪ .ﺣﺎﺻﻞﺟﻤﻊ و ﺗﻌﺪاد ﻋﻨﺎﺻﺮ )ﺳﻠﻮل- ﻫﺎي( ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺘﻮن را ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐ ﮔﺬاري و ﻛﺘﺐﺧﺎﻧﻪ داﺧﻠﻲ اﻛﺴﻞ در ﺳﻠﻮل ﺑﻌﺪ از آﺧﺮﻳﻦ ﻣﻘﺪار ﻗﺮار دﻫﻴﺪ .راﻫﻨﻤﺎ :ﺑﺮاي ﻗﺎﺑﻞ ارﺟﺎع ﺷﺪن ﺑﺮﭼﺴﺐﻫﺎي دلﺧﻮاه ﺑﺎﻳﺪ اﻧﺘﺨﺎب ﻻزم در ﻣﻨﻴﻮ ﺗﻴﻚ زده ﺷﻮد. -4ﻳﻚ ﺳﻠﻮل را ﻧﺎمﮔﺬاري ﻛﺮده و ﻣﻘﺪار دﻫﻴﺪ .ﺳﻠﻮل ﻣﺮﺑﻮﻃﻪ را اﻧﺘﺨﺎب ﻛﻨﻴﺪ ،در ﻣﻴﻠﻪ ﺑﺮﭼﺴﺐ ﭼﻪ ﻣﻲﺑﻴﻨﻴﺪ .در ﺳﻠﻮل دﻳﮕﺮي ﺑﻪ اﻳﻦ ﻧﺎم ﺑﺎ ﻳﻚ ﻋﻤﻞ رﻳﺎﺿﻲ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ .دو ﻧﺎم در دو ﺳﺮﺳﺘﻮن ،و ﻣﻘﺎدﻳﺮي زﻳﺮ ﻫﺮ ﺳﺘﻮن ﺑﻨﻮﻳﺴﻴﺪ .ﻧﺎمﻫﺎ و ﻣﻘﺎدﻳﺮ را اﻧﺘﺨﺎب ﻛﺮده ،آراﻳﻪﻫﺎ را ﻧﺎمﮔﺬاري ﻛﻨﻴﺪ .ﺳﭙﺲ ﺑﻪ ﺳﻠﻮل ﺳﻤﺖ راﺳﺖ رﻓﺘﻪ ﻓﺮﻣﻮﻟﻲ ﻣﺘﺸﻜﻞ از دو ﻧﺎم را وارد ﻛﻨﻴﺪ ،ﺳﭙﺲ ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل ﻓﺮﻣﻮل را ﺑﻪ ﺧﺎﻧﻪﻫﺎي زﻳﺮﻳﻦ ﺑﻜﺸﻴﺪ. -5ﻧﺎم ﻓﺼﻞ اول ﺳﺎل را در ﺧﺎﻧﻪ A1وارد ﻛﺮده ﺳﭙﺲ آن را ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل fill handleﺑﻪ ﭘﺎﺋﻴﻦ ﺑﻜﺸﻴﺪ. ﺑﺎﻳﺪ ﺧﺎﻧﻪﻫﺎ ﺑﻪ ﺻﻮرت ﺳﺮي ﺑﺎ ﻧﺎم ﻓﺼﻞﻫﺎ ﭘﺮ ﺷﻮدﻧﺪ .راﻫﻨﻤﺎ :ﺑﺮاي ﺳﺮي ﭘﺮ ﺷﺪن ﺑﺎﻳﺪ اﻧﺘﺨﺎب ﻻزم در ﻣﻨﻴﻮ ﺗﻴﻚ زده ﺷﻮد.
141
ﻓﺼﻞ 16ﻋﻤﻠﻴﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ ،ﺗﻮاﺑﻊ و ﻧﻤﻮدارﻫﺎ 1-16ﭼﻨﺪ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي ﻣﺜﺎل: در ﺷﻜﻞ 1-16ﺑﻴﺸﻴﻨﻪ -ﻛﻤﻴﻨﻪ دﻣﺎي روزﻫﺎي ﻫﻔﺘﻪ را وارد ﻛﺮده ،در ﺧﺎﻧﻪﻫﺎي B4, B5, B6ﺑﻪ ﺗﺮﺗﻴﺐ ﺗﻮاﺑﻊ داﺧﻠﻲ ) AVERAGE(B2:H3), Max(B2:H3), Min(B2:H3را ﻗﺮار داده ،ﻧﺘﻴﺠﻪ را ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ.
ﺷﻜﻞ 1-16
2-16ﻧﻤﻮدارﻫﺎ ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻣﺜﺎل: ﺑﺎ اﺳﺘﻔﺎده از ﺟﺪول ﻓﻮق درﺟﻪ ﺣﺮارت ﺑﻴﺸﻴﻨﻪ و ﻛﻤﻴﻨﻪ ﻫﺮ روز را ﺑﺮﺣﺴﺐ روز ﻫﻔﺘﻪ ﺑﺎ ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ. دﻛﻤﻪ ﭼﺎرت را از ﻣﻴﻠﻪ اﺑﺰار ﻛﻠﻴﻚ ﻛﺮده ،ﭘﺲ از اﻧﺘﺨﺎب ﻧﻤﻮدار ﺳﺘﻮﻧﻲ و زدن Nextﺑﻪ ﻟﺒﻪ Seriesرﻓﺘﻪ ﺑﺮاي ﺳﺮي ﻳﻚ B2:H2و ﺑﺮاي ﺳﺮي دو B3:H3و ﺑﺮاي B1:H1 ، Category (X) axis labels:را وارد ﻣﻲ- ﻛﻨﻴﻢ .ﭘﺲ از اﻧﺘﺨﺎب اﺳﺎﻣﻲ و ﺑﺮﭼﺴﺐﻫﺎي ﻣﻨﺎﺳﺐ ﻧﻤﻮدار را ﺑﻪ ﺷﻜﻞ 2-16رﺳﻢ ﻣﻲﻛﻨﻴﻢ: 35 30
Temp
25 Max's
20
Min's
15 10 5
ﺷﻜﻞ 2-16
0 Sun
Sat
Fri
Thu
Wed
Tue
Mon
ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲ ﻣﺜﺎل: ﺑﺮاي رﺳﻢ ﻧﻤﻮدار fxﺑﺮﺣﺴﺐ ) xﺟﺪول ﺷﻜﻞ (3-16دﻛﻤﻪ ﭼﺎرت را از ﻣﻴﻠﻪ اﺑﺰار ﻛﻠﻴﻚ ﻛﺮده ،ﭘﺲ از اﻧﺘﺨﺎب ﻧﻤﻮدار ﻣﻨﺤﻨﻲ و زدن Nextﺑﻪ ﻟﺒﻪ Seriesرﻓﺘﻪ ﺑﺮاي ﺳﺮيِ ﻳﻚ ،ﺳﺘﻮن fx
و ﺑﺮاي ، Category (X) axis labels:ﺳﺘﻮن xرا وارد ﻣﻲﻛﻨﻴﻢ.
142
20 15 10 5 0
Series1 5
4
3
2
1
0
-5 -4 -3 -2 -1
-5 -10 -15
ﺷﻜﻞ 3-16
-20
ﺟﺒﺮي ﺳﺎزي ﻣﻨﺤﻨﻲ ﻣﺜﺎل: ﺑﺮاي ﺣﺼﻮل ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻣﻨﺤﻨﻲ ﺟﺒﺮي روي ﻳﻜﻲ از ﻧﻔﺎط ﻣﻨﺤﻨﻲ ﻓﻮق راﺳﺖ ﻛﻠﻴﻚ ﻛﺮده و Add Trendlineرا ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ .در ﺟﻌﺒﻪ ﻣﺤﺎوره ﺷﻜﻞ 4-16در ﻟﺒﻪ Typeﻳﻜﻲ از ﻣﻨﺤﻨﻲﻫﺎي ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﻣﻨﺤﻨﻲ ﺧﻮد را اﻧﺘﺨﺎب ﻣﻴﻜﻨﻴﻢ. ﺳﭙﺲ درﻟﺒﻪ Optionsاﻧﺘﺨﺎبﻫﺎي ﺷﻜﻞ را ﺗﻴﻚ زده OKﻣﻲﻛﻨﻴﻢ .ﻣﻨﺤﻨﻲ 5-16ﻧﺘﻴﺠﻪ ﻣﻲﺷﻮد .ﭘﺎراﻣﺘﺮR-squared
ﻳﺎ ﺿﺮﻳﺐ ﺗﻌﻴﻦ ﻫﺮ ﻗﺪر ﺑﻪ ﻳﻚ ﻧﺰدﻳﻚﺗﺮ ﺑﺎﺷﺪ ،ﺗﻘﺮﻳﺐ ﻣﻨﺤﻨﻲ ﺑﻬﺘﺮ اﺳﺖ.
ﺷﻜﻞ 4-16
20 15 10 Series1 )Linear (Series1
5 0 -5 -4 -3 -2 -1 0 1 2 3 4 5
-5 -10
y = -2.9273x + 18.2 2 R = 0.9309
-15 -20 ﺷﻜﻞ 5-16
143
3-16ﻫﻴﺴﺘﻮﮔﺮام ﺗﻌﺪادي ﻋﺪد ﺗﺼﺎدﻓﻲ ﻧﺎﻣﺮﺗﺐ در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ،ﻫﻴﺴﺘﻮﮔﺮام ﻋﺪدﻫﺎي ﻣﺴﺎوي را داﺧﻞ ﻳﻚ ﻇﺮف ﻣﻲرﻳﺰد و ﻣﻮﺟﻮدي ﻫﺮ ﻇﺮف را ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ. اﮔﺮ اﻧﺘﺨﺎب Data Analysisدر زﻳﺮﻣﻨﻴﻮي Toolsﻣﻮﺟﻮد ﻧﺒﺎﺷﺪ ،از ﻣﻨﻴﻮي اﺻﻠﻲ اﻧﺘﺨﺎب Tools_Add-Ins...را اﺟﺮا و Data Analysisرا ﺑﻪ زﻳﺮ ﻣﻨﻴﻮي Toolsاﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ.
ﻣﺜﺎل: اﻳﻦ ﺗﻌﺪاد ﻋﺪد ﺻﺤﻴﺢ ﺗﺼﺎدﻓﻲ 0,5,-7,5,-2,8,8,8,4,6,4,8,6,3,-7,-10,-6,4,-6,-2,8
را ﻛﻪ در ﺑﺎزه -10ﺗﺎ 10ﻓﺮار دارﻧﺪ در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ،ﺑﺮاي رﺳﻢ ﻫﻴﺴﺘﻮﮔﺮام آنﻫﺎ اﺑﺘﺪا ﻣﻄﺎﺑﻖ ﺷﻜﻞ ،ﺑﺎزه اﻋﺪاد ) -10ﺗﺎ (10را ﺑﻪ ﺻﻮرت ﻣﺮﺗﺐ در ﺳﺘﻮن ﺳﻤﺖ ﭼﭗ و اﻋﺪاد ﺗﺼﺎدﻓﻲ ﻓﻮق را درﺳﺘﻮن ﻣﻘﺎﺑﻞ آن وارد ﻣﻲﻛﻨﻴﻢ .از ﻣﻨﻴﻮي اﺻﻠﻲ، Tools_ Data Analysisرا ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ .ﺳﭙﺲ از ﺟﻌﺒﻪ ﻣﺤﺎوره ﻇﺎﻫﺮ ﺷﺪه Histogramرا اﻧﺘﺨﺎب ﻣﻲ- ﻛﻨﻴﻢ )ﺷﻜﻞ .(6-16ﺳﺘﻮن Bرا ﺑﻪ ﻋﻨﻮان Input Rangeو ﺳﺘﻮن Aرا ﺑﻪ ﻋﻨﻮان Bin Rangeﻗﺮار داده New Worksheet Plyو Chart Outputرا ﺗﻴﻚ زده OK ،ﻣﻲﻛﻨﻴﻢ)ﺷﻜﻞ .(7-16ﻧﺘﻴﺠﻪ در ﻳﻚ ﻛﺎرﺑﺮگ دﻳﮕﺮ ﻇﺎﻫﺮ ﻣﻲﺷﻮد )ﺷﻜﻞ .(8-16
ﺷﻜﻞ 6-16
ﺷﻜﻞ 7-16
144
ﺷﻜﻞ 8-16
4-16ﺗﺎﺑﻊ ﻛﺎرﺑﺮ -ﺗﻌﺮﻳﻒ در اﻛﺴﻞ
VBA in Excel
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﺎ اﺳﺘﻔﺎده از VBAﻣﻲﺗﻮان ﻓﺮﻣﻮلﻫﺎﺋﻲ را ﺗﻌﺮﻳﻒ ﻛﺮد و آنﻫﺎ را ﻧﻈﻴﺮ ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي اﻛﺴﻞ داﺧﻞ ﺳﻠﻮلﻫﺎ ﻧﻮﺷﺖ و ﺑﻪ ﻛﺎر ﺑﺮد .ﺣﺮوف VBAﺗﻘﻄﻴﻊ ﻋﺒﺎرت Visual Basic for Applicationsاﺳﺖ ﻛﻪ ﻳﻚ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ اﺳﺖ ﻛﻪ در داﺧﻞ ﻧﺮماﻓﺰارﻫﺎي Microsoft Officeﻧﻈﻴﺮ Word, Excelﺗﻌﺒﻴﻴﻪ ﺷﺪه اﺳﺖ.
ﻣﺜﺎل: ﺳﺮﻋﺖ ﻳﻚ ﭼﺘﺮ ﺑﺎز را از ﻟﺤﻈﻪ ﭘﺮش ﺗﺎ زﻣﺎﻧﻲ ﻛﻪ ﺑﻪ ﺳﺮﻋﺖ ﻳﻚﻧﻮاﺧﺖ ﺑﺮﺳﺪ ،در ﻟﺤﻄﺎت ﻣﺨﺘﻠﻒ ﺑﺎ آﻧﺎﻟﻴﺰ ﻋﺪدي ﺑﻪ دﺳﺖ آورده و ﻣﻨﺤﻨﻲ آن را رﺳﻢ ﻛﻨﻴﺪ .وزن ﭼﺘﺮﺑﺎز را ﺑﺎ ، mو ﺿﺮﻳﺐ ﻣﻘﺎوﻣﺖ ﻫﻮا را ﺑﺎ cvﻧﺸﺎن دﻫﻴﺪ. ﺣﻞ :ﻧﻴﺮوي وارد ﺑﻪ ﭼﺘﺮﺑﺎز در ﻟﺤﻈﻪ t1ﺑﺮاﺑﺮ ﻧﻴﺮوي ﺛﻘﻞ زﻣﻴﻦ ﻣﻨﻬﺎي ﻧﻴﺮوﺋﻲ اﺳﺖ ﻛﻪ در اﺛﺮ ﻣﻘﺎوﻣﺖ ﻫﻮا درﺟﻬﺖ ﺧﻼف ﻧﻴﺮوي ﺛﻘﻞ وارد ﻣﻲﺷﻮد .ﻧﻴﺮوي ﻣﻘﺎوﻣﺖ ﻫﻮا ﺑﺎ ﺳﺮﻋﺖ ﻣﺘﻨﺎﺳﺐ ،و ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ: )Fair(t1) = cv * v(t1
در ﻧﺘﻴﺠﻪ ﺷﺘﺎب ﻣﻌﻜﻮس ﺣﺎﺻﻞ از ﻣﻘﺎوﻣﺖ ﻫﻮا ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ: )accair = (cv/m)*v(t1
ﺷﺘﺎب ﻛﻞ در ﻟﺤﻈﻪ t1ﻣﺴﺎوي ﺷﺘﺎب ﮔﺮاﻧﺶ ﺧﻮاﻫﺪ ﺑﻮد ﻣﻨﻬﺎي ﺷﺘﺎب ﻣﻌﻜﻮس: )acc(t1) = g - (cv/m)*v(t1 ﺷﺘﺎب ﺗﻘﺮﻳﺒﻲ در ﻟﺤﻈﻪ t1ﻣﻲﺷﻮد )زﻳﺮﻧﻮﻳﺲ apprﻫﻤﺎن approximatedﻳﻌﻨﻲ ﺗﻘﺮﻳﺒﻲ اﺳﺖ(: accappr = [v(t1+DELt) - v(t1)]/DELt
ﻋﺪد ﺛﺎﺑﺖ DELtرﺷﺪ زﻣﺎن را ﻧﺸﺎن ﻣﻲدﻫﺪ. ﺣﺎل ﻣﻘﺪار واﻗﻌﻲ ﺷﺘﺎب را ﺑﺎ ﻣﻘﺪار ﺗﻘﺮﻳﺒﻲ آن ﺑﺮاﺑﺮ ﻗﺮار ﻣﻲدﻫﻴﻢ: )accappr ≈ acc(t1) → [v(t1+DELt) - v(t1)]/DELt ≈ g - (cv/m)*v(t1 v(t1+DELt) = v(t1) + [g-(cv/m)v(t1)] * DELt
145
ﺳﺮﻋﺖ ﭘﺲ از رﺷﺪ زﻣﺎن
v(t1+DELt) = v(t1) + acc * DELt
ﻋﺒﺎرت ﻓﻮق را اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﺑﻪ ﺻﻮرت ﻛﺎﻣﭙﻴﻮﺗﺮي ﺑﻨﻮﻳﺴﻴﻢ ﻣﻲﺷﻮد: v = v + acc * DELt ﺣﺎل از ﻣﻨﻴﻮي اﺻﻠﻲ Tools_Macro_Visual Basic Editorرا اﺟﺮا و ﺗﺎﺑﻊ زﻳﺮ را در ادﻳﺘﻮر VBA
ﻧﻮﺷﺘﻪ و ﺿﺒﻂ ﻣﻲﻛﻨﻴﻢ .زﺑﺎن VBAﻗﻮاﻋﺪ ﺧﺎﺻﻲ دارد و ﺗﺎ ﺣﺪي ﺷﺒﻴﻪ Quick Basicاﺳﺖ. )Function Vnum(DELt, t1, t2, v1, m, cv Dim t As Single, dvBdt As Single, acc As Single, v As Single Const g As Single = 9.8 t = t1 v = v1 Do acc = g - (cv / m) * v v = v + acc * DELt t = t + DELt If t >= t2 Then Exit Do Loop Vnum = v End Function در اﻳﻦ ﺗﺎﺑﻊ زﻣﺎن را ﺑﻴﻦ t1و t2ﺑﻪ ﻗﻄﻌﺎت DELtﺛﺎﻧﻴﻪاي ﺗﻘﺴﻴﻢ ﻛﺮدهاﻳﻢ .ﺳﭙﺲ در داﺧﻞ ﺣﻠﻘﻪ DO ... LOOP
زﻣﺎن ﺑﻌﺪ از DELtرا ﻣﺴﺎوي زﻣﺎن ﻗﺒﻞ از آن ﺑﻪ ﻋﻼوه رﺷﺪ زﻣﺎن ﻗﺮار دادهاﻳﻢ ﻳﻌﻨﻲ(t = t + DELt) :ﻫﻢﭼﻨﻴﻦ ﺳﺮﻋﺖ ﺑﻌﺪ از DELtرا ﻣﺴﺎوي ﺳﺮﻋﺖ ﻗﺒﻞ از آن ﺑﻪ ﻋﻼوه رﺷﺪ ﺳﺮﻋﺖ ﻗﺮار دادهاﻳﻢ ﻳﻌﻨﻲ: ) .(v = v + acc * DELtدر ﻫﺮ ﺗﻜﺮار ،ﺳﺮﻋﺖ در داﺧﻞ ﺣﻠﻘﻪ ﺣﺴﺎب ﻣﻲﺷﻮد ﺗﺎ ﺑﻪ زﻣﺎن t2ﺑﺮﺳﻴﻢ و ﺣﻠﻘﻪ ﺗﻤﺎم ﺷﻮد .ﺳﺮﻋﺖ در t2ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﺑﺮﮔﺸﺖ داده ﻣﻲﺷﻮد .ﺳﺮﻋﺖ و زﻣﺎن اوﻟﻴﻪ ،ﺿﺮﻳﺐ ﻣﻘﺎوﻣﺖ ﻫﻮا ،و ﺷﺘﺎب ﺛﻘﻞ آرﮔﻮﻣﺎنﻫﺎي دﻳﮕﺮ ﺗﺎﺑﻊ Vnumﻫﺴﺘﻨﺪ .اﻳﻦ ﺗﺎﺑﻊ ﺟﻤﻌﺎٌ ﺷﺶ آرﮔﻮﻣﺎن دارد.
اﺳﺘﻔﺎده از ﺗﺎﺑﻊ VBAدر ﺻﻔﺤﻪ ﮔﺴﺘﺮده ﻫﻤﺎنﻃﻮر ﻛﻪ ذﻛﺮ ﻛﺮدﻳﻢ ،ﻣﻲﺗﻮان ﺗﻮاﺑﻌﻲ را ﺑﺎ VBAﻧﻮﺷﺘﻪاﻳﻢ ،ﻧﻈﻴﺮ ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي اﻛﺴﻞ ﺑﻪ ﺻﻮرت ﻓﺮﻣﻮل در ﺳﻠﻮلﻫﺎ ﻧﻮﺷﺖ و ﺑﻪ ﻛﺎر ﺑﺮد .ﻣﺜﺎل زﻳﺮ ﻛﺎرﺑﺮد ﺗﺎﺑﻊ Vnumرا ﻧﺸﺎن ﻣﻲدﻫﺪ.
ﻣﺜﺎل: اﺑﺘﺪا ﺳﺘﻮﻧﻲ را tو ﺳﺘﻮن دﻳﮕﺮي را Vnumﻋﻨﻮان ﻣﻲدﻫﻴﻢ .ﺳﭙﺲ ﺳﺘﻮن tرا از زﻣﺎن ﺻﻔﺮ ﺷﺮوع ﻛﺮده ﺑﺎ اﻓﺰاﻳﺶ 3ﺛﺎﻧﻴﻪ- اي ﺣﺪود 20ﺳﻠﻮل را ﭘﺮ ﻛﺮده ،در ﺳﺘﻮن Vnumﻓﺮﻣﻮل ﻣﻨﺘﺞ از ﺗﺎﺑﻊ ﻓﻮق را ﺑﺎ آرﮔﻮﻣﺎنﻫﺎي m = 70kg, DELt = 0.1sec, cv = 12.5kg/sec
ﻗﺮار ﻣﻲدﻫﻴﻢ .ﻣﻨﺤﻨﻲ ﺳﺮﻋﺖ ﺑﺮ ﺣﺴﺐ زﻣﺎن را رﺳﻢ ﻣﻲﻛﻨﻴﻢ. اﺑﺘﺪا آرﮔﻮﻣﺎنﻫﺎ و ﻣﻘﺎدﻳﺮ آنﻫﺎ را ﺑﻪ ﺻﻮرت ﻧﺎمﮔﺬاري وارد ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ (9-16 ﺳﭙﺲ ﻋﻨﺎوﻳﻦ tو Vnumرا در ﺳﻠﻮلﻫﺎي ﻣﺮﺑﻮﻃﻪ ﻗﺮار ﻣﻲدﻫﻴﻢ .زﻳﺮ tاول ﺻﻔﺮ را وارد ﻛﺮده و در ردﻳﻒ ﺑﻌﺪ 3واﺣﺪ ﺑﻪ آن اﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ .ﺳﭙﺲ ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل آن را ﺑﻪ ﺗﻌﺪاد ﺧﺎﻧﻪﻫﺎي ﻣﻮرد ﻧﻈﺮ ﭘﺎﺋﻴﻦ ﻣﻲﻛﺸﻴﻢ )ﺷﻜﻞ .(10-16
ﺷﻜﻞ 9-16
146
ﺷﻜﻞ 10-16
در ﺳﺘﻮن Vnumاﺑﺘﺪا ﺻﻔﺮ و در ردﻳﻒ ﺑﻌﺪ ﺗﺎﺑﻊ VBAرا ﭼﻨﺎنﭼﻪ در ﺷﻜﻞ 11-16دﻳﺪه ﻣﻲﺷﻮد ﻣﻲﻧﻮﻳﺴﻴﻢ .در اﻳﻦ ﻓﺮﻣﻮل آرﮔﻮﻣﺎن t1را ﺑﺮاﺑﺮ ، A2آرﮔﻮﻣﺎن t2را ﺑﺮاﺑﺮ A3و آرﮔﻮﻣﺎن v1را ﺑﺮاﺑﺮ B2ﻗﺮار دادهاﻳﻢ .ﻓﺮﻣﻮل ﻧﻮﺷﺘﻪ ﺷﺪه در ﺳﻠﻮل B3را ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل آن ﺑﻪ ﺗﻌﺪاد ﺧﺎﻧﻪﻫﺎي ﻣﻮرد ﻧﻈﺮ ﭘﺎﺋﻴﻦ ﻣﻲﻛﺸﻴﻢ .ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ارﺟﺎع ﻧﺴﺒﻲ ﻣﻘﺎدﻳﺮ A2, A3,
B2در ﺳﻠﻮلﻫﺎي زﻳﺮﻳﻦ ﺑﻪ ﺗﻨﺎﺳﺐ ﺗﻐﻴﻴﺮ ﻣﻲﻛﻨﺪ. ﻣﻘﺪار ﺳﺮﻋﺖ از ردﻳﻒ 19ﺑﻪ ﺑﻌﺪ ﺗﻘﺮﻳﺒﺎٌ ﻳﻚﻧﻮاﺧﺖ ﺷﺪه ،اﻳﻦ ﻣﻮﺿﻮع در ﻧﻤﻮدار رﺳﻢ ﺷﺪه ﺷﻜﻞ 11-16ﻫﻢ دﻳﺪه ﻣﻲ- ﺷﻮد.
Velocity 60 50 40 30 20 10 0
Velocity
72
63
54
45
36
27
18
9
0
Time
ﺷﻜﻞ 11-16
5-16ﺿﺒﻂ ﻣﺎﻛﺮو از ﻣﻨﻴﻮي اﺻﻠﻲ Tools_Macro_Record New Macroرا اﺟﺮا ﻣﻲﻛﻨﻴﻢ .ﻣﻴﻠﻪ اﺑﺰار ﺿﺒﻂ ﻣﺎﻛﺮو ﻇﺎﻫﺮ ﺷﺪه و از آن ﻟﺤﻈﻪ اﻋﻤﺎﻟﻲ ﻛﻪ روي ﺻﻔﺤﻪ ﮔﺴﺘﺮده اﻧﺠﺎم دﻫﻴﻢ ﺿﺒﻂ ﻣﻲﺷﻮﻧﺪ .ﺑﺎ زدن دﻛﻤﻪ Stop Recordingدر ﻣﻴﻠﻪ اﺑﺰار ﺿﺒﻂ ﻣﺎﻛﺮو ﻣﺘﻮﻗﻒ ﻣﻲﺷﻮد .اﻋﻤﺎل ﺿﺒﻂ ﺷﺪه ﺑﻪ ﺻﻮرت ﻳﻚ ﻓﺎﻳﻞ VBAدر ﻣﻲآﻳﺪ .ﻛﻪ از داﺧﻞ اﻛﺴﻞ ﻗﺎﺑﻞ اﺟﺮا ﻳﺎ ﻗﺎﺑﻞ ادﻳﺖ اﺳﺖ. در اﻛﺴﻞ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﻛﻪ ﺑﺎ VBAﻳﺎ از ﻃﺮﻳﻖ ﺿﺒﻂ ﻣﺎﻛﺮو ﺗﻬﻴﻪ ﺷﻮد ،ﻣﺎﻛﺮو ﻧﺎم دارد .ﺑﺮاي ﻓﻌﺎل ﺷﺪن ﻣﺎﻛﺮوﻫﺎ ﺑﺎﻳﺴﺘﻲ Tools_Options_Security_Macro Security_Mediumرا از ﻣﻨﻴﻮي اﺻﻠﻲ اﺟﺮا ﻛﺮد .ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﺑﻪ ﻫﻨﮕﺎم ﺷﺮوع اﻛﺴﻞ ﻣﺎﻛﺮوﻫﺎ ﺑﻪ اﺧﺘﻴﺎر ﺧﻮدﺗﺎن ﻓﻌﺎل ﻳﺎ ﻏﻴﺮ ﻓﻌﺎل ﻣﻲﺷﻮﻧﺪ. ﺳﺆال :ﻧﺎم ﺧﻮد را در ﻳﻚ ﺳﻠﻮل وارد ﻛﻨﻴﺪ .ﻛﭙﻲ ﻛﺮدن و ﭼﺴﺒﺎﻧﺪن آن ﺑﻪ ﺳﻠﻮل دﻳﮕﺮ را ﺑﻪ ﺻﻮرت ﻣﺎﻛﺮو ﺿﺒﻂ ﻛﻨﻴﺪ. 147
6-16اﺑﺰارﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﻲ Goal Seek
اﺑﺰار Goal Seekﻣﻲﺗﻮاﻧﺪ ﭘﺲ از رﺳﺎﻧﺪن ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﻣﻘﺪار ﻧﻬﺎﺋﻲ ،ﻣﻘﺪار ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ را ﺑﺮاي اﻳﻦ ﻣﻘﺪار ﻧﻬﺎﺋﻲ ﺗﻌﻴﻴﻦ ﻛﻨﺪ.
ﻣﺜﺎل: ﻣﻘﺪار xرا ﺑﺮاي ﺑﺮﻗﺮاري ﺗﺴﺎوي x - cosx = πﺑﻪ دﺳﺖ ﻣﻲآورﻳﻢ. ﻣﻘﺪار xرا در ﺳﻠﻮل A2و ﺗﺎﺑﻊ) A2-COS(A2را ﺑﻪ ﺷﻜﻞ ﻓﺮﻣﻮل در B2وارد ﻣﻲﻛﻨﻴﻢ .ﺑﺮاي اﻳﻦ ﻛﻪ xﺑﺮ ﺣﺴﺐ درﺟﻪ ﻫﻢ دﻳﺪه ﺷﻮد ،ﺗﺎﺑﻊ ) DEGREES(A2را ﻫﻢ در ﺳﺘﻮن ﺑﻌﺪ ﻗﺮار ﻣﻲدﻫﻴﻢ .ﺗﻮﺿﻴﺢ ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﻳﻚ ازاﻳﻦ ﺳﻠﻮلﻫﺎ در ﺳﻠﻮل ﺑﺎﻻي آن آﻣﺪه ،ﺷﻜﻞ ) 12-16ﺳﺘﻮن x Degﻧﻘﺸﻲ در Goal Seekﻧﺪارد(.
ﺷﻜﻞ 12-16
اﻛﻨﻮن Tools_Goal Seekرا اﺟﺮا ﻣﻲﻛﻨﻴﻢ .در Set cellﺧﺎﻧﻪاي را ﻛﻪ ﻣﻌﺎدﻟﻪ در آن آﻣﺪه ) ،(B2در To valueﻣﻘﺪار ﺳﻤﺖ راﺳﺖ ﻣﻌﺎدﻟﻪ πو در By changing cellﺧﺎﻧﻪي ﻣﺘﻐﻴﺮ (A2) xرا ﻣﻲﻧﻮﻳﺴﻴﻢ و OKﻣﻲﻛﻨﻴﻢ ﺷﻜﻞ .13-16در To valueﺑﺎﻳﺴﺘﻲ ﺣﺘﻤﺎٌ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ﻳﺎ اﻋﺸﺎري وارد ﻛﺮد. Goal Seekﻣﻘﺪاري ﺑﺮاي xرا ﻛﻪ در ﻣﻌﺎدﻟﻪ ﺻﺪق ﻛﻨﺪ ﻣﺤﺎﺳﺒﻪ ﻣﻲﻛﻨﺪ ،در ﺻﻮرت ﭘﺬﻳﺮش اﻳﻦ ﻣﻘﺪار OKﻣﻲﻛﻨﻴﻢ. ﻧﻮﺷﺘﻪﻫﺎي ردﻳﻒ 1ﻓﻘﻂ ﺗﻮﺿﻴﺢ اﺳﺖ.
ﺷﻜﻞ 13-16
ﺳﺆال :ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘﺪار πﺗﺎﺑﻊِ ﻣﻘﺪار -ﺛﺎﺑﺖِ)( PIرا در ﻳﻜﻲ از ﺧﺎﻧﻪﻫﺎ وارد ﻛﻨﻴﺪ. Solver
اﻳﻦ اﺑﺰار ﺑﺮاي ﺣﻞ ﻣﻌﺎدﻻت ﭼﻨﺪ ﻣﺠﻬﻮﻟﻲ و ﻣﻮارد ﻣﺸﺎﺑﻪ آن ﺑﻪ ﻛﺎر ﻣﻲرود. اﮔﺮ اﻧﺘﺨﺎب Solverدر زﻳﺮﻣﻨﻴﻮي Toolsﻣﻮﺟﻮد ﻧﺒﺎﺷﺪ Tools_Add-Ins... ،را اﺟﺮا و Solverرا ﺑﻪ زﻳﺮ ﻣﻨﻴﻮي Toolsاﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ.
ﻣﺜﺎل: دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺳﻪ ﻣﺠﻬﻮﻟﻲ زﻳﺮ را ﺣﻞ ﻣﻲﻛﻨﻴﻢ:
148
2 2 y + 3xy + z = 58 2 x + xy + z = 9 x - y - z = 0 اﺑﺘﺪا x=0, y=0, z=0را ﺑﻪ ﻋﻨﻮان ﺳﻪ ﻧﺎم از ﻃﺮﻳﻖ Insert_Name_Createﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ .در ﺧﺎﻧﻪﻫﺎﺋﻲ
ﻧﺰدﻳﻚ ﺑﻪ آنﻫﺎ ،ﻃﺮف ﭼﭗِ ﻣﻌﺎدﻻت ﻓﻮق را ﻣﻲﻧﻮﻳﺴﻴﻢ در ﺷﻜﻞ 14-16ﺑﻪ ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﺗﻮﺟﻪ ﻛﻨﻴﺪ.
ﺷﻜﻞ 14-16
ﺳﭙﺲ از ﻣﻨﻴﻮي اﺻﻠﻲ Tools_Solverرا اﺟﺮا ﻣﻲﻛﻨﻴﻢ .در ﻣﻘﺎﺑﻞ Set Target Cellﺑﺮﭼﺴﺐ ﺳﻠﻮل ﻣﻌﺎدﻟﻪ اول ،$A$4در ﻣﻘﺎﺑﻞ Value ofﻣﻘﺪار ﺳﻤﺖ راﺳﺖ ﻣﻌﺎدﻟﻪ اول ،58و در ﺟﻌﺒﻪ By Changing Cells داﻣﻨﻪ ﺳﻠﻮلﻫﺎي ﺷﺎﻣﻞ ﻣﻘﺎدﻳﺮ x, y, zرا ﻗﺮار ﻣﻲدﻫﻴﻢ .در ﻗﺴﻤﺖ Subject to the Constraints
دﻛﻤﻪ Addرا اﺟﺮا ﻛﺮده و ﺧﺎﻧﻪﻫﺎي ﺷﺎﻣﻞ ﻓﺮﻣﻮلﻫﺎي دو ﻣﻌﺎدﻟﻪ دﻳﮕﺮ را ﺑﻪ ﺗﺮﺗﻴﺐ در Cell Referenceو ﻣﻘﺎدﻳﺮ ﺳﻤﺖ راﺳﺖ آنﻫﺎ را در Constraintوارد ﻣﻲﻛﻨﻴﻢ .ﭘﺲ از OKﺟﻌﺒﻪ ﻣﺤﺎوره Solver Parametersﺑﻪ ﺷﻜﻞ ﻧﺸﺎن داده ﺷﺪه در 15-16در ﻣﻲآﻳﺪ .ﺳﭙﺲ دﻛﻤﻪ Solveرا ﻣﻲزﻧﻴﻢ .در ﺟﻌﺒﻪ Solver Resultsدﻛﻤﻪ Keep Solver Solutionرا OKﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ .(16-16ﻣﻘﺎدﻳﺮ x, y, zدر ﺳﻠﻮلﻫﺎي A2, B2,
C2ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ)ﺷﻜﻞ .(17-16اﮔﺮ در ﺟﻌﺒﻪ Solver Resultsدﻛﻤﻪ Save Scenarioرا ﺑﺰﻧﻴﻢ .اﻋﻤﺎل اﻧﺠﺎم ﺷﺪه ﺑﻪ ﺻﻮرت Scenarioﺿﺒﻂ ﻣﻲﺷﻮﻧﺪ .ﺑﺎ اﺟﺮاي Tools_Scenarioﻣﻲﺷﻮد Scenarioرا ﻣﺸﺎﻫﺪه ﻛﺮد ﻳﺎ ﮔﺰارش ﮔﺮﻓﺖ.
149
ﺷﻜﻞ 15-16
ﺷﻜﻞ 16-16
ﺷﻜﻞ 17-16
150
ﺟﺪول داده
Data Table
ﻣﺜﺎل: ﻣﻘﺎوﻣﺖ ﻣﻌﺎدل اﻳﻦ ﺷﻜﻞ را ﺑﺎ ﻣﻘﺎدﻳﺮ R1 = 10, R2 = 15و 0=< R3 <=18ﺑﻪ دﺳﺖ آورده ﺑﺮ ﺣﺴﺐ ﺗﻐﻴﻴﺮات R3رﺳﻢ ﻣﻲﻛﻨﻴﻢ. اﺑﺘﺪا ﺳﻪ ﻧﺎم ﺑﺎ ﻣﻘﺎدﻳﺮ ﻣﺮﺑﻮﻃﻪ ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ .ﭼﻮن R1ﺑﺮﭼﺴﺐ ﺳﺘﻮن -ردﻳﻒ ﭘﻴﺶﻓﺮض اﺳﺖ ﺑﺮاي ﻧﺎمﮔﺬاري از R_1
اﺳﺘﻔﺎده ﻛﺮدهاﻳﻢ )ﺷﻜﻞ .(18-16 ﻓﺮﻣﻮل را در ﻳﻜﻲ از ﺧﺎﻧﻪﻫﺎ ﻧﻮﺷﺘﻪ ﻳﻚ ﺳﺘﻮن ﺑﻪ ﭼﭗ ،ﻳﻚ ردﻳﻒ ﭘﺎﺋﻴﻦ رﻓﺘﻪ و ﻣﻘﺎدﻳﺮ R3را رو ﺑﻪ ﭘﺎﺋﻴﻦ وارد ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ (19-16 ﺳﻠﻮلﻫﺎﺋﻲ را ﻛﻪ ﺷﺎﻣﻞ ﻓﺮﻣﻮل و ﻣﻘﺎدﻳﺮ R3ﻫﺴﺘﻨﺪ ﻣﺎرك ﻛﺮده ،از ﻣﻨﻴﻮي اﺻﻠﻲ Data_Tableرا اﺟﺮا ﻣﻲﻛﻨﻴﻢ .در Column input cellﻣﺤﻞ ﻣﺘﻐﻴﺮ را ﻛﻪ در اﻳﻦ ﺟﺎ E3اﺳﺖ وارد و OKﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ (20-16 ﻣﻘﺎدﻳﺮ ﻣﻘﺎوﻣﺖ ﻣﻌﺎدل ﺑﺮﺣﺴﺐ ﻣﻘﺎدﻳﺮ R3در ﻣﻘﺎﺑﻞ آنﻫﺎ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد. ﺳﭙﺲ ﻣﻨﺤﻨﻲ ﻣﺮﺑﻮﻃﻪ را رﺳﻢ ﻣﻲﻛﻨﻴﻢ) .ﺷﻜﻞ (21-16
ﺷﻜﻞ 18-16
ﺷﻜﻞ 19-16
151
ﺷﻜﻞ 20-16
ﺷﻜﻞ 21-16
7-16ﺗﻤﺮﻳﻦ -1ﻧﻤﺮات ﺑﻴﺴﺖ داﻧﺸﺠﻮ را ﺑﻪ ﭼﻬﺎر دﺳﺘﻪ ﭘﻨﺞﺗﺎﺋﻲ ﺗﻘﺴﻴﻢ و ﺑﺎ ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻧﻤﺎﻳﺶ دﻫﻴﺪ. -2ﻣﻴﺰان ﺑﺎران ﻣﺎهﻫﺎي ﻳﻚ ﺳﺎل را در ﺟﺪوﻟﻲ ﻗﺮار داده ،ﭘﺲاز رﺳﻢ ﻣﻨﺤﻨﻲ دو ﻧﻮع ﺟﺒﺮي ﺳﺎزي اﻧﺠﺎم دﻫﻴﺪ. -3ﺑﺮاي ﭘﺎﻧﺼﺪ ﻧﻔﺮ ده ﻣﺠﻤﻮﻋﻪ ﺳﻨﻲ ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ ،و ﻫﻴﺴﺘﻮﮔﺮام آن را ﻧﻤﺎﻳﺶ دﻫﻴﺪ. -4ﻓﺮﻣﻮل B = A * (1+r)^nرا ﻛﻪ در آن A = 300000ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ B ،ﺳﺮﻣﺎﻳﻪ ﻧﻬﺎﺋﻲ، r = 0.1ﻧﺮخ ﺳﻮد و nﺗﻌﺪاد ﺳﺎلﻫﺎ اﺳﺖ ،ﺑﻪ ﺻﻮرت ﻓﺮﻣﻮل ﻛﺎرﺑﺮ ﺗﻌﺮﻳﻒ ﺑﻨﻮﻳﺴﻴﺪ .در ﻳﻚ ﺳﺘﻮن ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ و در ﺳﺘﻮن دﻳﮕﺮ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻌﻲ ﻛﻪ ﻧﻮﺷﺘﻪاﻳﺪ ﺳﺮﻣﺎﻳﻪ ﻧﻬﺎﺋﻲ را ﺑﺮ ﺣﺴﺐ ﺳﺎل ﻧﻤﺎﻳﺶ دﻫﻴﺪ. -5ﭼﻨﺪ ﻋﻤﻞ ﻣﺎﻧﻨﺪ ﻣﺤﺎﺳﺒﻪ ﺣﺎﺻﻞﺟﻤﻊ ﻳﻚ ﺳﺘﻮن را ﺑﻪ ﺻﻮرت ﻣﺎﻛﺮو ﺿﺒﻂ و ﺳﭙﺲ اﺟﺮا ﻛﻨﻴﺪ. 2 -6ﻣﻌﺎدﻟﻪ + e− x = 0 5 x
را ﺑﺎ Goal Seekﺣﻞ ﻛﻨﻴﺪ.
-7اﻳﻦ دﺳﺘﮕﺎه را ﺑﺎ solverﺣﻞ ﻛﻨﻴﺪ: 2
2
2
2
2
uw + t = -5, u + w + t = 14, u - 2w - 2t = -10 12N 12N )P = [rL(1+r/12) ]/[12[(1+r/12 -8ﻓﺮﻣﻮل ﻗﺴﻂ ﻣﺎﻫﺎﻧﻪ ﭘﺮداﺧﺖ وام ﺧﺎﻧﻪ-1]] :
ﻣﺒﻠﻎ L = 10e6وام ﺑﺎ ﺳﻮد r = 0.15ﺳﺎﻻﻧﻪ در ﻣﺪت N = 3ﺳﺎل ﺑﺎزﭘﺮداﺧﺖ ﻣﻲﺷﻮد ،ﻗﺴﻂ ﻣﺎﻫﺎﻧﻪ را ﺑﺮاي زﻣﺎن ﺑﺎزﭘﺮداﺧﺖ ) 3ﺳﺎل( ﺑﻪ ﺻﻮرت ﺟﺪول داده ﻧﺸﺎن دﻫﻴﺪ،و رﺳﻢ ﻛﻨﻴﺪ اﺳﺖ. 152