[آموزش] (رسم شکل) تعیین یا تغییر ویژگی های شکل (بعد از رسم شکل)، در متلب

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب تاپیک:

  1. رسم خطوط دلخواه با کلیک های موس بر روی شکل ، با دستور line و دستور ginput
  2. پاک کردن شکل در پنجره شکل فعلی با دستور clf در متلب
  3. پاک کردن شکل نمایش داده شده در پنجره شکل فعلی، اما با نگه داشتن محورهای مختصات (axes) شکل، با دستور cla در متلب
  4. قرار دادن یک متن دلخواه، بر روی شکل رسم شده، با کلیک موس (انتخاب موقعیت متن با کلیک موس)، با دستور gtext در متلب
  5. ایجاد امکان جابجا کردن شکل رسم شده در یک پنجره شکل (با ثابت بودن پنجره شکل و محورهای مختصات)، توسط موس، با دستور pan در متلب
  6. ایجاد امکان چرخاندن سه بعدی یک شکل سه بعدی رسم شده، توسط موس، با دستور rotate3d در متلب
  7. به روز شدن شکل رسم شده (به صورت خودکار)، هنگام تغییر یافتن مقادیر متغیر رسم شده در شکل، در ادامه اجرای برنامه، با دستور linkdata در متلب
  8. به روزرسانی مقادیر رسم شده در یک شکل، با دستور refreshdata در متلب
  9. تعریف تعدادی نقطه بر روی شکل، با کلیک های موس و سپس ذخیره مختصات x و y آنها در دو متغیر، با دستور getpts در متلب



منبع: kelidestan.com
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رسم خطوط دلخواه با کلیک های موس بر روی شکل ، با دستور line و دستور ginput

رسم خطوط دلخواه با کلیک های موس بر روی شکل ، با دستور line و دستور ginput

دستور line در متلب، برای رسم یک یا چند خط به کار می رود. اگر این دستور را با دستور ginput به کار ببریم، آنگاه این قابلیت به وجود می آید که شخص کاربر، با کلیک های موس خود بر روی شکل، نقاط دلخواه اتصال چند خط به یکدیگر را مشخص کند. به مثال زیر توجه کنید :[h=4]مثال :[/h]
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#008800][[/COLOR]x,y[COLOR=#008800]][/COLOR] = [COLOR=#0000FF]ginput[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]5[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]line[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]یک پنجره نمایش شکل باز می شود. نقاط دلخواه اتصال خط ها را با کلیک موس مشخص کنید. چون درون پرانتز دستور ginput ، عدد 5 نوشته شده است، بنابراین 5 بار باید کلیک کنید تا آنگاه خط ها نمایش داده شوند. مثلا شکل دلخواه زیر، با 5 کلیک ساخته شده است :matlab96.jpg
مشاهده می کنید که خط های متصل به هم، از اتصال 5 نقطه ای که کاربر با موس کلیک کرده است، ساخته شده اند.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
پاک کردن شکل در پنجره شکل فعلی با دستور clf در متلب

پاک کردن شکل در پنجره شکل فعلی با دستور clf در متلب

دستور clf در متلب، برای پاک کردن شکل در پنجره شکل فعلی، به کار می رود. شاید بپرسید که اصلا این دستور چه کاربردی می توان داشته باشد، زیرا اگر هیچ کدی نوشته نشود، همان شکل جدید به جای شکل قبل در همان پنجره نمایش داده خواهد شد و حتی برای نمایش یک شکل جدید، می توانیم پنجره شکل قبلی را با دستور close ببندیم و سپس شکل جدید در یک پنجره جدید نمایش داده می شود. بنابراین در نگاه اول، استفاده از دستور clf بدون کاربرد به نظر می آید، اما اینطور نیست و در مواردی خاص، این قابلیت ها جواب نمی دهند و به دستور clf نیاز داریم. برای کسانی که عجله ندارند، توضیحاتی را در ادامه خواهم آورد تا با کاربرد دستور clf آشنا شوند (ساخت یک انیمیشن ساده در متلب را هم یاد خواهید گرفت)، اما برای کسانی که فقط سریع می خواهند نحوه استفاده از این دستور را یاد بگیرند، باید بگویم که استفاده از آن خیلی ساده است و تنها باید دستور clf (تنها کلمه clf) را در یک خط جدید از کدها بنویسید تا شکل موجود در پنجره فعلی پاک شود، یعنی به صورت زیر :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clf[/COLOR][/FONT]
[/FONT][/COLOR]
فرض کنید بخواهیم حرکت یک ماشین، یک ربات یا هر چیز دیگر را در متلب شبیه سازی کرده و نتایج شبیه سازی را به صورت شکل های پی در پی نمایش بدهیم. به عنوان مثال، فرض می کنیم می خواهیم یک گاری دستی را به صورت یک مستطیل، دو دایره و دو خط رسم کنیم. دستورات مورد استفاده برای رسم یک حالت ماشین، به صورت زیر می باشند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]

[COLOR=#0000FF]hold[/COLOR] on
[COLOR=#0000FF]rectangle[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'Position'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'Curvature'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]rectangle[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'Position'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'Curvature'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]rectangle[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'Position'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]

X=[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR] [COLOR=#3333FF]0.5[/COLOR][COLOR=#008800]][/COLOR];
Y=[COLOR=#008800][[/COLOR][COLOR=#3333FF]3[/COLOR] [COLOR=#3333FF]4.5[/COLOR][COLOR=#008800]][/COLOR];
[COLOR=#0000FF]line[/COLOR][COLOR=#008800]([/COLOR]X,Y,[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]

X=[COLOR=#008800][[/COLOR][COLOR=#3333FF]0.25[/COLOR] [COLOR=#3333FF]0.75[/COLOR][COLOR=#008800]][/COLOR];
Y=[COLOR=#008800][[/COLOR][COLOR=#3333FF]4.5[/COLOR] [COLOR=#3333FF]4.5[/COLOR][COLOR=#008800]][/COLOR];
[COLOR=#0000FF]line[/COLOR][COLOR=#008800]([/COLOR]X,Y,[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]5[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]axis[/COLOR][COLOR=#008800]([/COLOR][COLOR=#008800][[/COLOR][COLOR=#3333FF]0[/COLOR] [COLOR=#3333FF]10[/COLOR] [COLOR=#3333FF]0[/COLOR] [COLOR=#3333FF]6[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]matlab107.jpg
خوب این یک حالت از گاری دستی است، اکنون کدها را به گونه ای تغییر می دهیم که حرکت گاری دستی، در طول مسیر، نمایش داده شود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
 
[COLOR=#0000FF]hold[/COLOR] on
[COLOR=#0000FF]for[/COLOR] nn=[COLOR=#3333FF]1[/COLOR]:[COLOR=#3333FF]50[/COLOR]
    [COLOR=#0000FF]clf[/COLOR]
    x=[COLOR=#3333FF]0.1[/COLOR]*nn;
    [COLOR=#0000FF]rectangle[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'Position'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR]+x,[COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'Curvature'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]
    [COLOR=#0000FF]rectangle[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'Position'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]3[/COLOR]+x,[COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'Curvature'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]
    [COLOR=#0000FF]rectangle[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'Position'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR]+x,[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800]][/COLOR],[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]
    X=[COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR]+x [COLOR=#3333FF]0.5[/COLOR]+x[COLOR=#008800]][/COLOR];
    Y=[COLOR=#008800][[/COLOR][COLOR=#3333FF]3[/COLOR] [COLOR=#3333FF]4.5[/COLOR][COLOR=#008800]][/COLOR];
    [COLOR=#0000FF]line[/COLOR][COLOR=#008800]([/COLOR]X,Y,[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]
    X=[COLOR=#008800][[/COLOR][COLOR=#3333FF]0.25[/COLOR]+x [COLOR=#3333FF]0.75[/COLOR]+x[COLOR=#008800]][/COLOR];
    Y=[COLOR=#008800][[/COLOR][COLOR=#3333FF]4.5[/COLOR] [COLOR=#3333FF]4.5[/COLOR][COLOR=#008800]][/COLOR];
    [COLOR=#0000FF]line[/COLOR][COLOR=#008800]([/COLOR]X,Y,[COLOR=#A020F0]'linewidth'[/COLOR],[COLOR=#3333FF]5[/COLOR][COLOR=#008800])[/COLOR]
    [COLOR=#0000FF]axis[/COLOR][COLOR=#008800]([/COLOR][COLOR=#008800][[/COLOR][COLOR=#3333FF]0[/COLOR] [COLOR=#3333FF]10[/COLOR] [COLOR=#3333FF]0[/COLOR] [COLOR=#3333FF]6[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR]
    [COLOR=#0000FF]pause[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]0.2[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]end[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود که تغییرات اعمال شده به کدها، عبارت است از ساخت یک حلقه برای تغییر مختصات شکل های سازنده گاری دستی (به +x که در مختصات ها اضافه شده توجه کنید) و سپس نمایش آنها و همچنین استفاده از دستور pause برای ایجاد مکث های 0.2 ثانیه ای و در آخر نیز استفاده از دستور clf برای پاک کردن حالت قبلی گاری دستی (تا حالت جدید به جای آن رسم شود).


[h=4]نتیجه :[/h]حرکت گاری دستی را در جهت محور x به صورت یک انیمیشن مشاهده خواهید کرد.اگر دستور clf را از میان کدها بردارید، آنگاه تمامی حالت ها در پنجره نمایش داده می شوند و انیمیشن حرکت گاری دستی، خراب خواهد شد.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
پاک کردن شکل نمایش داده شده در پنجره شکل فعلی، اما با نگه داشتن محورهای مختصات (axes) شکل، با دستور cla در متلب

پاک کردن شکل نمایش داده شده در پنجره شکل فعلی، اما با نگه داشتن محورهای مختصات (axes) شکل، با دستور cla در متلب

در مبحثی دیگر، دستور clf را معرفی کردیم که برای پاک کردن شکل نمایش داده شده در پنجره شکل فعلی به کار می رود (هم شکل و هم محورهای مختصات نمایش داده شده را پاک می کند)، اما این بار می خواهیم دستور cla را معرفی کنیم، که تنها شکل را پاک می کند، اما محورهای مختصات (axes) نمایش داده شده را نگه می دارد.به مثال زیر توجه کنید :

[h=4]مثال :[/h]ابتدا یک شکل را بدون استفاده از دستور cla رسم می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
 
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR]
[COLOR=#0000FF]xlabel[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x axis'[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]ylabel[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y axis'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
سه خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب می باشد.

[h=4]نتیجه :[/h]129.jpg
این بار همان کدها را می نویسیم و تنها دستور cla را در انتهای آنها به کار می بریم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
 
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR]
[COLOR=#0000FF]xlabel[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x axis'[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]ylabel[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y axis'[/COLOR][COLOR=#008800])[/COLOR]
 
[COLOR=#0000FF]cla[/COLOR][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]130.jpg
مشاهده می کنید که شکل، پاک شده است، اما محورهای مخصات (axes) در پنجره شکل، حذف نشده است (اگر دستور clf را به کار برده بودیم، یک پنجره خالی را مشاهده می کردیم).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
قرار دادن یک متن دلخواه، بر روی شکل رسم شده، با کلیک موس (انتخاب موقعیت متن با کلیک موس)، با دستور gtext در متلب

قرار دادن یک متن دلخواه، بر روی شکل رسم شده، با کلیک موس (انتخاب موقعیت متن با کلیک موس)، با دستور gtext در متلب

در مباحثی دیگر، دستوراتی را معرفی کردیم که با آنها می توانیم یک متن دلخواه را به شکلی که رسم می شود، اضافه کنیم، که در آنها باید موقعیت قرارگیری متن بر روی شکل را با مختصاتی که در دستورات می نویسیم، تعیین کنیم. دستور gtext نیز برای قرار دادن یک متن بر روی شکل به کار می رود اما با این تفاوت که موقعیت قرارگیری متن بر روی شکل را می توانیم با کلیک موس، تعیین کنیم. این ویژگی باعث می شود که راحتتر بتوانیم موقعیت متن بر روی شکل را انتخاب کنیم و دیگر نیازی به درگیر شدن با اعداد مربوط به مختصات متن نیست.به مثال زیر توجه کنید :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
 
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR]
[COLOR=#0000FF]xlabel[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x axis'[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]ylabel[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y axis'[/COLOR][COLOR=#008800])[/COLOR]
 
[COLOR=#0000FF]gtext[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y=sin(x)'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
سه خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب می باشد.


نتیجه :
شکل رسم می شود و خطوطی بر روی شکل نمایش داده می شود که موقعیت موس را به ما نشان می دهد و با حرکت موس، حرکت می کنند :

126.jpg
یک موقعیت دلخواه را بر روی شکل در نظر می گیریم و سپس با موس، بر روی آن موقعیت کلیک می کنیم و بنابراین، متن مورد نظرمان که با دستور gtext تعیین کردیم، در آن نقطه از شکل، نوشته می شود :127.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ایجاد امکان جابجا کردن شکل رسم شده در یک پنجره شکل (با ثابت بودن پنجره شکل و محورهای مختصات)، توسط موس، با دستور pan در متلب

ایجاد امکان جابجا کردن شکل رسم شده در یک پنجره شکل (با ثابت بودن پنجره شکل و محورهای مختصات)، توسط موس، با دستور pan در متلب

با استفاده از دستور pan ، می توانیم این امکان را به وجود بیاوریم که ضمن ثابت بودن پنجره شکل و محورهای مختصات شکل، با موس، شکل را جابجا کنیم (به هر سمت دلخواه). برای این منظور، باید دستور pan را به صورت زیر به کار ببریم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]pan on[/FONT]
[/FONT][/COLOR]
برای درک بهتر این موضوع، به مثال زیر توجه کنید :


[h=4]مثال :[/h]
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
  
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR];
pan on[/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]ابتدا شکل به صورت زیر رسم می شود :371.jpg
اکنون موس را بر روی شکل می بریم و سپس کلیک کرده و کلید موس را نگه می داریم و موس را به سمت راست و پایین می بریم تا تنها بخش دلخواهمان در کادر شکل نمایش داده شود. نتیجه به صورت زیر می باشد :372.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
محدود کردن قابلیت جابجایی، تنها به یک جهت خاص (جهت x یا جهت y)، با دستور pan در متلب

محدود کردن قابلیت جابجایی، تنها به یک جهت خاص (جهت x یا جهت y)، با دستور pan در متلب

گاهی نیاز داریم که تنها جابجایی در یک جهت خاص باشد و مسلما چنانچه در جهت های دیگر نیز امکان جابجایی وجود داشته باشد، تنطیم دستی جابجایی تنها در یک جهت، بسیار سخت خواهد بود. بنابراین بهتر است که دستور pan را به گونه ای به کار ببریم که جابجایی، تنها در یک جهت خاص امکان پذیر باشد.برای ایجاد امکان جابجایی، تنها در جهت افقی (محور x)، باید دستورات زیر را پس از دستور رسم مورد نظر بنویسیم (به کلمه horizontal دقت کنید) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]h = pan;
[COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'Motion'[/COLOR],[COLOR=#A020F0]'horizontal'[/COLOR],[COLOR=#A020F0]'Enable'[/COLOR],[COLOR=#A020F0]'on'[/COLOR][COLOR=#008800])[/COLOR];[/FONT]
[/FONT][/COLOR]
برای ایجاد امکان جابجایی، تنها در جهت عمودی (محور y)، باید دستورات زیر را پس از دستور رسم مورد نظر بنویسیم (به کلمه vertical دقت کنید) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]h = pan;
[COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'Motion'[/COLOR],[COLOR=#A020F0]'vertical'[/COLOR],[COLOR=#A020F0]'Enable'[/COLOR],[COLOR=#A020F0]'on'[/COLOR][COLOR=#008800])[/COLOR];[/FONT]
[/FONT][/COLOR]
برای درک بهتر این موضوع، به مثال زیر توجه کنید :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
  
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR];
h = pan;
[COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'Motion'[/COLOR],[COLOR=#A020F0]'horizontal'[/COLOR],[COLOR=#A020F0]'Enable'[/COLOR],[COLOR=#A020F0]'on'[/COLOR][COLOR=#008800])[/COLOR];[/FONT]
[/FONT][/COLOR]
نتیجه :

ابتدا شکل زیر نمایش داده می شود :373.jpg
در این شکل، با موس، تنها می توانیم شکل را به سمت چپ یا راست (در جهت افقی) جابجا کنیم. موس را بر روی شکل برده و کلیک می کنیم و کلید موس را نگه داشته و موس را به سمت راست می بریم و آنگاه کلید موس را رها می کنیم. نتیجه به صورت زیر است :
374.jpg


مثال :

مثال خود نرم افزار متلب :در این مثال، با استفاده از دستور subplot ، تعداد 4 شکل را در کنار هم و در یک پنجره شکل رسم می کنیم. یک شکل بدون قابلیت جابجایی، یک شکل با قابلیت جابجایی در هر دو جهت افقی و عمودی، یک شکل با قابلیت جابجایی در جهت افقی و یک شکل هم با قابلیت جابجایی در جهت عمودی :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
 
pan on
  
ax1 = [COLOR=#0000FF]subplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]1[/COLOR]:[COLOR=#3333FF]10[/COLOR][COLOR=#008800])[/COLOR];
h = pan;
ax2 = [COLOR=#0000FF]subplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#0000FF]rand[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR][COLOR=#008800])[/COLOR];
setAllowAxesPan[COLOR=#008800]([/COLOR]h,ax2,false[COLOR=#008800])[/COLOR];
ax3 = [COLOR=#0000FF]subplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#0000FF]peaks[/COLOR][COLOR=#008800])[/COLOR];
setAxesPanMotion[COLOR=#008800]([/COLOR]h,ax3,[COLOR=#A020F0]'horizontal'[/COLOR][COLOR=#008800])[/COLOR];
ax4 = [COLOR=#0000FF]subplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]4[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]contour[/COLOR][COLOR=#008800]([/COLOR][COLOR=#0000FF]peaks[/COLOR][COLOR=#008800])[/COLOR];
setAxesPanMotion[COLOR=#008800]([/COLOR]h,ax4,[COLOR=#A020F0]'vertical'[/COLOR][COLOR=#008800])[/COLOR];[/FONT]
[/FONT][/COLOR]
نتیجه :

شکل ها، در ابتدا به صورت زیر می باشند :375.jpg
اکنون، کمی آنهایی را که قابلیت جابجایی دارند، با موس، جابجا می کنیم. نتیجه به صورت زیر می باشد :
376.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
به روز شدن شکل رسم شده (به صورت خودکار)، هنگام تغییر یافتن مقادیر متغیر رسم شده در شکل، در ادامه اجرای برنامه

به روز شدن شکل رسم شده (به صورت خودکار)، هنگام تغییر یافتن مقادیر متغیر رسم شده در شکل، در ادامه اجرای برنامه

به روز شدن شکل رسم شده (به صورت خودکار)، هنگام تغییر یافتن مقادیر متغیر رسم شده در شکل،
در ادامه اجرای برنامه، با دستور linkdata در متلب

معمولا هنگامی که یک شکل از مقادیر یک متغیر رسم می شود، اگر قرار باشد آن متغیر بر اساس یک سری محاسبات جدید، مقادیر جدیدی بیابد، دوباره با دستورهای رسم، مقادیر جدید آن را رسم می کنیم (در همان پنجره شکل قبل و یا در یک پنجره شکل جدید). اما نرم افزار متلب، این امکان را به وجود می آورد که مقادیر یک متغیر را رسم کنیم و سپس تعیین کنیم که هر زمان که آن متغیر، در ادامه برنامه، مقادیر جدیدی یافت، آنگاه همان شکلی که قبلا از آن رسم شده است، به روز شود و مقادیر جدید آن متغیر رسم شود. این قابلیت در نرم افزار متلب، با استفاده از دستور linkdata امکان پذیر می باشد.برای درک بهتر این موضوع، به مثال زیر توجه کنید :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
 
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR]
 
linkdata on
 
y=[COLOR=#0000FF]cos[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];[/FONT]
[/FONT][/COLOR]
نتیجه :

ابتدا شکل زیر از مقادیر متغیر y نمایش داده می شود (برابر سینوس x) :391.jpg
پس از یک زمان بسیار کوتاه (حدود 1 ثانیه)، همان شکل، این بار مقادیر جدید متغیر y را نمایش می دهد (برابر کسینوس x) :392.jpg
اگر دقت کرده باشید، در بالای شکل، تذکر داده شده که در صورت تغییر متغیر، شکل به روزرسانی خواهد شد.

مثال :

مثال خود نرم افزار متلب :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
 
x = [COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR]:[COLOR=#3333FF]20[/COLOR][COLOR=#008800]][/COLOR];
y = [COLOR=#0000FF]rand[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]20[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]area[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR]
linkdata on
 
y[COLOR=#008800]([/COLOR][COLOR=#3333FF]10[/COLOR],:[COLOR=#008800])[/COLOR] = [COLOR=#3333FF]0[/COLOR];[/FONT]
[/FONT][/COLOR]
نتیجه :

ابتدا شکل زیر از مقادیر متغیر y نمایش داده می شود :393.jpg
پس از یک زمان بسیار کوتاه (حدود 1 ثانیه)، همان شکل، این بار مقادیر جدید متغیر y را نمایش می دهد :

394.jpg

 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
به روزرسانی مقادیر رسم شده در یک شکل، با دستور refreshdata در متلب

به روزرسانی مقادیر رسم شده در یک شکل، با دستور refreshdata در متلب

معمولا هنگامی که یک شکل از مقادیر یک متغیر رسم می شود، اگر قرار باشد آن متغیر بر اساس یک سری محاسبات جدید، مقادیر جدیدی بیابد، دوباره با دستورهای رسم، مقادیر جدید آن را رسم می کنیم (در همان پنجره شکل قبل و یا در یک پنجره شکل جدید). اما با دستور refreshdata در متلب می توانیم تعیین کنیم که شکل رسم شده، بر اساس مقادیر جدید آن متغیر، به روز شود.برای درک بهتر این موضوع، به مثال زیر توجه کنید :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
  
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
h = [COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR]
[COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'YDataSource'[/COLOR],[COLOR=#A020F0]'y'[/COLOR][COLOR=#008800])[/COLOR]

[COLOR=#0000FF]pause[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]

y=[COLOR=#0000FF]cos[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
refreshdata[/FONT]
[/FONT][/COLOR]
دستور pause برای ایجاد توقف در اجرای برنامه می باشد و به ما این امکان را می دهد که بروزرسانی شکل را با چند ثانیه تاخیر ببینیم.ابتدا y را برابر سینوس x تعیین کرده ایم و شکل را بر اساس آن رسم می کنیم، سپس y را برابر کسینوس x قرار می دهیم و در خط آخر از کدها، با دستور refreshdata ، تعیین می کنیم که شکل بر اساس مقادیر جدید، به روز شود.دقت شود که خط زیر از کدها، متغیر y را به عنوان متغیری که باید مقادیر آن به روز شود، تعیین کرده است (ولی متغیر x را تعیین نکرده ایم، بنابراین اگر مقادیر x را تغییر بدهیم، با خطا روبرو خواهیم شد، در مثال بعدی، چگونگی تغییر مقادیر x را هم شرح خواهیم داد) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'YDataSource'[/COLOR],[COLOR=#A020F0]'y'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :

ابتدا شکل زیر رسم می شود (y برابر سینوس x) :414.jpg
پس از گذشت 3 ثانیه، شکل رسم شده، بر اساس جدیدترین مقادیر متغیر y به روزرسانی می شود (یعنی y برابر کسینوس x) :415.jpg

مثال :

همان مثال قبل را تغییر می دهیم، به گونه ای که تغییر دادن مقادیر متغیر x نیز امکان پذیر باشد (با خطا روبرو نشویم). برای این منظور، باید خط زیر را به کدها اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'XDataSource'[/COLOR],[COLOR=#A020F0]'x'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین کدها را به صورت زیر می نویسیم (مقادیر x را هم تغییر می دهیم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
  
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
h = [COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,y[COLOR=#008800])[/COLOR]
[COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'YDataSource'[/COLOR],[COLOR=#A020F0]'y'[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'XDataSource'[/COLOR],[COLOR=#A020F0]'x'[/COLOR][COLOR=#008800])[/COLOR]

[COLOR=#0000FF]pause[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]
 
x=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]4[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
y=[COLOR=#0000FF]cos[/COLOR][COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR];
refreshdata[/FONT]
[/FONT][/COLOR]
نتیجه :

ابتدا شکل زیر رسم می شود (y برابر سینوس x و بازه x از 0 تا 2*pi) :416.jpg
پس از گذشت 3 ثانیه، شکل رسم شده، بر اساس جدیدترین مقادیر متغیر y و متغیر x به روزرسانی می شود (یعنی y برابر کسینوس x و همچنین بازه مقادیر مربوط به x نیز برابر 0 تا 4*pi خواهد بود) :
417.jpg


مثال :

مثال خود نرم افزار متلب :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
  
Z = [COLOR=#0000FF]peaks[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]5[/COLOR][COLOR=#008800])[/COLOR];
h = [COLOR=#0000FF]surf[/COLOR][COLOR=#008800]([/COLOR]Z[COLOR=#008800])[/COLOR]
[COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]h,[COLOR=#A020F0]'ZDataSource'[/COLOR],[COLOR=#A020F0]'Z'[/COLOR][COLOR=#008800])[/COLOR]

[COLOR=#0000FF]pause[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]

Z = [COLOR=#0000FF]peaks[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]25[/COLOR][COLOR=#008800])[/COLOR];
refreshdata[/FONT]
[/FONT][/COLOR]
دستور pause برای ایجاد توقف در اجرای برنامه می باشد و به ما این امکان را می دهد که به روزرسانی شکل را با چند ثانیه تاخیر ببینیم.

نتیجه :

ابتدا شکل زیر رسم می شود :418.jpg
سپس پس از گذشت 3 ثانیه، شکل به صورت زیر به روزرسانی می شود :

419.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تعریف تعدادی نقطه بر روی شکل، با کلیک های موس و سپس ذخیره مختصات x و y آنها در دو متغیر، با دستور getpts در متلب

تعریف تعدادی نقطه بر روی شکل، با کلیک های موس و سپس ذخیره مختصات x و y آنها در دو متغیر، با دستور getpts در متلب

با استفاده از دستور getpts در متلب، می توانیم با کلیک های موس، تعدادی نقطه را بر روی شکل تعریف کنیم، به گونه ای که مختصات x و y نقطه ها به صورت خودکار در دو متغیر ذخیره شود (برای پردازش های بعدی).به مثال زیر توجه کنید :

[h=4]مثال :[/h]کدهای متلب زیر را اجرا می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]

fig = [COLOR=#0000FF]figure[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]1[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]axis[/COLOR][COLOR=#008800]([/COLOR][COLOR=#008800][[/COLOR]-[COLOR=#3333FF]20[/COLOR] [COLOR=#3333FF]20[/COLOR] -[COLOR=#3333FF]20[/COLOR] [COLOR=#3333FF]20[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#008800][[/COLOR]X,Y[COLOR=#008800]][/COLOR] = getpts[COLOR=#008800]([/COLOR]fig[COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]یک پنجره شکل نمایش داده می شود :1097.jpg
با کلیک های موس، 4 نقطه را تعریف می کنیم، فقط باید توجه داشت که هنگام تعریف نقطه چهارم، به جای کلیک، دابل کلیک (دو بار کلیک سریع) می کنیم تا متلب متوجه شود که این آخرین نقطه ای است که قصد تعریف آن را داشته ایم :1098.jpg

خروجی متلب به صورت زیر خواهد بود :

کد:
[FONT=monospace]X =

  -[COLOR=#3333FF]12.2120[/COLOR]
    [COLOR=#3333FF]8.3410[/COLOR]
   -[COLOR=#3333FF]7.1429[/COLOR]
    [COLOR=#3333FF]4.7465[/COLOR]


Y =

   [COLOR=#3333FF]12.9240[/COLOR]
   [COLOR=#3333FF]14.6784[/COLOR]
   -[COLOR=#3333FF]0.9942[/COLOR]
    [COLOR=#3333FF]2.8655[/COLOR][/FONT]
مشاهده می کنید که مختصات x و y نقطه ها را در دو بردار X و Y داریم و می توانیم از آنها برای پردازش های بعدی استفاده کنیم.
 
بالا