Uploaded by arash4675.mo

gui

advertisement
‫ظؼ چٕع لكّت لصع ظاؼَ ٔس‪ ٖٛ‬واؼ وؽظْ تا ‪ 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‬ؼا اخؽا کٕيُ‪.‬‬
Download