Transcript MFasl12_matlab1.ir
Slide 1
فصل دوازدهم:
نمودارهای سهبعدی
کالس آموزش ی
ایران متلب
matlab1.ir
Slide 2
فصل دوازدهم :نمودارهاي سهبعدي
-1-۱۱خمهاي فضايي -تابع plot3
با استفاده از تابع plot3در متلب ميتوان يک منحني را در فضاي سهبعدي ترسيم کرد.
روش استفاده از اين تابع بسيار شبيه تابع plotاست .جز اينکه بازاي هر منحني به
سه بردار هم طول نياز است.
مثال :رسم يک فنر با شعاع برابر با يک:
x=t
tR
ایران متلب
)y= sin(t
)z=cos(t
matlab1.ir
Slide 3
نمودارهاي سهبعدي:فصل دوازدهم
ادامه- خمهاي فضايي-1-۱۱
>>t=0: pi/50:10*pi;
>>plot3(sin(t) , cos(t) , t); xlabel(‘sin(x)’); ylabel(‘cos(x)’); zlabel(‘x’)
matlab1.ir
ایران متلب
Slide 4
فصل دوازدهم :نمودارهاي سهبعدي
-2-1۱تغيير زاويه ديد
با استفاده از دکمه فشاري Rotate 3Dبر روي هر پنجره شکل متلب و يا با استفاده از
دستور viewمي توان زاويه ديد را تغيير داد .همچنين در منوي Toolsبا استفاده از
زيرمنوهاي Camera Motionمي توان در فضاي سهبعدي حرکت کرد.
شکل کلي استفاده از دستور viewبصورت زير است:
)]view([az , el
که در اين رابطه azو elبترتيب زاويه دوربين نسبت به صفحه xyو بخش
منفي محور yاست.
ایران متلب
matlab1.ir
Slide 5
فصل دوازدهم :نمودارهاي سهبعدي
-3-1۱نمودارهاي شبکهاي :توابع mesh, meshc, meshz
با استفاده از اين توابع ميتوان سطوح شبکهاي(يا توري) ايجاد کرد.شکل کلي استفاده از تابع mesh
بصورت زيراست:
)mesh(x,y,z
که در اين رابطه zتابعي دو متغيره از متغيرهاي xو yميباشد .بنابراين الزم است که zيک ماتريس
دو بعدي باشد که تعداد سطرهاي آن برابر با تعداد عناصر yو تعداد ستونهايش برابر با تعداد
عناصر xباشد x .و yبايد بردار باشند اگرچه مي توانند ماتريسهايي همبعد نيز باشند
بدينصورت که بردار xبه تعداد عناصر بردار yبصورت سطري تکرار شود و بردار yبه تعداد
عناصر xبصورت ستوني تکرار گردد .که در اينصورت دو ماتريس همبعد خواهيم داشت .تابع
meshgridمي تواند اين عمل را انجام دهد:
;)[x_new,y_new]=meshgrid(x,y
تابع meshcعالوه بر نمودار شبکهاي ،نمودارهاي تراز را نيز رسم ميکند.
تابع meshzديوارههايي را در پايين نمودار به سمت صفحه x-yرسم ميکند.
ایران متلب
matlab1.ir
Slide 6
فصل دوازدهم :نمودارهاي سهبعدي
-3-1۱نمودارهاي شبکهاي -ادامه-
مثال : 1تابع peaksيکي از توابع متلب است که يک مدل رياض ي از پيشتعريف شده را
ايجاد ميکند:
;)>> [x ,y,z]= peaks(30
;)>> mesh(x,y,z
ایران متلب
matlab1.ir
Slide 7
نمودارهاي سهبعدي:فصل دوازدهم
- ادامه-نمودارهاي شبکهاي-3-1۱
r=sqrt(X^2 + Y^2) کهz=sin(r)/r رسم يک تابع دو بعدي به فرمول: 2 مثال
>>x=-7.5: 0.5: 7.5; y=x;
>> [x_new,y_new]=meshgrid(x,y);
>> r = sqrt(x_new.^2 + y_new.^2) + eps;
>>z=sin(r) ./ r; mesh(x_new , y_new , z) يا: mesh(x,y,z);
matlab1.ir
ایران متلب
Slide 8
فصل دوازدهم :نمودارهاي سهبعدي
-3-1۱نمودارهاي شبکهاي -ادامه-
به صورت پیشفرض متلب نقاطی از نمودار سهبعدی که پشت نقاط
جلویی قرار گرفتهاند را مخفی میکند .با استفاده از تابع hidden
میتوان این رفتار را تغیير داد:
>>hidden off
>> hidden on
>> hidden
ایران متلب
matlab1.ir
Slide 9
فصل دوازدهم :نمودارهاي سهبعدي
-4-1۱نمودارهاي رويهsurf :و surflو surfc
تفاوت نمودارهاي رويه با نمودارهاي شبکهاي آن است که در اينجا بجاي خطوط شبکهاي ،وصلهها يا
فواصل بين شبکهها ترسيم ميگردد.
تابع surfدقيقا مانند تابع meshبکار برده ميشود.
تابع surflعالوه بر تواناييهاي تابع surfميتواند خصوصيات نوردهي ش يء سهبعدي را نيز تنظيم
کند .از قبيل جهت منبع نوري و خصوصيات انعکاس ي ش يء
تابع surfcمانند تابع meshcعمل ميکند
ایران متلب
matlab1.ir
Slide 10
فصل دوازدهم :نمودارهاي سهبعدي
-4-1۱نمودارهاي رويه-ادامه
تابع : shading
با استفاده از تابع shadingميتوان نوع سايهرنگ نمودار را تعيين کرد .اين تابع بايد پس از يکي از
توابع surfبيايد و با يکي از ُسه پارامتر زير قابل فراخواني است:
shading flat
shading interp
shading faceted
ایران متلب
matlab1.ir
Slide 11
فصل دوازدهم :نمودارهاي سهبعدي
-4-1۱نمودارهاي رويه-ادامه
تابع : colormap
با استفاده از اين تابع ميتوان رنگهاي بکار برده شده براي ترسيم نمودار رويه را تعريف کرد تنها پارامتر
مورد نياز ميتواند يکي از ثابتهاي زير باشد:
hsv, cool , hot, prism, gray
ایران متلب
matlab1.ir
Slide 12
فصل دوازدهم :نمودارهاي سهبعدي
-5-11چرخش دوربین در فضای سه بعدی
با استفاده از تابع camorbitمیتوان پس از رسم نمودار سهبعدی ،زاویه دید دوربين
نسبت به ش یء را تغیير داد:
)camorbit(theta,phi
:thetaزاویه چرخش افقی
:phiزاویه چرخش عمودی
و یا میتوانید از این فرم تابع استفاده کنید:
;)’محور چرخش’camorbit(theta,phi,
آرگومان سوم محوری است که چرخش حول آن انجام میشود را مشخص میکند که به
صورت پیشفرض محور zاست.
ایران متلب
matlab1.ir
Slide 13
فصل دوازدهم :نمودارهاي سهبعدي
-5-11چرخش دوربین در فضای سه بعدی-ادامه...
مثال:
)surf(peaks
axis vis3d
axis off
for i=1:360
)'camorbit(2,0,'data
drawnow
end
ایران متلب
matlab1.ir
Slide 14
فصل دوازدهم :نمودارهاي سهبعدي
-6-11تعیین موقعیت دوربین
به منظور تعیين موقعیت دوربين میتوان از تابع camposاستفاده کرد:
آرگومان ورودی این تابع موقعیت دوربين را در فضای )]campos([x,y,z
سهبعدی مشخص میکند.
مثال:
)surf(peaks
axis vis3d off
for x = -200:5:200
)]campos([x,5,10
drawnow
end
ایران متلب
matlab1.ir
Slide 15
فصل دوازدهم :نمودارهاي سهبعدي
-7-11نمایش میلهرنگ
با استفاده از تابع colorbarمیتوان پس از نمایش نمودار ،رنگهای بکار برده شده در آن
را بصورت یک میلهرنگ در کنار نمودار نمایش داد:
)>> surf(peaks
>> colorbar
اعداد نمایش داده شده در کنار میلهرنگ مقداری را که هر رنگ به آن اشاره میکند(به
صورت پیشفرض مقدار )zرا نمایش میدهد.
ایران متلب
matlab1.ir
Slide 16
فصل دوازدهم :نمودارهاي سهبعدي
-8-1۱نمودارهاي ترازcontour , contour3-
نمودارهاي تراز خطوط و منحنيهاي بستهاي ميباشند که براي نمايش ارتفاعهاي
مختلف يک نمودار سهبعدي ،در فضاي دوبعدي يا سهبعدي بکار برده ميشوند.
در اين نمودارها ،نواحي همارتفاع توسط خطوطي به يکديگر متصل ميشوند.
نحوه استفاده از توابع contourو contour3نيز دقيقا شبيه تابع
meshاست.
مثال:
[c,h] = contour(peaks); clabel(c,h), colorbar
ایران متلب
matlab1.ir
Slide 17
فصل دوازدهم :نمودارهاي سهبعدي
-9-11تابع pcolor
این تابع دادههای مربوط به یک نمودار سهبعدی را در فضای دوبعدی رسم میکند و برای نمایش
ارتفاع(مقدار )zاز تغیيرات رنگ استفاده مینماید .نتیجه حاصل از این تابع ،مشابه تصویر از
باالی تابع surfاست.
مثال :۱
)>>pcolor(peaks
مثال :۲
;))t=tril(ones(10
;])ts=[t,fliplr(t
;]tss=[flipud(ts);ts
))pcolor(tss); colormap(gray(2
ایران متلب
matlab1.ir
Slide 18
فصل دوازدهم :نمودارهاي سهبعدي
-9-11اجراي برنامههاي نمايش ي متلب در زمينه ترسيم سهبعدي
demoهاي Graphicsدر متلب راهنماي بسيار خوبي براي آموزش قابليتهاي گرافيکي متلب
ميباشد .اين برنامهها از منوي Startمتلب در شاخه Demo-> Graphicsدر
دسترسند.
ایران متلب
matlab1.ir
فصل دوازدهم:
نمودارهای سهبعدی
کالس آموزش ی
ایران متلب
matlab1.ir
Slide 2
فصل دوازدهم :نمودارهاي سهبعدي
-1-۱۱خمهاي فضايي -تابع plot3
با استفاده از تابع plot3در متلب ميتوان يک منحني را در فضاي سهبعدي ترسيم کرد.
روش استفاده از اين تابع بسيار شبيه تابع plotاست .جز اينکه بازاي هر منحني به
سه بردار هم طول نياز است.
مثال :رسم يک فنر با شعاع برابر با يک:
x=t
tR
ایران متلب
)y= sin(t
)z=cos(t
matlab1.ir
Slide 3
نمودارهاي سهبعدي:فصل دوازدهم
ادامه- خمهاي فضايي-1-۱۱
>>t=0: pi/50:10*pi;
>>plot3(sin(t) , cos(t) , t); xlabel(‘sin(x)’); ylabel(‘cos(x)’); zlabel(‘x’)
matlab1.ir
ایران متلب
Slide 4
فصل دوازدهم :نمودارهاي سهبعدي
-2-1۱تغيير زاويه ديد
با استفاده از دکمه فشاري Rotate 3Dبر روي هر پنجره شکل متلب و يا با استفاده از
دستور viewمي توان زاويه ديد را تغيير داد .همچنين در منوي Toolsبا استفاده از
زيرمنوهاي Camera Motionمي توان در فضاي سهبعدي حرکت کرد.
شکل کلي استفاده از دستور viewبصورت زير است:
)]view([az , el
که در اين رابطه azو elبترتيب زاويه دوربين نسبت به صفحه xyو بخش
منفي محور yاست.
ایران متلب
matlab1.ir
Slide 5
فصل دوازدهم :نمودارهاي سهبعدي
-3-1۱نمودارهاي شبکهاي :توابع mesh, meshc, meshz
با استفاده از اين توابع ميتوان سطوح شبکهاي(يا توري) ايجاد کرد.شکل کلي استفاده از تابع mesh
بصورت زيراست:
)mesh(x,y,z
که در اين رابطه zتابعي دو متغيره از متغيرهاي xو yميباشد .بنابراين الزم است که zيک ماتريس
دو بعدي باشد که تعداد سطرهاي آن برابر با تعداد عناصر yو تعداد ستونهايش برابر با تعداد
عناصر xباشد x .و yبايد بردار باشند اگرچه مي توانند ماتريسهايي همبعد نيز باشند
بدينصورت که بردار xبه تعداد عناصر بردار yبصورت سطري تکرار شود و بردار yبه تعداد
عناصر xبصورت ستوني تکرار گردد .که در اينصورت دو ماتريس همبعد خواهيم داشت .تابع
meshgridمي تواند اين عمل را انجام دهد:
;)[x_new,y_new]=meshgrid(x,y
تابع meshcعالوه بر نمودار شبکهاي ،نمودارهاي تراز را نيز رسم ميکند.
تابع meshzديوارههايي را در پايين نمودار به سمت صفحه x-yرسم ميکند.
ایران متلب
matlab1.ir
Slide 6
فصل دوازدهم :نمودارهاي سهبعدي
-3-1۱نمودارهاي شبکهاي -ادامه-
مثال : 1تابع peaksيکي از توابع متلب است که يک مدل رياض ي از پيشتعريف شده را
ايجاد ميکند:
;)>> [x ,y,z]= peaks(30
;)>> mesh(x,y,z
ایران متلب
matlab1.ir
Slide 7
نمودارهاي سهبعدي:فصل دوازدهم
- ادامه-نمودارهاي شبکهاي-3-1۱
r=sqrt(X^2 + Y^2) کهz=sin(r)/r رسم يک تابع دو بعدي به فرمول: 2 مثال
>>x=-7.5: 0.5: 7.5; y=x;
>> [x_new,y_new]=meshgrid(x,y);
>> r = sqrt(x_new.^2 + y_new.^2) + eps;
>>z=sin(r) ./ r; mesh(x_new , y_new , z) يا: mesh(x,y,z);
matlab1.ir
ایران متلب
Slide 8
فصل دوازدهم :نمودارهاي سهبعدي
-3-1۱نمودارهاي شبکهاي -ادامه-
به صورت پیشفرض متلب نقاطی از نمودار سهبعدی که پشت نقاط
جلویی قرار گرفتهاند را مخفی میکند .با استفاده از تابع hidden
میتوان این رفتار را تغیير داد:
>>hidden off
>> hidden on
>> hidden
ایران متلب
matlab1.ir
Slide 9
فصل دوازدهم :نمودارهاي سهبعدي
-4-1۱نمودارهاي رويهsurf :و surflو surfc
تفاوت نمودارهاي رويه با نمودارهاي شبکهاي آن است که در اينجا بجاي خطوط شبکهاي ،وصلهها يا
فواصل بين شبکهها ترسيم ميگردد.
تابع surfدقيقا مانند تابع meshبکار برده ميشود.
تابع surflعالوه بر تواناييهاي تابع surfميتواند خصوصيات نوردهي ش يء سهبعدي را نيز تنظيم
کند .از قبيل جهت منبع نوري و خصوصيات انعکاس ي ش يء
تابع surfcمانند تابع meshcعمل ميکند
ایران متلب
matlab1.ir
Slide 10
فصل دوازدهم :نمودارهاي سهبعدي
-4-1۱نمودارهاي رويه-ادامه
تابع : shading
با استفاده از تابع shadingميتوان نوع سايهرنگ نمودار را تعيين کرد .اين تابع بايد پس از يکي از
توابع surfبيايد و با يکي از ُسه پارامتر زير قابل فراخواني است:
shading flat
shading interp
shading faceted
ایران متلب
matlab1.ir
Slide 11
فصل دوازدهم :نمودارهاي سهبعدي
-4-1۱نمودارهاي رويه-ادامه
تابع : colormap
با استفاده از اين تابع ميتوان رنگهاي بکار برده شده براي ترسيم نمودار رويه را تعريف کرد تنها پارامتر
مورد نياز ميتواند يکي از ثابتهاي زير باشد:
hsv, cool , hot, prism, gray
ایران متلب
matlab1.ir
Slide 12
فصل دوازدهم :نمودارهاي سهبعدي
-5-11چرخش دوربین در فضای سه بعدی
با استفاده از تابع camorbitمیتوان پس از رسم نمودار سهبعدی ،زاویه دید دوربين
نسبت به ش یء را تغیير داد:
)camorbit(theta,phi
:thetaزاویه چرخش افقی
:phiزاویه چرخش عمودی
و یا میتوانید از این فرم تابع استفاده کنید:
;)’محور چرخش’camorbit(theta,phi,
آرگومان سوم محوری است که چرخش حول آن انجام میشود را مشخص میکند که به
صورت پیشفرض محور zاست.
ایران متلب
matlab1.ir
Slide 13
فصل دوازدهم :نمودارهاي سهبعدي
-5-11چرخش دوربین در فضای سه بعدی-ادامه...
مثال:
)surf(peaks
axis vis3d
axis off
for i=1:360
)'camorbit(2,0,'data
drawnow
end
ایران متلب
matlab1.ir
Slide 14
فصل دوازدهم :نمودارهاي سهبعدي
-6-11تعیین موقعیت دوربین
به منظور تعیين موقعیت دوربين میتوان از تابع camposاستفاده کرد:
آرگومان ورودی این تابع موقعیت دوربين را در فضای )]campos([x,y,z
سهبعدی مشخص میکند.
مثال:
)surf(peaks
axis vis3d off
for x = -200:5:200
)]campos([x,5,10
drawnow
end
ایران متلب
matlab1.ir
Slide 15
فصل دوازدهم :نمودارهاي سهبعدي
-7-11نمایش میلهرنگ
با استفاده از تابع colorbarمیتوان پس از نمایش نمودار ،رنگهای بکار برده شده در آن
را بصورت یک میلهرنگ در کنار نمودار نمایش داد:
)>> surf(peaks
>> colorbar
اعداد نمایش داده شده در کنار میلهرنگ مقداری را که هر رنگ به آن اشاره میکند(به
صورت پیشفرض مقدار )zرا نمایش میدهد.
ایران متلب
matlab1.ir
Slide 16
فصل دوازدهم :نمودارهاي سهبعدي
-8-1۱نمودارهاي ترازcontour , contour3-
نمودارهاي تراز خطوط و منحنيهاي بستهاي ميباشند که براي نمايش ارتفاعهاي
مختلف يک نمودار سهبعدي ،در فضاي دوبعدي يا سهبعدي بکار برده ميشوند.
در اين نمودارها ،نواحي همارتفاع توسط خطوطي به يکديگر متصل ميشوند.
نحوه استفاده از توابع contourو contour3نيز دقيقا شبيه تابع
meshاست.
مثال:
[c,h] = contour(peaks); clabel(c,h), colorbar
ایران متلب
matlab1.ir
Slide 17
فصل دوازدهم :نمودارهاي سهبعدي
-9-11تابع pcolor
این تابع دادههای مربوط به یک نمودار سهبعدی را در فضای دوبعدی رسم میکند و برای نمایش
ارتفاع(مقدار )zاز تغیيرات رنگ استفاده مینماید .نتیجه حاصل از این تابع ،مشابه تصویر از
باالی تابع surfاست.
مثال :۱
)>>pcolor(peaks
مثال :۲
;))t=tril(ones(10
;])ts=[t,fliplr(t
;]tss=[flipud(ts);ts
))pcolor(tss); colormap(gray(2
ایران متلب
matlab1.ir
Slide 18
فصل دوازدهم :نمودارهاي سهبعدي
-9-11اجراي برنامههاي نمايش ي متلب در زمينه ترسيم سهبعدي
demoهاي Graphicsدر متلب راهنماي بسيار خوبي براي آموزش قابليتهاي گرافيکي متلب
ميباشد .اين برنامهها از منوي Startمتلب در شاخه Demo-> Graphicsدر
دسترسند.
ایران متلب
matlab1.ir