ظؼ چٕع لكّت لصع ظاؼَ ٔس ٖٛواؼ وؽظْ تا GUIؼ ٚتٗ نّا آِٛؾل تعَ. ّْ٘ٛطٛؼ وٗ ِيظٔٚيع(يا نايع ُ٘ ّٔيظٔٚيع) تٗٚقيٍٗ اتؿاؼ ( Interface User Graphical ( GUIنّا ِيتٔٛيع تؽٔاِٗ ضٛظت ْٛؼ ٚتٙتؽ تٗ واؼتؽاْ ظيگٗ ػؽظٗ وٕيع .تؽاي نؽٚع اتتعا guideؼ ٚصفسٗ ِتٍة تايپ ٚايٕتؽ وٕيع يا اؾ ِكيؽ ٔ GUI >> New >> Fileيؿ ِيتٔٛيع اقتفاظٖ وٕيع ّْ٘ٛطٛؼ وٗ ِها٘عٖ ِيوٕيع صفسٗ ؾيؽ ّٔايم ظاظٖ ِينٗ تع٘ ْٚيچ تغييؽي OKوٕيع. تؼع صفسٗ اصٍي GUIتؽاي نّا ظا٘ؽ ِينٗ وٗ نّا ِيتٔٛيع ػٕاصؽ گؽافيىي ضٛظت ْٛؼ ٚظؼ ا ْٚلؽاؼ تعيع .تؽاي ايٕىٗ نّا تتٔٛيع يه GUI طؽازي وٕيع اتتعا تايع نّا ػٕاصؽ گؽافيىي وٗ GUIظؼ اضتياؼ نّا لؽاؼ ِيظٖ تهٕاقيع ِٓ ضالصٗاي اؾ تؽضي ػٕاصؽ ؼ ٚوٗ تيهتؽ تٗ واؼ ِياْ تؽاي نّا ِئٛيكُ. Callbackا ْٚفؼاي : Push buttonايٓ ػٕصؽ گؽافيىي يه ظگّٗ فهاؼي ٘كتم وٗ ٕ٘گاِي وٗ تا ِاٚـ ؼٚي ا ْٚفهاؼ تعيع ِينٗ. : Sliderايٓ ػٕصؽ يه وٕتؽٌؽ گؽافيىي تؽاي ِماظيؽ پيٛقتٗ اقت وٗ تا ظاظْ ظ ٚزع تاال ٚپاييٓ تٗ اِ ْٚيتٔٛيع ِمعاؼل ؼ ٚتيٓ ظٚ زع تطٛؼ پيٛقتٗ تغييؽ تعيع وٗ ايٓ واؼ تا وهيعْ وٕتؽٌؽ آْ تا ِاٚـ أداَ ِينٗ ٘ ٚؽ تغييؽ ظؼ ايٓ وٕتؽٌؽ Callbackا ْٚؼ ٚفؼاي ِيوٕٗ. : Radio Buttonايٓ ػٕاصؽ ِؼّٛالً تٗ صٛؼت گؽ٘ٚي تٗ واؼ ِيؼْ ٚاؾ اْ٘ٚا ِيتٔٛيع تؽاي ايداظ گؿيٕٗ٘اي ٚاتكتٗ اقتفاظٖ وٕيع (گؿيٕٗ٘اي ٚاتكتٗ يؼٕي زاٌت٘ايي وٗ ّ٘يهٗ يىي اؾ اْ٘ٚا ِيت ٓٔٛفؼاي تانٓ) ؾِأي وٗ تؽ ؼٚي يىي اؾ اْ٘ٚا وٍيه وٕيع ِ Callbackؽتٛط تٗ ا ْٚػٕصؽ فؼاي نعٖ ٚيه ٔطمٗ قياٖ ظؼ ْٚظايؽٖ ا ْٚلؽاؼ ِيگيؽٖ. : Check Boxتا ايٓ ػٕاصؽ نّا ِيتٔٛيع زاٌت٘اي ِكتمً اؾ ُ٘ ايداظ وٕيع يؼٕي زاٌت٘ايي وٗ ّ٘ؿِاْ ِيت ٓٔٛؼش تعْ .ؾِأي وٗ تا ِاٚـ ؼٚي ايٓ ػٕصؽ وٍيه وٕيع Callbackا ْٚفؼاي ِينٗ ٚاگؽ ضاِٛل تانٗ(ظؼِ ْٚؽتغ چيؿي ٔثانٗ) يه تيه قثؿ ؼٔگ ؼٚي ِؽتغ أ ْٚه ْٛظاظٖ ِينٗ وٗ ٔهاْ ظٕ٘عٖ ؼٚنٓ تٛظْ ا ٚ ٗٔٚاگؽ ؼٚنٓ تانٗ ،ضاِٛل ِينٗ. : Edit Textايٓ ػٕصؽ يه ِتٓ لاتً تغييؽ ؼٔ ٚهِ ْٛيظٖ وٗ نّا ِيتٔٛيع ِستٛيات ا ْٚؼ ٚتغييؽ تعيع ٚقپف تا فهؽظْ ظگّٗ ايٕتؽ Callbackا ْٚؼ ٚفؼاي وٕيع. : Static Textايٓ ػٕصؽ يه ِتٓ ثاتت ؼٔ ٚهِ ْٛيظٖ وٗ ِستٛيات ا ْٚتست وٕتؽي تؽٔاِٗايكت وٗ نّا تؽاي اٛٔ ْٚنتٗايع ٚظيگٗ ال تؽاي ّٔايم ضؽٚخي ػعظي تست وٕتؽي نّا ٔيكت ِگؽ ايٕىٗ تؽيع تٗ قٛؼـ تؽٔاِٗ ٚوع ا ْٚؼ ٚتغييؽ تعيع .اؾ ايٓ ػٕصؽ ِؼًّ ٛ اقتفاظٖ ِينٗ. : Pop-up Menuايٓ ػٕصؽ گؽافيىي تمؽيثاً ِإٔع ٘Button Radioاي گؽ٘ٚي ػًّ ِيوٕٗ ِ ٚيت ٗٔٛتؼعاظي زاٌت ؼ ٚظؼ ضٛظل غضيؽٖ وٕٗ ٚظؼ يه ؾِاْ ٚازع فمط يىي اؾ اْ٘ٚا ؼ ٚفؼاي وٕٗ .نايع تهٗ گفت وٗ يىي اؾ تفاٚت٘اي ا ْٚتا ٘Radio Buttonا ؾِأي تانٗ وٗ زاٌت٘اي ِا ؾياظ ٘كتٕع ِثالً تيم اؾ پٕح زاٌت ،وٗ ظؼ ايٓ صٛؼت تٙتؽٖ وٗ اؾ ايٓ ػٕصؽ اقتفاظٖ وٕيُ چؽا وٗ اگؽ تطٛا٘يُ اؾ ٘Radio Buttonا اقتفاظٖ وٕيُ ِ GUIا تؿؼگ ٚنايع ُ٘ تيؼيطت تهٗ ٌٚي ظؼ ػٕصؽ Pop-up Menuفمط زاٌت فؼاي ّٔايم ظاظٖ ِينٗ ٚفمط ؾِأي وٗ تطٛا٘يُ زاٌت ؼ ٚتغييؽ تعيُ تالي زاٌت٘ا ّٔايم ظاظٖ ِينٓ. : Listboxايٓ ػٕصؽ ٔيؿ تمؽيثًا واؼ Pop-up Menuؼ ٚأداَ ِيظٖ تا ايٓ تفاٚت وٗ ظؼ Listboxتّاِي زاٌت٘ا ظؼ يه صفسٗ ّٔايم ظاظٖ ِينٓ ٚتا وٍيه وؽظْ تؽ اْ٘ٚا ِيتٔٛيُ Callbackا ْٚؼ ٚفؼاي وٕيُ. : Toggle Buttonايٓ ػٕصؽ گؽافيىي نثيٗ يه وٍيع ظٚ ٚظؼيتٗ ٘كت وٗ ِيت ٗٔٛظؼ زاٌت ؼٚنٓ ٚضاِٛل لؽاؼ تگيؽٖ .تا وٍيه وؽظْ ؼٚي اِ Callback ْٚؽتٛطٗ فؼاي ِينٗ. : Axesايٓ ػٕصؽ گؽافيىي ٚلتي تٗ واؼ ِياظ وٗ ضؽٚخي ِا ِٕسٕي تانٗ ِ ٚثً ِ Static Textستٛيات ا ْٚتست وٕتؽي تؽٔاِٗايكت وٗ تٗ آْ ظاظٖايُ. : Panelايٓ ػٕصؽ ِيت ٗٔٛتؼعاظي نيء گؽافيىي ؼ ٚظؼ ضٛظل لؽاؼ تعٖ ٚتا ظانتٓ يه ٔاَ اؾ تميٗ انياء خعا وٕٗ. : Button Groupنّا ؾِأي وٗ تطٛا٘يع اؾ گؽ٘ٚي اؾ ٘Radio Buttonا اقتفاظٖ وٕيع تٗ ايٓ ػٕصؽ ٔياؾ ضٛا٘يع ظانت. اٌثتٗ آٔچٗ وٗ ظؼ تاال ِها٘عٖ وؽظيع تطهي اؾ اِىأاتي اقت وٗ وافيكت. GUIظؼ اضتياؼ ِا لؽاؼ ظاظٖ اقت ٌٚي تؽاي نؽٚع واؼ تا GUIايٓ لطؼات زاال فؽض وٕيع وٗ ِا ِيضٛا٘يُ يه ِانيٓ زكاب ضيٍي قاظٖ ظؼقت وٕيُ تٗ ايٓ صٛؼت وٗ ظ ٚػعظ ؼ ٚتگيؽٖ ٚچٙاؼ ػًّ اصٍي ؼ ٚتٗ ظٌطٛاٖ واؼتؽ ؼٚي ظ ٚػعظ أداَ تعٖ تؽاي ايٓ واؼ ِا ازتياج تٗ ظ Edit Text ٚظاؼيُ تا تتٔٛيُ اػعاظ ٚؼٚظي ؼ ٚتٗ ا ْٚتعيُ ٚظ Text Static ٚوٗ يىي تؽاي ّٔايم ضؽٚخي ٚظيگؽي ؼ ُ٘ ٚتؼعًا ِيگُ تؼع ِيتٔٛيُ اؾ چٙاؼ Radio Buttonوٗ تٗ صٛؼت گؽ٘ٚي تٗ واؼ ِيؼْ ،تؽاي أتطاب يىي اؾ چٙاؼ ػًّ اصٍي اقتفاظٖ وٕيُ طثؼاً يه ِ ُ٘ Button Groupيضٛا٘يُ. پف اؾ أتطاب لطؼاتٛٔ ،تت ا ْٚؼقيعٖ وٗ واؼِ ْٛؼ ٚنؽٚع وٕيُ ظؼ صفسٗ اصٍي GUIظؼ قّت چپ لطؼاتي ؼ ٚوٗ ِيضٛا٘يُ اؾنْٛ اقتفاظٖ وٕيُ ِيتيٕيع تّاَ لطؼات ؼ ٚتٗ تؼعاظي وٗ گفتٗ نع تٗ صفسٗ ٚ GUIاؼظ وٕيع تٗ ايٓ صٛؼت وٗ تؽ لطؼٗ ِٛؼظ ٔظؽ وٍيه ِيوٕيع ٚتعْٚ ؼ٘ا وؽظْ ا ،ْٚلطؼٗ ؼ ٚتٛي صفسٗ ِ GUIيأعاؾيع ٚتٗصٛؼت نىً ؾيؽ ظؼ ِيآٚؼيع: ػٕصؽ٘اي ِتٕي ؼّْٛ٘ ٚطٛؼي وٗ ِيتيٕيع تؿؼگ وؽظَ تا اػعاظ تؿؼگ ؼ ٚتٗ ؼازتي ّٔايم تعْ. زاال تايع تٕظيّات ايٓ لطؼات ؼ ٚأداَ تعيُ اٚي ؼٚي Edit Textاٌٚي ظٚتاؼ وٍيه وٕيع ٚتؼع ػثاؼت ِماتً Stringؼ ٚپان وؽظٖ ٚتٗ خاي آْ 0ؼ ٚتٕٛيكيع ٚظؼ Tagا x_edit ُ٘ ْٚتٕٛيكيع ٚپٕدؽٖ ؼ ٚتثٕعيع. ّ٘يٓ اػّاي ؼ ُ٘ ٚتؽاي Text Editظِٚي أداَ ِيظيع تا ايٓ تفاٚت وٗ ظؼ Tagا y_edit ْٚؼِ ٚئٛيكيع String .ظؼ ٚالغ ّ٘ ْٛػثاؼتي اقت وٗ ؼٚي ٛٔ Edit Textنتٗ ِينٗ ٔ Tag ٚاِيٗ وٗ تٛقيٍٗ ا ،GUI ْٚػٕصؽ ِؽتٛطٗ ؼ ٚنٕاقايي ِيوٕٗ .ظؼ اظاِٗ واؼ تؽ Text Static اٌٚي ظٚتاؼ وٍيه ِيوٕيع ٚظؼ Stringا ْٚػالِت = ؼ ٚلؽاؼ ِيظيع قپف ظؼ پٕدؽٖ تٕظيّات Static Textظِٚي ِمعاؼ Stringؼِ ٚ 0 ٚمعاؼ Tagؼ Result ٚلؽاؼ تعيع ّْ٘ٛطٛؼ وٗ ظيعيع Static Textظِٚي ٔياؾ تٗ Tagظاؼٖ چؽا وٗ ِمعاؼ ا ْٚلؽاؼٖ تغييؽ وٕٗ ٔ ٚتيدٗ ػٍّيات ؼٚ ّٔايم تعٖ زاال قؽاؽ ٘Radio Buttonا ِيؼيُ اٚي تٗ ؼٚي Button Groupظٚتاؼ وٍيه وٕيع ِ ٚمعاؼ Titleا ْٚؼِ ٚثالً Selectorيا ٘ؽ چيؿ ظيگٗ تؿاؼيع(ِٔ ُٙيكت) تؼع ؼٚي Radio Buttonاٌٚي ظٚتاؼ وٍيه وٕيع ِ ٚمعاؼ sum_radiobuttonؼ ٚظؼ ِ ٚ Tagمعاؼ +ؼ ٚظؼ ِ Stringئٛيكيع زاال ّ٘يٓ واؼ ؼ ٚتؽاي قٗتاي ظيگٗ أداَ ِيظيع ٚظؼ ٘Stringان ْٛتٗ تؽتية ٚ / * -ظؼ ٘Tagان ْٛتٗ تؽتية diff_radiobuttonتؽاي ظِٚي mult_radiobuttonتؽاي قِٛي div_radiobutton ٚؼ ٚتؽاي چٙاؼِٚي ِئٛيكيع. زاال واؼ تٕظيّات لطؼات تّ َٛنعٖ ٚنىً ؾيؽ ؼ ٚظاؼيع: زاال ظيگٗ ٚلت وع ٔٛيكي نعٖ. ؼٚي فٍم قثؿ ؼٔگي وٗ ظؼ ٔٛاؼ تااليي صفسٗ لؽاؼ ظاؼٖ وٍيه وٕيع ٚظؼ ظياٌٛگ تاؾ نعٖ Yesؼ ٚتؿٔيع ٚتؼع يه ٔاَ ظٌطٛاٖ ِثالً calculator ؼ ٚتٗ ػٕٛاْ ٔاَ GUIتايپ وٕيع ٚظگّٗ Saveؼ ٚتؿٔيع زاال ِها٘عٖ ِيوٕيع وٗ يه M-Fileوعٔٛيكي نعٖ ٚيه Figureوٗ ّ٘GUI ْٛ نّاقت تٗ ّٔايم ظؼ آِعٖ اقتِ M-File .ؽتٛطٗ ظؼ ٚالغ ٘كتٗ اصٍي GUIنّاقت زاال نّا تايع ِمعاؼي وع تٗ ايٓ GUIاظافٗ وٕيع تا لطؼات نّا ٚظايف ضٛظ ؼ ٚتهٕاقٓ. ظؼ اتتعا تٗ صفسٗ اصٍي ِ GUIيؼٚيع ٚتا ؼاقت وٍيه وؽظْ تؽ Edit Textاٌٚي تٗصٛؼت ؾيؽ Callbackا ْٚؼ ٚفؽاضٛأي ِيوٕيع: :يكيعٕٛ تٚزاال ظؼ خايي وٗ ِىأّْا ؼفتٗ وع ؾيؽ ؼ i=get(hObject,'String'); i=str2num(i); if(isempty(i)) set(hObject,'String','0') end guidata(hObject, handles); ٗط قٗ تا پٕح تؽؼقي ِينَٛ تٗ ػعظ تثعيً ِينٗ ظؼ ضطٚ ظؼ ضط ظٚ ٗأعٖ ِينٛ ضString ؼتٛ تٗ صText Edit ي ايٓ وع ِمعاؼٚظؼ ضط ا ٚ ٔعٛؾ ِينْٚ لؽاؼ ظاظٖ ِينٗ ظؼ ضط آضؽ ُ٘ وٗ ِماظيؽ تٗ ؼٚ ظؼ ا0 گؽٔٗ ِمعاؼٚ اؼظ نعٖ تانٗ وٗ ٘يچٚ ٗاؼظ نعٖ يا ٔٗ؟ اگٚ وٗ آيا ػعظي ْٚ وع ؼّٛ٘ ٚ ِي أداَ تعيعٚ ظEdit Text تؽايٚ قپف ظليماً ّ٘يٓ واؼ ؼ.ٓؼظٖنٗ تا ِماظيؽ آپعيت تهٚ آCallback ٔياؾ ٘كتم وٗ ظؼ آضؽ ٘ؽ .يكيعُٕٛ٘ ت ْ تٗ ّ٘اٚطٗ ؼٛ وع ِؽتٚ ٓأي ِيوٕيٛؼتيوٗ گفتٗ نع فؽاضْٛ صّٛ٘ ٗ تٌٚي ؼٚ اCallback ٓ٘ا ِيؼيRadio Button زاال تٗ قؽاؽ .يكيعٛٔ ِيٚ ؼظ ِيوٕيع تؼع وع ؼْٚ٘ا ؼِٚعٖ وٗ اٚظيسات اٛؼيوٗ ِيتيٕيع تؼع اؾ تاتغ قٗ ضط تْٛطّٛ٘ .اؼظ وٕيعٚ ،ؼتيوٗ ِيتيٕيعٛص :ؼتٛتٗ ايٓ ص function sum_radiobutton_Callback(hObject, eventdata, handles) % hObject handle to sum_radiobutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) x=get(handles.x_edit,'String'); y=get(handles.y_edit,'String'); x=str2num(x); y=str2num(y); result=x+y; result=num2str(result); set(handles.Result,'String',result); guidata(hObject, handles); چٙاؼ ضط اٚي وٗ ضٛظل ٚخٛظ ظانت ضط پٕدُ ٚنهُ ِمعاؼ x_editؼ ٚظؼِ ٚ x ْٚمعاؼ y_editؼ ٚظؼ y ْٚغضيؽٖ ِيوٕٗ ظؼ ظ ٚضط تؼعي ِمعاؼ y ٚ xؼ ٚتٗ ػعظ تثعيً ِيوٕٗ ظؼ ضط تؼعي ِدّٛع اْ٘ٚا ؼ ٚظؼِ result ْٚيؼيؿٖ ٚضط تؼعي resultؼ ٚاؾ ػعظ تٗ ؼنتٗ تثعيً ِيوٕٗ ضط تؼعي resultؼ ٚظؼ(Result ْٚوٗ ّ٘ Static Text ْٛظِٚي تانٗ) ِيؼيؿٖ ٚظؼ ٔٙايت ُ٘ ظؼ ضط آضؽ ِماظيؽ تٗ ؼٚؾ ِينٓ ّْ٘ٛطٛؼي وٗ لثالً تٛظير ظاظٖ نع. زاال تؽاي قٗ Radio Buttonظيگٗ ُ٘ ػيٕاً ّ٘يٓ وع ؼٚ ٚاؼظ ِيوٕيع فمط تٗ خاي ايٕىٗ y ٚ xؼ ٚتا ُ٘ خّغ وٕيع اْ٘ٚا ؼ ٚتؽاي ظِٚي اؾ ُ٘ وُ ِيوٕيع ٚتؽاي قِٛي ظؼ ُ٘ ظؽب ِيوٕيع ٚتؽاي چٙاؼِٚي تٗ ُ٘ تمكيُ ِيوٕيع. پف اؾ أداَ ػٍّيات وعٔٛيكي ِ M-Fileؽتٛطٗ ؼِ Save ٚيوٕيع زاال ظيگٗ GUIنّا آِاظٖ نعٖ ِ ٚيتٔٛيع اؾ ا ْٚاقتفاظٖ وٕيع. تٗ ايٓ صٛؼت: ظؼ اظاِٗی آِٛؾل GUIتٕا ظاؼَ ظؼ چٕع لكّت ،يک ِثاي ٔكثتا کاًِ ؼا تٗ نّا ِؼؽفی کُٕ ،تا تا ِطاٌؼٗی ظليك ايٓ ِثاي تتٛأيع تؽٔاِٗ٘ای کاؼتؽظی ضٛظتاْ ؼا پياظٖقاؾی کٕيع .ظؼ ِطاٌؼٗی ايٓ لكّت ّ٘ ٚچٕيٓ لكّت٘ای تؼعی ،پيمفؽض آْ اقت کٗ ظٚقتاْ يا قسمت اول آموزش ؼا ِطاٌؼٗ کؽظٖأع ٚيا اطالػات اٌٚيٗ ؼا ظاؼٔع ،پف اؾ غکؽ خؿئيات ضٛظظاؼی نعٖ اقت. تؽای أتطاب يک ِثاي ضٛب ،تؽؼقی٘ای ؾياظی أداَ ظاظَ تا ايٓ ِثاي ظؼ ظؼخٗی اٚي لطؼات گؽافيکیِٕ٘ٛ ،ا ٚظيگؽ اِکأات ِٛخٛظ ؼا ظؼ زع تااليی ظؼتؽظانتٗ تانع ،ظؼ ظؼخٗی ظ َٚکاؼتؽظی تانع ٚظؼ ظؼخٗی ق َٛطيف گكتؽظٖای اؾ ؼنتٗ٘ای تسصيٍی تا آْ اؼتثاط تؽلؽاؼ کٕٕع. ايٓ ِثاي يک ؼاتط گؽافيکی اقت کٗ کاؼتؽ ِیتٛأع تا آْ قيكتُ٘ای کٕتؽٌی ؼا آٔاٌيؿ کٕع .يؼٕی تا گؽفتٓ اطالػات قيكتُ(صفؽ٘ا ٚلطة٘ا )...ٚاؾ کاؼتؽِ ،یتٛأع پاقص قيكتُ تٗ ٚؼٚظی٘ای ِؼّٛي ،آٔاٌيؿ ؼيهٗ٘ای قيكتُ ٚ ،پاقص فؽکأكی آْ ؼا ظؼ ِٕسٕی٘ای خعاگأٗای تؽقيُ ّٔايع( اٌثتٗ لاتً غکؽ اقت کٗ ظؼ تٌٛثاکف کٕتؽي ِتٍة ،چٕيٓ ؼاتط گؽافيکی ٚتا اِکأات تيهتؽی ٚخٛظ ظاؼظٌٚ ،ی ايٓ ؼاتط ؼا ظيگؽ ضٛظتاْ طؽازی کؽظٖايع ِ ٚیتٛأيع٘ ،ؽ تغييؽی ظؼ آْ تع٘يع). تؽای نؽٚع اتتعا guideؼا تايپ ٚايٕتؽ کٕيع .قپف OKکؽظٖ ِ ٚإٔع نکً ؾيؽ لطؼات ؼا تٗ ِيؿاْ کافی آٚؼظٖ ِ ٚؽتة کٕيع: قپف ِإٔع نکً ؾيؽ لطؼات ؼا ٔاَگػاؼی ِ ٚؽتة کٕيع: تٛخٗ کٕيع کٗ ّ٘ٗی ايٓ لطؼات ظؼ لكّت اٚي آِٛؾلِ ،ؼؽفی نعٖأعِ .هطصٗی ، tagتؽای کٍيٗی لطؼات ؼا ظؼ زاٌت پيمفؽض ضٛظ لؽاؼ ظ٘يع .تؽای اٌٚيٓ ػٕصؽ ِ ، Pop-up Menuماظيؽ Impulse ٚ Stepؼا تٗصٛؼت ؾيؽ ٚاؼظ کٕيع: ٚتؽای ظِٚيٓ ػٕصؽ ، Pop-up Menuتٗتؽتية ِماظيؽ: Root Locus .1 Pole-Zero map .2 ّ٘ ٚچٕيٓ تؽای قِٛيٓ ػٕصؽ ، Pop-up Menuتٗتؽتية ِماظيؽ: Bode diagram .1 Nyquist .2 Nichols .3 ؼا ٚاؼظ کؽظٖ OK ٚکٕيع. تٛخٗ ظانتٗ تانيع کٗ زاٌت پيمفؽض تّاِی ػٕاصؽّ٘ ،أی تانع کٗ ظؼ نکً ٔهاْ ظاظٖ نعٖ اقت. توضیح طرح: ّ٘اْطٛؼی کٗ ازتّاال ِیظأيعِ ،ا تٗ چٕعيٓ ؼٚل ِیتٛأيُ ِهطصات يک قيكتُ کٕتؽٌی ؼا تياْ کٕيُ .اؾ خٍّٗ ِؼؽٚفتؽيٓ ايٓ ؼٚل٘ا ،يکی ؼٚل ظؽاية چٕعخٍّٗای صٛؼت ِ ٚطؽج تاتغ تثعيً قيكتُ اقت ٚظيگؽی تياْ صفؽ٘ا ٚلطة٘ای قيكتُ ،تّٗ٘ؽاٖ گيٓ تاتغ تثعيً ِیتانع. ّ٘اْطٛؼ کٗ ظؼ نکً ِهطص اقتِ ،ا ٘ؽ ظ ٚؼٚل فٛق ؼا آٚؼظٖ ٚپيمفؽض ؼا ظؼ ؼٚل اٚي لؽاؼ ظاظٖايُ ٚ .تؽای ٘ؽ ظ ٚؼٚل ٔيؿ قيكتّی ؼا تٗصٛؼت پيمفؽض ٔٛنتٗايُ .ظؼ اظاِٗ لكّتی ؼا تؽای اػّاي تأضيؽ(تأضيؽ ظؼ فاؾ قيكتُ تغييؽ ايداظ ِیکٕع) تٗ قيكتُ گػانتٗايُ تا ظؼ ِٛالغ ٌؿ َٚتتٛأيُ تٗ قيكتُ تأضيؽ اػّاي کٕيُ .تؽای اػّاي تأضيؽ ،تايع اتتعا Box Checkؼا فؼاي کؽظٖ ٚقپف ػعظ تأضيؽ ؼا تؽ زكة ثأيٗ ظؼ کاظؼ ِماتً آْ ٚاؼظ کٕيع .ظؼ پأً تؼعی نّا ِیتٛأيع قيكتُ ِٛؼظ ٔظؽتاْ ؼا تٗصٛؼت زٍمٗتاؾ ٚيا زٍمٗتكتٗ آٔاٌيؿ کٕيع(پيمفؽض تٗصٛؼت زٍمٗتاؾ ِیتانع) .اگؽ قيكتُ ( ، G(sتاتغ تثعيً زٍمٗتاؾ نّا تانع ،تاتغ تثعيً زٍمٗ تكتٗ تٗصٛؼت ؾيؽ اقت( :)H(s)=1 ظؼ پأً تؼعی کاؼتؽ ِیتٛأع پاقص قيكتُ ؼا تٗ اؾای ٚؼٚظی٘ای پٍٗ ٚيا ظؽتٗ ؼقُ ّٔايع .کاؼتؽ ِیتٛأع ؾِاْ پاقص ؼا ظؼ زاٌت پيمفؽض ٚ يا زاٌت أتطاتی لؽاؼ ظ٘ع .اگؽ کاؼتؽ زاٌت أتطاتی ؼا تؽگؿيٕع ،تايع ِمعاؼ ؾِاْ ِٛؼظٔظؽ ؼا تؽ زكة ثأيٗ ظؼ کاظؼ ِماتً آْ ٚاؼظ کٕع .ظؼ پأً تؼعی کاؼتؽ ِیتٛأع ِکاْ ٕ٘عقی ؼيهٗ٘ا ٚيا ِکاْ ؼيهٗ٘ای قيكتُ ؼا ظؼ ِٕسٕی خعاگأٗای تؽقيُ ّٔايع ٚ .ظؼ پأً آضؽی ٔيؿ کاؼتؽ تؽزكة أتطاب ضٛظ ِیتٛأع ظياگؽاَ تٛظ يا ّٔٛظاؼ ٔايکٛئيكت ٚيا ّٔٛظاؼ ٔيکٌٛؿ قيكتُ ؼا ظؼ ِٕسٕی خعاگأٗای تؽقيُ کٕع .ظؼ لكّت پائيٓ پأً اصٍی ٔيؿ ظ ٚظگّٗ لؽاؼ ظاؼظ کٗ ظگّٗی ، Runتغييؽات ايداظ نعٖ ؼا اػّاي کؽظٖ ِٕ ٚسٕی٘ا ؼا تؽقيُ ِیکٕع ٚظگّٗی ٔ Resetيؿ کٍيٗی ِماظيؽ ٚ نکً٘ا ؼا ظؼ زاٌت پيمفؽض ضٛظ لؽاؼ ِیظ٘ع .قٗ ػعظ ٔ Axesيؿ ٚخٛظ ظاؼظ کٗ ٚظايف آْ٘ا کاِال ِهطص اقت. نکته :تؽای تؼٛيط ؼٔگ ؾِيٕٗی ػٕاصؽ ِیتٛأيع تٗ تٕظيّات آْ ػٕصؽ ؼفتٗ ٚتٗظٌطٛاٖ ؼٔگ پيمفؽض ؼا تغييؽ ظ٘يع. اؾ ِكيؽ GUI Options >> Toolsتٗ تٕظيّات GUIتؽٚيع ِ ٚإٔع نکً ؾيؽ ػًّ کٕيع: نّا تا لؽاؼ ظاظْ Proportionalظؼ لكّت Resize Behaviorلاظؼ ضٛا٘يع تٛظ تا ِٛ GUIؼظٔظؽتاْ ؼا تٗ ٘ؽ قايؿی ظؼآٚؼيع(ِثال آْ ؼا Full Screenکٕيع). ظؼ ِؽزٍٗی تؼع ِیضٛا٘يُ تؽای GUIيّإِْ٘ٛ ،ای ِطتٍفی ؼا ايداظ کٕيُ .ايٓ ِٕ٘ٛا تٗنؽذ ؾيؽ ِیتانٕع: تؽای ايداظ ايٓ ِٕ٘ٛا ،اؾ ِكيؽ ٚ Menu Editor >> Toolsاؼظ ٚيؽايهگؽ ِٕ ٛنٛيع .قپف يک ِٕ ٛخعيع ايداظ کؽظٖ ٔ ٚاَ آْ ؼا Fileلؽاؼ ظ٘يع ٚظؼ لكّت tagػثاؼت ٚ file_menuيا ٘ؽ ػثاؼت ظيگؽی کٗ تؽاقاـ کاؼاکتؽ٘ای ِداؾ تٛظٖ ٚتع ْٚفاصٍٗ تانع ،ؼا تٕٛيكيع .قپف ِٕٛی ظيگؽی ؼا ايداظ کؽظٖ ٔ ٚاَ آْؼا Resetلؽاؼ ظاظٖ ٚيک tagظٌطٛاٖ تؽای آْ تٕٛيكيع .تؼع اؾ آْ ظؼ لكّت Acceleratorزؽف Rؼا لؽاؼ ظ٘يع .نّا تا ايٓ کاؼ لاظؼ ضٛا٘يع تٛظ کٗ تا کٍيع٘ای Ctrl+Rػًّ ؼيكتکؽظْ ؼا أداَ ظ٘يع .آيتُ Check mark this itemؼا ٔيؿ فؼاي کٕيع .پف اؾ آْ تٛقيٍٗی ظگّٗ٘ای خٙتی ،ايٓ آيتُ ؼا تٗ ؾيؽِدّٛػٗی آيتُ ِٕ Fileتمً کٕيعِ .إٔع نکً ؾيؽ: ظؼ اظاِٗ ِٕٛی ظيگؽی ايداظ کؽظٖ ٔ ٚاَ آْ ؼا Printگػانتٗ ٚتؽای آْ يک tagأتطاب کٕيع .ايٓ آيتُ ؼا ظؼ ؾيؽِدّٛػٗی Fileلؽاؼ ظ٘يع. قپف Separator above this itemؼا فؼاي کٕيع .تا أداَ ايٓ کاؼ ،ظ ٚآيتُ Print ٚ Resetؼا اؾ يکعيگؽ خعا کؽظٖايع(ظؼٚالغ تيٓ آْ٘ا يک ضط گػانتٗايع) .قپف چٙاؼ ِٕٛی خعاگأٗ تؼؽيف کؽظٖٔ ٚ ،اَ٘ای آْؼا تٗتؽتية ؾيؽ لؽاؼ ظ٘يع: .1 .2 .3 .4 Figure Response of LTI System Roots analysis Frequency response قپف تؽاقاـ کاؼاکتؽ٘ای ِداؾtag ،ی ِتفاٚت تؽای ٘ؽکعاَ أتطاب کٕيعِ .ثال تٗصٛؼت ؾيؽ: .1 .2 .3 .4 fig_print_menu res_print_menu root_print_menu freq_print_menu ظّٕا ِیتٛأيع تؽای ؾيثايی کاؼ ،ظؼ ِٕٛی Response of LTI Systemگؿيٕٗی Separator above this itemؼا فؼاي کٕيع .ظؼ اظاِٗ ِٕٛی ظيگؽی تا ٔاَ Exitايداظ کؽظٖ tag ٚآْؼا exit_menuتٕاِيع .قپف آْؼا اؾ Printخعا کٕيع .زاي تّای ؾيؽِٕ٘ٛای ِٕٛی اصٍی File ؼا ايداظ کؽظٖايُ ،پف تٗ قؽاؽ ِٕٛی ِ Toolsیؼٚيُ .ايٓ ِٕ ٛؼا تا ٔاَ Toolsايداظ کٕيع( tagآْ تٗ کاؼ ِا ّٔیآيع ّ٘ ٚچٕيٓ tagکٍيٗی ٚ grid Hide ٚ Show gridتگ٘ای hide_menu ٚ show_menuؼا تٗ ِٕ٘ٛايی کٗ ظاؼای ؾيؽِٕ ٛتانٕع) ٚظ ِٕٛ ٚؼا تا ٔاَ٘ای ؾيؽِدّٛػٗی آْ اظافٗ کٕيعِٕٛ .ی ظيگؽی ايداظ کٕيع ٔ ٚاَ آْؼا Helpلؽاؼ ظاظٖ ٚظِٕٛ ٚی ظيگؽ ؼا تا ٔاَ٘ای ٚ Using the ControlTool ٚ About ControlToolتگ٘ای about_menu ٚ use_menuؼا تٗ ؾيؽِدّٛػٗی آْ تثؽيع .ايٓ ظ ٚؼا تا يک ضط اؾ يکعيگؽ خعا کؽظٖ ٚ تؽای Using the ControlToolظؼ لكّت ،Acceleratorظگّٗی Hؼا لؽاؼ ظ٘يع. کاؼ ايداظ ِٕ٘ٛا تٗ پاياْ ؼقيعٖ ٚتٗصٛؼت ؾيؽ ظؼآِعٖأع: ظؼ ِؽزٍٗی آضؽ اؾ طؽازی ِ ، GUIیضٛا٘يُ يک ٔٛاؼاتؿاؼ تؽای GUIيّاْ لؽاؼ ظ٘يُ .تؽای ايٕکاؼ اؾ ِكيؽ Toolbar >> Tools ٚ Editorاؼظ ٚيؽايهگؽ ٔٛاؼاتؿاؼ نٛيع .قپف اتؿاؼ پؽيٕت ؼا أتطاب Add ٚکٕيع .ظؼ اظاِٗ اتؿاؼ Zoom Inؼا اظافٗ کؽظٖ ٚگؿيٕٗی Separator on left sideؼا فؼاي کٕيع .تا أداَ ايٓ کاؼ ،تيٓ ظ ٚاتؿاؼ اظافٗ نعٖ ،يک ضط لؽاؼ ِیظ٘يع .قپف اتؿاؼ Zoom Outؼا اظافٗ کٕيع .تؼع اؾ آْ اتؿاؼ Panؼا اظافٗ کؽظٖ ٚآْؼا اؾ اتؿاؼ Zoom Outخعا کٕيع .ظؼ ٔٙايت ٔيؿ اتؿاؼ Data Cursorؼا اظافٗ کؽظٖ ٚآْؼا اؾ اتؿاؼ Panخعا کٕيع. کاؼ ايداظ ٔٛاؼاتؿاؼ٘ا تٗ پاياْ ؼقيعٖ ٚتٗ صٛؼت ؾيؽ ظؼآِعٖأع: OKکٕيع. اکٕ ْٛکاؼ طؽازی GUIيّاْ تٗ پاياْ ؼقيعٖ ٛٔ ٚتت کعٔٛيكی آْ نعٖ اقت GUI .ؼا Runکؽظٖ ٚتا ٔاَ ControlToolغضيؽٖ کٕيع. طؽازی تعٔٗی اصٍی ، GUIظؼ قسمت دوم آموزش ، GUIنؽذ ظاظٖ نع .زاي ظؼ ايٓ ِؽزٍٗ تؽٔاِٗ ؼا Runکؽظٖ ٚتا ٔاَ ControlTool غضيؽٖ کؽظٖايُ .ايٕک ِیضٛا٘يُ کع٘ای آْ ؼا تٕٛيكيُ. تؽای نؽٚع اتتعا تٗ لكّت ControlTool_OpeningFcnتؽٚيع تا کع٘ای تاؾنعْ GUIؼا تٕٛيكيع .کع٘ای ؾيؽ ؼا ٚاؼظ کٕيع: ;)]g=tf(1,[1 3 2 4 ;)step(handles.axes1,g ;)rlocus(handles.axes2,g ;)bode(handles.axes3,g ايٓ کع٘ا ّٔٛظاؼ٘ای قيكتّی ؼا کٗ تصٛؼت پيمفؽض لؽاؼ ظاظٖايُ ،ؼقُ ِیکٕع .تاتغ تثعيً ايٓ قيكتُ ،تٗ لؽاؼ ؾيؽ اقت: تٗ Callbackتّاِی ٘Edit Textا ؼفتٗ ٚ ،کع ؾيؽ ؼا ٚاؼظ کٕيع: ;)'input=get(hObject,'String ))if (isempty(input )'set(hObject,'String','Default end guidata(hObject, handles); ؼت ؼنتٗایٛ ؼا تٗصText Edit اؼظنعٖ ظؼٚ ايٓ کع ِمعاؼ. ؼا لؽاؼ ظ٘يعEdit Text ْ ِمعاؼ پيمفؽض آ، Default فمط تٗخای ػثاؼت .ٔعٛايت ِماظيؽ آپعيت ِینٙٔ ظؼٚ ؼا خايگؿيٓ ِیکٕعDefault ،ظٛاؼظ ٔهعٖ تٚ اگؽ ِمعاؼیٚ ،أعِٛیض :اؼظ کٕيعٚ لطؼٗ کع ؾيؽ ؼاٚ ٗ ؼفتRun ظگّٗی فهاؼیCallback ٗظؼ اظاِٗی کاؼ ت if get(handles.radiobutton1,'Value') == get(handles.radiobutton1,'Max') num=get(handles.edit1,'String'); num=str2num(num); den=get(handles.edit2,'String'); den=str2num(den); s1=size(num); s2=size(den); delay=get(handles.edit8,'String'); delay=str2num(delay); if s1(1,2) > s2(1,2) errordlg('Invalid input value! size(num) <= size(den)','Error','modal'); end if get(handles.checkbox1,'Value') == get(handles.checkbox1,'Max') if delay < 0 errordlg('The value of the "OutputDelay" property must be a vector of nonnegative numbers.','Error','modal'); elseif mod(delay,1) ~= 0 errordlg('The value of the "OutputDelay" property must be integer valued for discrete-time models.','Error','modal'); else h=tf(num,den,1,'outputdelay',delay); g=tf(num,den,'outputdelay',delay); end else g=tf(num,den); end else z=get(handles.edit3,'String'); z=str2num(z); p=get(handles.edit4,'String'); p=str2num(p); s1=size(z); s2=size(p); delay=get(handles.edit8,'String'); delay=str2num(delay); if s1(1,2) > s2(1,2) errordlg('Invalid input value! size(z) <= size(p)','Error','modal'); end k=get(handles.edit5,'String'); k=str2num(k); if get(handles.checkbox1,'Value') == get(handles.checkbox1,'Max') if delay < 0 errordlg('The value of the "OutputDelay" property must be a vector of nonnegative numbers.','Error','modal'); elseif mod(delay,1) ~= 0 errordlg('The value of the "OutputDelay" property must be integer valued for discrete-time models.','Error','modal'); else h=zpk(z,p,k,1,'outputdelay',delay); g=zpk(z,p,k,'outputdelay',delay); end else g=zpk(z,p,k); end end if get(handles.radiobutton6,'Value') == get(handles.radiobutton6,'Max')... && get(handles.checkbox1,'Value') ~= get(handles.checkbox1,'Max') g=feedback(g,1); elseif get(handles.radiobutton6,'Value') == get(handles.radiobutton6,'Max')... && get(handles.checkbox1,'Value') == get(handles.checkbox1,'Max') errordlg('Delay must be turn off in close loop.','Error','modal'); end if (delay > 0) && (mod(delay,1) == 0) %------------------------------------Response of LTI System val1 = get(handles.popupmenu1,'Value'); if get(handles.radiobutton3,'Value') == get(handles.radiobutton3,'Max') switch val1 case 1 step(handles.axes1,g); case 2 impulse(handles.axes1,g); end else time=get(handles.edit7,'String'); time=str2num(time); t=0:time/1000:time; switch val1 case 1 step(handles.axes1,g,t); case 2 impulse(handles.axes1,g,t); end end %-------------------------------------------Analysis roots val2 = get(handles.popupmenu2,'Value'); switch val2 case 1 if get(handles.checkbox1,'Value') == get(handles.checkbox1,'Max') rlocus(handles.axes2,h); else rlocus(handles.axes2,g); end case 2 pzmap(handles.axes2,g); end %---------------------------------------Frequency response val3 = get(handles.popupmenu3,'Value'); switch val3 case 1 bode(handles.axes3,g); case 2 nyquist(handles.axes3,g); case 3 ;)nichols(handles.axes3,g end end ;)guidata(hObject, handles توضیح کد: ايٓ کع ظؼاتتعا تؽؼقی ِیکٕع کٗ کعاَ ؼٚل تؽای ِؼؽفی قيكتُٚ ،اؼظ نعٖ اقت .اگؽ ؼٚل ظؽاية چٕعخٍّٗای ٚاؼظ نعٖ تٛظِ ،ماظيؽ ٚ num denؼا تٗصٛؼت ؼنتٗای ضٛأعٖ ٚتٗ ػعظ تثعيً ِیکٕعِ .معاؼ Delayؼا ُ٘ تّٗ٘يٓ تؽتية ضٛأعٖ ٚتٗ ػعظ تثعيً ِیکٕع تا ظؼ صٛؼت ٔياؾ اؾ آْ اقتفاظٖ نٛظ .ظؼ اظاِٗ قايؿ٘ای den ٚ numضٛأعٖ نعٖ ٚظؼ صٛؼتيکٗ قايؿ numتؿؼگتؽ اؾ denتانع ،تٛقيٍٗی تاتغ ، errordlg پيغاَ ضطايی صاظؼ ِینٛظ(ظؼ تّاَ تٛاتغ تثعيً قيكتُ٘ای کٕتؽٌیِٕ ،طمی آْ اقت کٗ قايؿ numاؾ قايؿ denکٛچکتؽ ٚيا ِكاٚی تانع) .ايٓ ظياٌٛگ تٗصٛؼت ؾيؽ اقت: نکته :ايٓ ضطا اؾ ٔٛع modalاقت ٚ ،تا ؾِأی کٗ ٔ OKهٛظ ،کاؼتؽ ّٔیتٛأع تٗ اظاِٗی کاؼ تپؽظاؾظ. ِٕ ، Delayفی ٚيا ظؼ اظاِٗی کع تؽؼقی ِینٛظ کٗ آيا Delayفؼاي اقت يا ٔٗ؟ اگؽ فؼاي تانع ،تؽؼقی ِیکٕع کٗ ِمعاؼ ٚاؼظ نعٖ تؽای اػهاؼی ٔثانع ٚ ،تؽای ؼضعاظ ٘ؽکعاَ پيغاَ ضطايی اؾ ٔٛع modalصاظؼ ِیکٕع .قپف ظؼصٛؼتیکٗ ِهکٍی ظؼ ػعظ ٚاؼظ نعٖ تؽای Delay ٔثٛظ ،تاتغ تثعيً قيكتُ ؼا تّٗ٘ؽاٖ Delayتهکيً ِیظ٘ع ٚاگؽُ٘ Delayفؼاي ٔثٛظ ،کٗ تاتغ تثعيً ؼا تع Delay ْٚتهکيً ِیظ٘ع. ظؼ اظاِٗی کع تٗ لكّتی ِیؼقيُ کٗ ِؽتٛط تٗ ِؼؽفی قيكتُ تا صفؽ٘ا ٚلطة٘ا ٚگيٓ ِیتانع .ايٓ کع ظؼاتتعا صفؽ٘ا ٚلطة٘ا ٚگيٓ ٚتأضيؽ قيكتُ ؼا ضٛأعٖ ٚتٗ ػعظ تثعيً ِیکٕع .قپف تؽؼقی ِیکٕع کٗ تؼعاظ صفؽ٘ای قيكتُ اؾ تؼعاظ لطة٘ای آْ تيهتؽ ٔثانع ،کٗ ظؼايٓصٛؼت پيغاَ ضطايی صاظؼ ِیکٕع .قپف ظؼ صٛؼت فؼاي تٛظْ ّ٘ ،Delayاْ نؽٚط غکؽ نعٖ ؼا تؽای ػعظ ٚاؼظ نعٖ ،چک ِیّٔايع .ظؼصٛؼتیکٗ ِهکٍی ٚخٛظ ظانت ،ضطايی صاظؼ ِیکٕع ٚظؼغيؽايٓصٛؼت تاتغ تثعيً ؼا تّٗ٘ؽاٖ ، Delayتهکيً ِیظ٘ع ٚظؼ صٛؼتیکٗ تأضيؽی ظؼ کاؼ ٔثانع، تاتغ تثعيً تع ْٚتأضيؽ ؼا تهکيً ِیظ٘ع. قپف ظؼصٛؼتیکٗ ٔٛع قيكتُ ،زٍمٗتكتٗ أتطاب نعٖ تانع( ُ٘ Delay ٚفؼاي ٔثانع) ،قيكتُ زٍمٗتكتٗ تا اقتفاظٖ اؾ ظقتٛؼ ، feedbackتهکيً ِینٛظ. ظؼ اظاِٗی کع تؽؼقی ِینٛظ کٗ تأضيؽ ٚاؼظ نعِٖ ،هکٍی ٔعانتٗ تانع کٗ اگؽ چٕيٓ تانع٘ ،يچ پاقطی ؼقُ ّٔینٛظ .قپف تؽؼقی ِینٛظ کٗ ظؼ لكّت پاقص ؾِأی قيكتُ ،زاٌت پيمفؽض لؽاؼ ظاظٖ نعٖاقت ٚيا أتطاتی؟ ظؼ صٛؼت فؼاي تٛظْ زاٌت أتطاتی ،ؾِاْ ٚاؼظنعٖ ظؼ کاظؼ ِؽتٛطٗ ،ضٛأعٖ نعٖ ٚتٗ ػعظ تثعيً ِینٛظ قپف تؽظاؼی اؾ صفؽ تا ػعظ ٚاؼظنعٖ ٚتا گاَ يک٘ؿاؼَ ػعظ ٚاؼظنعٖ ،تهکيً ِینٛظ تا پاقص قيكتُ تٗ اؾای آْ تؽظاؼ تؽقيُ نٛظٔ .سٖٛی تهطيص فؼايتٛظْ کعاَ پاقص ٔيؿ تٛقيٍٗی ظقتٛؼ ، switchکاِال ٚاظر اقت. اظاِٗی ايٓ کع ٔيؿ ِؽتٛط تٗ ؼقُ ّٔٛظاؼ٘ای آٔاٌيؿ ؼيهٗ٘ای قيكتُ ٚپاقص فؽکأكی آْ ِیتانع کٗ تا تٛخٗ تٗ تٛظيسات غکؽ نعِٖ ،طٍة ضاصی تالی ّٔیِأع. ظؼ اظاِٗی کاؼ تٗ Callbackظگّٗی فهاؼی Resetؼفتٗ ٚلطؼٗ کع ؾيؽ ؼا ٚاؼظ کٕيع: g=tf(1,[1 3 2 4]); step(handles.axes1,g); rlocus(handles.axes2,g); bode(handles.axes3,g); set(handles.radiobutton1,'Value',1); set(handles.radiobutton3,'Value',1); set(handles.radiobutton5,'Value',1); set(handles.edit1,'String','1'); set(handles.edit2,'String','[1 3 2 4]'); set(handles.edit3,'String','[]'); set(handles.edit4,'String','[-1 -2]'); set(handles.edit5,'String','1'); set(handles.edit7,'String','10'); set(handles.edit8,'String','2'); set(handles.popupmenu1,'Value',1); set(handles.popupmenu2,'Value',1); set(handles.popupmenu3,'Value',1); set(handles.checkbox1,'Value',0); guidata(hObject, handles); :توضیح کد .ظ تاؾِیگؽظأعٛايٓ کع تّاِی تغييؽات ؼا تٗ زاٌت پيمفؽض ض ظؼ قسمت سوم آموزش.ُ ظؼ اؼتثاط تا آٔاٌيؿ قيكتُ٘ای کٕتؽٌی ؼا آغاؾ کؽظيٚ ًِ ٔكثتا کاGUI طؽازی يک، GUI ظؼ قسمت دوم آموزش .ُايی ؼا تكت کٕيٙٔ GUI ٚ ٖيكی آْؼا أداَ ظاظٛٔا٘يُ ظؼ ايٓ لكّت اظاِٗی کعٛ زاي ِیض.ُع کؽظيٚيكی آْؼا نؽٛٔٔيؿ کع :اؼظ کٕيعٚ لطؼٗ کع ؾيؽ ؼاٚ ٗ ؼفتExit یِٕٛ Callback ٗت button = questdlg('Do you want to quit the ControlTool?', ... 'Quit the ControlTool','Yes','No','No'); switch button case 'Yes', ;)'close('ControlTool case 'No', ;quit cancel end توضیح کد: ايٓ کع يک ظياٌٛگ پؽقهی ؼا تؽای کاؼتؽ تٗ ّٔايم ظؼِیآٚؼظ .ايٓ ظياٌٛگ ِؼّٛال ظاؼای گؿيٕٗ٘ای ِ Cancel ٚ No ،Yesیتانع کٗ ظؼ ايٓ ِٛؼظ ِا فمط اؾ گؿيٕٗ٘ای No ٚ Yesاقتفاظٖ کؽظٖايُ .اگؽ کاؼتؽ ظگّٗی Yesؼا تفهاؼظ ،اؾ تؽٔاِٗی ControlToolضاؼج ِینٛظ ٚ اگؽ Noؼا أتطاب کٕع ،ػٍّيات ضؽٚجٌ ،غِ ٛیگؽظظ. تٗ ِٕٛ Callbackی Resetؼفتٗ ّ٘ ٚاْ کعی ؼا کٗ تؽای ظگّٗی فهاؼی Resetظؼ قسمت سوم آموزش نؽذ ظاظَ ،لؽاؼ ظ٘يع. زاي تٗ ِٕٛ Callbackی Figureؼفتٗ ٚکع ؾيؽ ؼا ٚاؼظ کٕيع: ;)printdlg(ControlTool ايٓ کع اؾ کً GUIی ِا پؽيٕت ِیگيؽظ .ظؼٚالغ ايٓ ظقتٛؼ اؾ کً ِستٛيات يک نیء گؽافيکی(کٗ ظؼ ايٓ ِٛؼظ ايٓ نیء گؽافيکی ٔ ControlToolاَ ظاؼظ) ،پؽيٕت تٙيٗ ِیکٕع. قپف تٗ ِٕٛ Callbackی Response of LTI Systemؼفتٗ ٚلطؼٗ کع ؾيؽ ؼا ٚاؼظ کٕيع: ;)axes1fig = figure(10010 ;)axes1copy = copyobj(handles.axes1,axes1fig ;)'set(axes1copy,'Units','default','Position','default ;)printdlg(10010 close 10010 توضیح کد: ايٓ کع اتتعا يک نیء گؽافيکی ايداظ کؽظٖ ٚقپف ِٛ axesؼظٔظؽ ؼا تٛقيٍٗی ظقتٛؼ copyobjظؼ آْ نیء کپی ِیکٕع .پف اؾ آْ ٚازع٘ا ٚ ِکاْ axesکپی نعٖ ظؼ نیء قاضتٗ نعٖ تٗ زاٌت پيمفؽض ضٛظ ِیؼٔٚع .تؼع اؾ آْ اؾ نیء گؽافيکی ايداظ نعٖ ،پؽيٕت گؽفتٗ ِینٛظ ٚ ٔٙايت ُ٘ نیء گؽافيکی تكتٗ ِینٛظ. ظؼاظاِٗ تٗ ٘Callbackای Frequency response ٚ analysis Rootsؼفتٗ ّ٘ ٚاْ کع تاال ؼا تؽای آٔٙا تٕٛيكيع .فمط تٕٙا تغييؽی کٗ ِیظ٘يع ايٓ اقت کٗ تؽای ٘ؽکعاَِ axes ،ؽتٛطٗ ؼا لؽاؼ ِیظ٘يع. زاي تٗ ِٕٛ Callbackی Show gridؼفتٗ ٚلطؼٗ کع ؾيؽ ؼا ٚاؼظ کٕيع: ;)'grid(handles.axes1,'on ;)'grid(handles.axes2,'on ;)'grid(handles.axes3,'on ّ٘اْطٛؼ کٗ کاِال ٚاظر اقت ،ايٓ ظقتٛؼاتّٛٔ ،ظاؼ٘ا ؼا نثکٗتٕعی ِیکٕٕع. تؽای ِٕٛی ٔ Hide gridيؿ ػيٓ ايٓ ظقتٛؼات ؼا تٗ کاؼ تثؽيع تا ايٓ تفاٚت کٗ تٗخای ّٔٛظاؼ٘ا زػف ِینٛظ. onاؾ offاقتفاظٖ کٕيع .تا ايٓ کاؼ نثکٗتٕعی کٍيٗی تٗ ِٕٛ Callbackی Using the ControlToolؼفتٗ ٚکع ؾيؽ ؼا ٚاؼظ کٕيع: ;)'helpdlg('This is a graphical user interface(GUI) that apply for analysis of linear systems.','Help توضیح کد: ايٓ ظقتٛؼ يک ظياٌٛگ کّک ؼا تؽای کاؼتؽ تٗ ّٔايم ظؼِیآٚؼظٛٔ .يكٕعٖی ِ ، GUIیتٛأع ظؼ ايٓ لكّت تّاِی ِٛاؼظی ؼا کٗ تٗ کاؼتؽ ظؼ ٔسٖٛی اقتفاظٖ اؾ تؽٔاِٗ کّک ِیکٕعٚ ،اؼظ کٕع .ايٓ ظياٌٛگ ؼا اگؽ ياظتاْ تانعِ ،یتٛأيُ تا کٍيع٘ای ٔ Ctrl+Hيؿ تاؾ کٕيُ. ظؼٔٙايت تٗ ِٕٛ Callbackی About ControlToolؼفتٗ ٚکع ؾيؽ ؼا ٚاؼظ کٕيع: ;)'helpdlg('Created by Mojtaba Ayati nia Email: mjt.atn@gmail.com','About ControlTool توضیح کد: ايٓ کع يک ظياٌٛگ اؾ ٔٛع کّک ؼا ايداظ ِیکٕع کٗ ناًِ اطالػاتی ظؼتاؼٖی قاؾٔعٖی تؽٔاِٗ ِ ...ٚیتانع .نّا ِیتٛأيع اقُ ٚظيگؽ ِهطصات ضٛظتاْ ؼا ٚاؼظ کٕيع. ظؼ ايٓ ِؽزٍٗ کعٔٛيكی تٗ پاياْ ؼقيعٖ ِ ٚیتٛأيُ GUIؼا اخؽا کٕيُ.