Lecture Note 11
Lecture Note 11
USER-DEFINED INPUT
دﺳﺘﻮر inputاﺟﺎزه ﻣﯽ دﻫﺪ ﮐﻪ ﮐﺎرﺑﺮ ورودي ﻣﻮرد ﻧﻈﺮ را ﺗﻮﺳﻂ ﮐﯿﺒﻮرد وارد ﻧﻤﺎﯾﺪ .ﺑﺎ اﯾﻦ دﺳﺘﻮر در ﺣﯿﻦ
اﺟﺮاي ﺑﺮﻧﺎﻣﻪ وﻗﻔﻪ اي اﯾﺠﺎد ﻣﯽ ﺷﻮد ﮐﻪ ﺑﺮﻧﺎﻣﻪ ﻣﻨﺘﻈﺮ درﯾﺎﻓﺖ ورودي از ﮐﺎرﺑﺮ ﺧﻮاﻫﺪ ﺑﻮد .ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل:
اﮔﺮ ﮐﺎرﺑﺮ ﻋﺪد 5را وارد ﻧﻤﺎﯾﺪ ﺑﺮﻧﺎﻣﻪ ﻣﻘﺪار 5را در ﻣﺘﻐﯿﺮ zﻗﺮار ﻣﯽ دﻫﺪ.
١۶٢
ﻫﻤﯿﻦ روش ﺑﺮاي وارد ﮐﺮدن ﯾﮏ ﻣﺎﺗﺮﯾﺲ ﯾﮏ ﯾﺎ دو ﺑﻌﺪي ﻧﯿﺰ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد .ﮐﺎرﺑﺮ ﺑﺎﯾﺪ ﻣﺎﺗﺮﯾﺲ را ﺑﻪ ﻧﺤﻮ
ﺻﺤﯿﺢ وارد ﮐﻨﺪ .ﻣﺜﻼ:
)'z = input('Enter values for z in brackets
١۶٣
''Holly
ﺑﻪ اﯾﻦ دﻟﯿﻞ ﮐﻪ در اﻧﺘﻬﺎ semicolonﻗﺮار داده ﻧﺸﺪه اﺳﺖ MATLABﻣﺘﻐﯿﺮ وارد ﺷﺪه را ﻧﻤﺎﯾﺶ
ﻣﯽ دﻫﺪ.
= x
Holly
x =
Ralph
از ﮐﺎرﺑﺮ ﺑﺨﻮاﻫﯿﺪ = (base)(height) ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﻣﺴﺎﺣﺖ ﻣﺜﻠﺚ اﯾﺠﺎد ﮐﻨﯿﺪM-file ﯾﮏ: ﻣﺜﺎل
clc
clear
b=input('enter the length of the base of the triangle:');
h=input('enter the length of the height of the triangle:');
Area=1/2*b*h
١۶۵
clc
clear
n=input('Enter the value of n:');
vector=0:n;
ﺑﻪ ﮐﺎرﺑﺮ. داﺷﺘﻪ ﺑﺎﺷﻨﺪc ﻓﻮاﺻﻞ، ﺧﺘﻢ ﺷﻮد و ﻣﻘﺎدﯾﺮb ﺷﺮوع ﺷﺪه و ﺑﻪa ﺑﺮداري اﯾﺠﺎد ﮐﻨﯿﺪ ﮐﻪ از: ﻣﺜﺎل
. ﻣﻘﺪار را وارد ﮐﻨﺪ3 اﺟﺎزه دﻫﯿﺪ ﺗﺎ ﻫﺮ
clc
clear
a=input('Enter the starting value:');
b=input('Enter the ending value:');
c=input('Enter the vector spacing:');
vector=a:c:b;
١۶۶
ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﻣﻘﺪار ﺷﺘﺎب ﮔﺮاﻧﺶ و ﺑﺮدار زﻣﺎن ﻫﺎي.= ﺑﻪ دﺳﺖ ﻣﯽ آﯾﺪ
.دﻟﺨﻮاه ﮐﺎرﺑﺮ را ﮔﺮﻓﺘﻪ و ﻣﺴﺎﻓﺖ ﺳﻘﻮط ﺟﺴﻢ ﺑﺮ ﺣﺴﺐ زﻣﺎن دﻟﺨﻮاه ﮐﺎرﺑﺮ را ﺗﺮﺳﯿﻢ ﻧﻤﺎﯾﺪ
%Example 7.1
%Free fall
clear, clc
%Request input from the user
g = input('What is the value of acceleration due to gravity?')
start = input('What starting time would you like?')
finish = input('What ending time would you like?')
incr = input('What time increments would you like calculated?')
time = start:incr:finish;
%Calculate the distance
distance = 1/2*g*time.^2;
%Plot the results
loglog(time,distance)
title('Distance Traveled in Free Fall')
xlabel('time, s'),ylabel('distance, m')
%Find the maximum distance traveled
final_distance = max(distance) ١۶٧
١۶٨
x = x
1 2 3 4 5
Display Function
دﺳﺘﻮر dispﺑﺮاي ﻧﻤﺎﯾﺶ ﻣﺤﺘﻮﯾﺎت ﻣﺎﺗﺮﯾﺲ ﺑﺪون ﻧﻤﺎﯾﺶ ﻧﺎم ﻣﺎﺗﺮﯾﺲ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد.
دﺳﺘﻮر dispﻫﻤﭽﻨﯿﻦ ﺑﺮاي ﻧﻤﺎﯾﺶ ﯾﮏ ﻣﺘﻦ ) (stringﮐﻪ در ﭘﺮاﻧﺘﺰ dispﻗﺮار داده ﻣﯽ ﺷﻮد ﻧﯿﺰ ﮐﺎرﺑﺮد
دارد.
;)'disp('The values in the x matrix are:
١۶٩
The values in the x matrix are:
Dr. Seyyed Arash Haghpanah
واردC.W. ﻋﺒﺎرت زﯾﺮ را در. وارد ﻣﯽ ﺷﻮد ﯾﮏ آراﯾﻪ از ﮐﺎراﮐﺘﺮﻫﺎ وارد ﻣﯽ ﺷﻮدstring در واﻗﻊ وﻗﺘﯽ ﯾﮏ
:ﮐﻨﯿﺪ
'The values in the x matrix are:'
ans =
'The values in the x matrix are:'
: ﻧﮕﺎه ﮐﻨﯿﺪworkspace اﮔﺮ ﺑﻪ
١٧٠
ﺗﺎﺑﻊ num2strﯾﮏ آراﯾﻪ از اﻋﺪاد را ﺑﻪ آراﯾﻪ اي از ﮐﺎراﮐﺘﺮﻫﺎ ﺗﺒﺪﯾﻞ ﻣﯽ ﮐﻨﺪ .در ﻣﺜﺎل ﺑﺎﻻ از دو آراﯾﻪ
ﮐﺎراﮐﺘﺮي ﺑﻪ ﮐﻤﮏ ﺑﺮاﮐﺖ ﯾﮏ آراﯾﻪ ﺑﺰرﮔﺘﺮ ﺳﺎﺧﺘﯿﻢ .ﻣﯽ ﺗﻮان ﻣﺎﺗﺮﯾﺲ ﺳﺎﺧﺘﻪ ﺷﺪه را ﻧﻤﺎﯾﺶ داد:
= A
The values in the x array are: 1 2 3 4 5
١٧١
ﺗﺎﺑﻊ (formatted print function) fprintfﮐﻨﺘﺮل ﺑﯿﺸﺘﺮي ﺑﺮ روي ﺧﺮوﺟﯽ ﻫﺎ اراﺋﻪ ﻣﯽ دﻫﺪ.
اﯾﻦ ﺗﺎﺑﻊ ﻋﻼوه ﺑﺮ ﻧﻤﺎﯾﺶ textو ﻣﺎﺗﺮﯾﺲ ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮ روي ﻓﺮﻣﺖ ﻧﻤﺎﯾﺶ ﺧﺮوﺟﯽ ﻫﺎ ﻧﯿﺰ ﮐﻨﺘﺮل داﺷﺘﻪ ﺑﺎﺷﺪ.
ﺷﮑﻞ ﮐﻠﯽ دﺳﺘﻮر fprintfﺷﺎﻣﻞ دو ﭘﺎراﻣﺘﺮ اﺳﺖ .ﯾﮑﯽ ﺑﺮاي stringو دﯾﮕﺮي ﻟﯿﺴﺘﯽ ﺑﺮاي ﻣﺎﺗﺮﯾﺲ ﻫﺎ:
;cows = 5
)fprintf('There are %f cows in the pasture', cows
MATLAB ﺑﻌﺪ از fprintfﯾﮏ ﺧﻂ ﺟﺪﯾﺪ اﯾﺠﺎد ﻧﻤﯽ ﮐﻨﺪ .ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺑﻌﺪ از اﺟﺮاي ﺧﻂ ﻗﺒﻠﯽ ﻣﺸﺎﺑﻪ
زﯾﺮ ﻣﺸﺎﻫﺪه ﺧﻮاﻫﯿﺪ ﮐﺮد:
>>There are 5.000000 cows in the pasture
اﮔﺮ ﺧﻂ دﯾﮕﺮي را اﺟﺮا ﮐﻨﯿﻢ ﻧﺘﺎﯾﺞ در اداﻣﻪ ﻧﺘﺎﯾﺞ ﻗﺒﻠﯽ در ﻫﻤﺎن ﺧﻂ ﻧﺸﺎن داده ﻣﯽ ﺷﻮد.
١٧٣
١٧۴
ﻋﺒﺎرت \tﺑﺎ ﯾﮏ tabﻓﺎﺻﻠﻪ اﯾﺠﺎد ﻣﯽ ﮐﻨﺪ .اﯾﻦ ﻋﺒﺎرت ﺑﺮاي اﯾﺠﺎد ﺟﺪاول ﻣﻔﯿﺪ اﺳﺖ و ﮐﻤﮏ ﻣﯽ ﮐﻨﺪ ﮐﻪ
ﺟﺪول ﺑﻪ ﺻﻮرت ﻣﻨﻈﻢ و دادﻫﺎ زﯾﺮ ﻫﻢ ﻗﺮار ﺑﮕﯿﺮﻧﺪ.
در ﺗﻨﻈﯿﻤﺎت fprintfدو ﺗﻨﻈﯿﻢ ﺑﻪ ﻧﺎم width fieldو precision fieldدارﯾﻢ.
Width field ﺣﺪاﻗﻞ ﺗﻌﺪاد ﮐﺎراﮐﺘﺮ ﺧﺮوﺟﯽ را ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﺪ.
Precision field ﺑﻌﺪ از ) (.ﻣﯽ آﯾﺪ و ﺗﻌﺪاد اﻋﺪاد اﻋﺸﺎري را ﻧﺸﺎن ﻣﯽ دﻫﺪ .ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل %8.2f
ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﺣﺪاﻗﻞ ﻃﻮل ﮐﻠﯽ 8رﻗﻢ اﺳﺖ و دو ﺗﺎ از آن ﻫﺎ ﺑﻌﺪ از اﻋﺸﺎر ﻧﺸﺎن داده ﻣﯽ ﺷﻮد.
;voltage = 3.5
;)fprintf('The voltage is %8.2f millivolts \n',voltage
ﻓﻀﺎي ﺧﺎﻟﯽ ﻗﺒﻞ از ﻋﺪد 3.50ﺑﻪ اﯾﻦ دﻟﯿﻞ اﺳﺖ ﮐﻪ 6رﻗﻢ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه ﺑﻮد ﮐﻪ ﺑﺎ دو رﻗﻢ اﻋﺸﺎر 8رﻗﻢ ١٧۵
MATLAB ﻓﺮﻣﺖ stringدرون fprintfرا ﺑﺮاي ﺗﻤﺎم ﻣﻘﺎدﯾﺮ ﻣﺎﺗﺮﯾﺲ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ.
;)fprintf('%8.2f \n',x
1.00
2.00
3.00
4.00
5.00
اﮔﺮ ﻣﺘﻐﯿﺮ ،ﯾﮏ ﻣﺎﺗﺮﯾﺲ دو ﺑﻌﺪي ﺑﺎﺷﺪ MATLAB ،از ﯾﮏ ﺳﺘﻮن ﺷﺮوع ﻣﯽ ﮐﻨﺪ از ﺳﻄﺮ اول ﺗﺎ اﻧﺘﻬﺎ در ان
ﺳﺘﻮن ﻣﻘﺎدﯾﺮ را ﻣﯽ ﺧﻮاﻧﺪ و ﺳﭙﺲ ﺳﺘﻮن دوم و ﺳﺘﻮن ﻫﺎي ﺑﻌﺪ ﺑﻪ ﻫﻤﯿﻦ ﺗﺮﺗﯿﺐ ﻣﯽ ﺧﻮاﻧﺪ.
table =
1 2 3
12 24 36
1 12.00
2 24.00
3 36.00
واردfprintf ﻣﺴﺘﻘﯿﻢ ﻫﺮ ﮐﺪام از ﺑﺮدارﻫﺎ در ﺗﺎﺑﻊtable ﺷﺎﯾﺪ ﭘﯿﺸﻨﻬﺎد ﺷﻮد ﮐﻪ ﺑﻪ ﺟﺎي ﺳﺎﺧﺖ ﻣﺎﺗﺮﯾﺲ
.ﺷﻮﻧﺪ
fprintf('%4.0f %7.2f \n', feet, inches)
1 2.00
3 12.00
24 36.00 ١٧٧
١٧٨
n=5;
N=1:5;
x=linspace(-pi,pi,n);
y=x/10^6;
z=x*10^6;
table=[N;x;y;z];
fprintf('%d\t %f\t %f\t %f\t \n', table)
١٧٩
١٨٠
ﻋﻼوه ﺑﺮ اﯾﺠﺎد ﺧﺮوﺟﯽ ﺑﺎ ﻓﺮﻣﺖ ﮐﻨﺘﺮل ﺷﺪه در ﻣﺤﯿﻂ ،C.W.دﺳﺘﻮر fprintfﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي ارﺳﺎل
ﺧﺮوﺟﯽ ﺑﺎ ﻓﺮﻣﺖ ﮐﻨﺘﺮل ﺷﺪه ﺑﻪ ﻓﺎﯾﻞ ﻫﺎ ﻫﻢ اﺳﺘﻔﺎده ﺷﻮد .ﺑﺮاي اﯾﻦ ﮐﺎر ﻻزم اﺳﺖ اﺑﺘﺪا ﯾﮏ ﻓﺎﯾﻞ ﺳﺎﺧﺘﻪ و ﺑﺎز
ﺷﻮد:
;)'file_id = fopen('my_output_file.txt', 'wt
اﯾﻦ دﺳﺘﻮر ﯾﮏ ﻓﺎﯾﻞ ﺑﻪ اﺳﻢ my-output_fileاﯾﺠﺎد ﻣﯽ ﮐﻨﺪ 'wt‘ .اﯾﻦ اﻣﮑﺎن را ﻣﯽ دﻫﺪ ﺗﺎ داده روي
اﯾﻦ ﻓﺎﯾﻞ writeﺷﻮد.
)fprintf(file_id, 'Some example output is %4.2f \n', pi*1000
١٨١
= a
Some example output is 3141.59
ﺑﺪﺳﺖ ﻣﯽ اﯾﺪ. = ﻣﺜﺎل :7-3در ﻣﺜﺎل ﻫﺎي ﻗﺒﻞ دﯾﺪﯾﻢ ﮐﻪ ﺑﺮد ﯾﮏ ﭘﺮﺗﺎﺑﻪ از راﺑﻄﻪ ) (2
ﻣﻘﺪار ﺑﺮد را ﺑﺮاي زواﯾﺎي ﻣﺨﺘﻠﻒ از 0ﺗﺎ 90درﺟﻪ ﺣﺴﺎب ﮐﻨﯿﺪ و در ﯾﮏ ﻧﻤﻮدار ﺑﺮد را ﺑﺮ ﺣﺴﺐ زاوﯾﻪ رﺳﻢ
ﮐﻨﯿﺪ .ﺑﺮ روي ﻧﻤﻮدار ﯾﮏ textboxاﯾﺠﺎد ﮐﻨﯿﺪ ﮐﻪ در آن ﻣﻘﺪار ﻣﺎﮐﺰﯾﻤﻢ ﺑﺮد را ﻧﺸﺎن دﻫﺪ.
١٨٢
١٨٣
ﺑﺪﺳﺖ ﻣﯽ اﯾﺪ. = ﻣﺜﺎل :7-3در ﻣﺜﺎل ﻫﺎي ﻗﺒﻞ دﯾﺪﯾﻢ ﮐﻪ ﺑﺮد ﯾﮏ ﭘﺮﺗﺎﺑﻪ از راﺑﻄﻪ ) (2
ﻣﻘﺪار ﺑﺮد را ﺑﺮاي زواﯾﺎي ﻣﺨﺘﻠﻒ از 0ﺗﺎ 90درﺟﻪ ﺣﺴﺎب ﮐﻨﯿﺪ و در ﯾﮏ ﻧﻤﻮدار ﺑﺮد را ﺑﺮ ﺣﺴﺐ زاوﯾﻪ رﺳﻢ
ﮐﻨﯿﺪ .ﺑﺮ روي ﻧﻤﻮدار ﯾﮏ textboxاﯾﺠﺎد ﮐﻨﯿﺪ ﮐﻪ در آن ﻣﻘﺪار ﻣﺎﮐﺰﯾﻤﻢ ﺑﺮد را ﻧﺸﺎن دﻫﺪ.
١٨۴
)'xlsread('filename.xls
)xlswrite('filename.xls', M
;)'a=xlsread('name.xlsx',1, 'B3:B143
١٨۵
ﯾﮏ وﯾﮋﮔﯽ ﻣﻔﯿﺪ MATLABﮐﻪ درﮔﺰارش ﻧﻮﯾﺴﯽ ﻣﯽ ﺗﻮاﻧﺪ ﮐﺎرﺑﺮد داﺷﺘﻪ ﺑﺎﺷﺪ ،وﯾﮋﮔﯽ publishاﺳﺖ.
ﺑﺎ اﯾﻦ وﯾﮋﮔﯽ ﻣﯽ ﺗﻮان ﮐﺪ ﻧﻮﺷﺘﻪ ﺷﺪه را ﺑﻪ ﻫﻤﺮاه ﻧﺘﺎﯾﺞ در ﯾﮏ ﻓﺎﯾﻞ واﺣﺪ ﻣﻨﺘﺸﺮ ﮐﺮد .اﯾﻦ ﻓﺎﯾﻞ ﻣﯽ ﺗﻮاﻧﺪ
ﻓﺮﻣﺖ ﻫﺎي ﮔﻮﻧﺎﮔﻮن ﻣﺜﻞ pdf ،doc ،htmlﯾﺎ pptداﺷﺘﻪ ﺑﺎﺷﺪ.
اﮔﺮ در ﺑﺮﻧﺎﻣﻪ M-fileدﺳﺘﻮر inputداﺷﺘﻪ ﺑﺎﺷﯿﻢ اﯾﻦ وﯾﮋﮔﯽ ﮐﺎراﯾﯽ ﻧﺪارد.
ﺑﺮاي اﯾﻦ ﮐﺎر M-fileﻣﻮرد ﻧﻈﺮ را ﺑﺎز ﻧﻤﻮده و از ﻣﻨﻮي ﺑﺎﻻ publish Tab ،را اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﯿﻢ .در ﻗﺴﻤﺖ
ﺳﻤﺖ راﺳﺖ اﯾﻦ Tabﮔﺰﯾﻨﻪ publishو ﮔﺰﯾﻨﻪ Edit Publishing Optionرا اﻧﺘﺨﺎب ﮐﻨﯿﺪ.
در ﻗﺴﻤﺖ output file formatﻣﯽ ﺗﻮان ﻓﺮﻣﺖ ﺧﺮوﺟﯽ را ﺗﻌﯿﯿﻦ ﮐﺮد.
در ﻧﻬﺎﯾﺖ ﺑﺎ ﻓﺸﺮدن ﮔﺰﯾﻨﻪ publishﻓﺎﯾﻞ ﻣﻮرد ﻧﻈﺮ ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮد.
١٨۶
MATLAB اﺑﺰاري دارد ﮐﻪ ﺗﻮﺳﻂ آن ﻣﯽ ﺗﻮان ﻣﺠﻤﻮﻋﻪ اي از xو yﻫﺎي ﻧﻘﺎط را از روي ﻧﻮدار اﺳﺘﺨﺮاج
ﮐﺮد.
)[x,y] = ginput(n
از ﮐﺎرﺑﺮ ﻣﯽ ﺧﻮاﻫﺪ ﮐﻪ nﻧﻘﻄﻪ را از ﭘﻨﺠﺮه ﮔﺮاﻓﯿﮑﯽ اﻧﺘﺨﺎب ﮐﻨﺪ .اﮔﺮ ﻣﻘﺪار nداده ﻧﺸﻮد .ﺗﺎ زﻣﺎﻧﯽ ﮐﻪ دﮐﻤﻪ
[x,y] = ginput Enterزده ﻧﺸﺪه ﺑﺎﺷﺪ ﮔﺮﻓﺘﻦ ﻧﻘﺎط اداﻣﻪ ﻣﯽ ﯾﺎﺑﺪ.
;x = 5:30
;y = x.^2 - 40.*x + 400
)plot(x,y
)]axis([5,30,-50,250
در اﯾﻦ ﻣﺮﺣﻠﻪ دو ﺧﻂ ﻋﻤﻮد ﺑﺮ ﻫﻢ در ﭘﻨﺠﺮه ﮔﺮاﻓﯿﮑﯽ ﻧﺸﺎن داده ﻣﯽ ﺷﻮد ﮐﻪ ﻣﺤﻞ ﺗﻘﺎﻃﻊ آن دو ،ﻧﻘﻄﻪ ﻣﻮرد
ﻧﻈﺮ اﺳﺖ .ﺑﺎ ﮐﻠﯿﮏ ﮐﺮدن ﻣﯽ ﺗﻮان ﻧﻘﻄﻪ ﻣﻮرد ﻧﻈﺮ را اﻧﺘﺨﺎب ﮐﺮد و ﻫﻤﯿﻦ ﻋﻤﻠﯿﺎت را ﺑﺮاي ﻧﻘﺎط دﯾﮕﺮ اﻧﺠﺎم
داد و ﺑﻌﺪ از اﺗﻤﺎم ﮐﺎر ﮐﻠﯿﺪ Enterرا ﻓﺸﺮد.
١٨٧
١٨٨