آموزش GUI (قسمت اول) مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط مجتبی آیتی نیا   
جمعه, 27 فروردین 1389 ساعت 00:13

در چند قسمت قصد دارم نحوه كار كردن با GUI رو به شما آموزش بدم.

همون‌طور كه مي‌دونيد(يا شايد هم نمي‌دونيد) به‌وسيله ابزار (GUI (Graphical User Interface شما مي‌تونيد برنامه خودتون رو بهتر به كاربران ديگه عرضه كنيد. براي شروع ابتدا guide رو صفحه متلب تايپ و اينتر كنيد يا از مسير File >> New >> GUI نيز مي‌تونيد استفاده كنيد همون‌طور كه مشاهده مي‌كنيد صفحه زير نمايش داده مي‌شه بدون هيچ تغييري OK كنيد.

 

 

 

 

 

 

 

 

 

 

 

بعد صفحه اصلي GUI براي شما ظاهر مي‌شه كه شما مي‌تونيد عناصر گرافيكي خودتون رو در اون قرار بديد. براي اينكه شما بتونيد يك GUI طراحي كنيد ابتدا بايد شما عناصر گرافيكي كه GUI در اختيار شما قرار مي‌ده بشناسيد من خلاصه‌اي از برخي عناصر رو كه بيشتر به كار ميان براي شما مي‌نويسم.

  • Push button : اين عنصر گرافيكي يك دگمه فشاري هستش كه هنگامي كه با ماوس روي اون فشار بديد Callback اون فعال مي‌شه.
  • Slider : اين عنصر يك كنترلر گرافيكي براي مقادير پيوسته است كه با دادن دو حد بالا و پايين به اون مي‌تونيد مقدارش رو بين دو حد بطور پيوسته تغيير بديد كه اين كار با كشيدن كنترلر آن با ماوس انجام مي‌شه و هر تغيير در اين كنترلر  Callback اون رو فعال مي‌كنه.
  • Radio Button : اين عناصر معمولاً به صورت گروهي به كار مي‌رن و از اون‌ها مي‌تونيد براي ايجاد گزينه‌هاي وابسته استفاده كنيد (گزينه‌هاي وابسته يعني حالت‌هايي كه هميشه يكي از اون‌ها مي‌تونن فعال باشن) زماني كه بر روي يكي از اون‌ها كليك كنيد  Callback مربوط به اون عنصر فعال شده و يك نطقه سياه درون دايره اون قرار مي‌گيره.
  • Check Box : با اين عناصر شما مي‌تونيد حالت‌هاي مستقل از هم ايجاد كنيد يعني حالت‌هايي كه همزمان مي‌تونن رخ بدن. زماني كه با ماوس روي اين عنصر كليك كنيد Callback اون فعال مي‌شه و اگر خاموش باشه(درون مربع چيزي نباشه) يك تيك سبز رنگ روي مربع اون نشون داده مي‌شه كه نشان دهنده روشن بودن اونه و اگر روشن باشه، خاموش مي‌شه.
  • Edit Text : اين عنصر يك متن قابل تغيير رو نشون مي‌ده كه شما مي‌تونيد محتويات اون رو تغيير بديد و سپس با فشردن دگمه اينتر  Callback اون رو فعال كنيد.
  • Static Text : اين عنصر يك متن ثابت رو نشون مي‌ده كه محتويات اون تحت كنترل برنامه‌ايست كه شما براي اون نوشته‌ايد و ديگه تحت كنترل شما نيست مگر اينكه بريد به سورس برنامه و كد اون رو تغيير بديد. از اين عنصر معمولاً براي نمايش خروجي عددي استفاده مي‌شه.
  • Pop-up Menu : اين عنصر گرافيكي تقريباً مانند Radio Button‌هاي گروهي عمل مي‌كنه و مي‌تونه تعدادي حالت رو در خودش ذخيره كنه و در يك زمان واحد فقط يكي از اون‌ها رو فعال كنه. شايد بشه گفت كه يكي از تفاوت‌هاي اون با 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 داريم تا بتونيم اعداد ورودي رو به اون بديم و دو Static Text كه يكي براي نمايش خروجي و ديگري رو هم بعداً مي‌گم بعد مي‌تونيم از چهار Radio Button كه به صورت گروهي به كار مي‌رن، براي انتخاب يكي از چهار عمل اصلي استفاده كنيم طبعاً يك Button Group هم مي‌خواهيم.

پس از انتخاب قطعات، نوبت اون رسيده كه كارمون رو شروع كنيم در صفحه اصلي GUI در سمت چپ قطعاتي رو كه مي‌خواهيم ازشون استفاده كنيم مي‌بينيد تمام قطعات رو به تعدادي كه گفته شد به صفحه GUI وارد كنيد به اين صورت كه بر قطعه مورد نظر كليك مي‌كنيد و بدون رها كردن اون، قطعه رو توي صفحه GUI مي‌اندازيد و به‌صورت شكل زير در مي‌آوريد:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

عنصرهاي متني رو همون‌طوري كه مي‌بينيد بزرگ كردم تا اعداد بزرگ رو به راحتي نمايش بدن.

حالا بايد تنظيمات اين قطعات رو انجام بديم اول روي Edit Text اولي دوبار كليك كنيد و بعد عبارت مقابل String رو پاك كرده و به جاي آن 0 رو بنويسيد و در Tag اون هم x_edit بنويسيد و پنجره رو ببنديد.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

همين اعمال رو هم براي Edit Text دومي انجام مي‌ديد با اين تفاوت كه در Tag اون y_edit رو مي‌نويسيد. String در واقع همون عبارتي است كه روي Edit Text نوشته مي‌شه و Tag ناميه كه بوسيله اون GUI، عنصر مربوطه رو شناسايي مي‌كنه. در ادامه كار بر Static Text اولي دوبار كليك مي‌كنيد و در 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);

 

در خط اول اين كد مقدار Edit Text به صورت String خوانده مي‌شه و در خط دوم به عدد تبديل مي‌شه در خطوط سه تا پنج بررسي مي‌شه كه آيا عددي وارد شده يا نه؟ اگه وارد شده باشه كه هيچ وگرنه مقدار 0 در اون قرار داده مي‌شه در خط آخر هم كه مقادير به روز مي‌شوند و نياز هستش كه در آخر هر Callback آورده‌شه تا مقادير آپديت بشن. سپس دقيقاً همين كار رو براي Edit Text دومي انجام بديد و همون كد رو هم بنويسيد.

حالا به سراغ Radio Button‌ها مي‌رين Callback اولي رو به همون صورتي‌كه گفته شد فراخواني مي‌كنين و كد مربوطه رو به همان صورتي‌كه مي‌بينيد، وارد كنيد. همون‌طوري‌كه مي‌بينيد بعد از تابع سه خط توضيحات اومده كه اون‌ها رو رد مي‌كنيد بعد كد رو مي‌نويسيد.

به اين صورت:

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 ذخيره مي‌كنه در دو خط بعدي مقدار x و y رو به عدد تبديل مي‌كنه در خط بعدي مجموع اون‌ها رو درون result مي‌ريزه و خط بعدي result رو از عدد به رشته تبديل مي‌كنه خط بعدي result رو درون Result(كه همون Static Text دومي باشه) مي‌ريزه و در نهايت هم در خط آخر مقادير به روز مي‌شن همون‌طوري كه قبلاً توضيح داده شد.

حالا براي سه Radio Button ديگه هم عيناً همين كد رو وارد مي‌كنيد فقط به جاي اينكه x و y رو با هم جمع كنيد اون‌ها رو براي دومي از هم كم مي‌كنيد و براي سومي در هم ضرب مي‌كنيد و براي چهارومي به هم تقسيم مي‌كنيد.

پس از انجام عمليات كدنويسي M-File مربوطه رو Save مي‌كنيد حالا ديگه GUI شما آماده شده و مي‌تونيد از اون استفاده كنيد.

به اين صورت:

 

 

 

 

 

 

 

 

 

 

 

 

اگر سؤالي داشتيد مي‌توانيد در بخش نظرات آن را مطرح كنيد.

براي رفتن به قسمت بعد، به‌روي لينك زير كليك كنيد:

آموزش GUI (قسمت دوم)

 

براي رفتن به ديگر قسمت‌ها، به‌روي لينك‌هاي زير كليك كنيد:

آموزش GUI (قسمت اول)

آموزش GUI (قسمت دوم)

آموزش GUI (قسمت سوم)

آموزش GUI (قسمت چهارم)


نظر ها (122)
  • رامين
    از اينكه به وبلاگ بنده امديد بي نهايت خوشحال شدم كارهاي شما بسيار زيبا و عالي است اجازه دارم از كارهاي شما در وبلاگ خودم استفاده كنم
  • moj1001
    از تونستن كه مي تونيد ولي اگه مي خاهيد با اجازه مطلب بر داريد بايد با مدير سايت صحبت كنيد.
  • م. موسوی  - سلام
    سلام دوست عزیز
    از لطفتان متشکریم، در صورت امکان می خواستم بدانم در مورد طراحی قالب برای وبلاگ هم سررشته دارید یا نه؛ منتظر پاسخ تان هستیم.
    بدروود
  • setare.sefid@gmail.com  - سلام دوست عزیز
    برای من که مبتدی هستم عالی بود.ممنون :D
  • محمد عالی بری
    سلام
    ما سایت شما رو لینک کردیم
    لطفا شما هم ما رو با عنوان وبلاگمون لینک کنید.
    خبرمون کنید.
  • دانشجویان نرم افزار 88 لاهیجان
    سلام دوست عزیز.ممنون که به وبلاگ ما سر زدین.شما با اسمی که خواسته بودین لینک شدین.لطفا ما رو با اسم دانشجویان نرم افزار88 لاهیجان لینک کنید.موفق باشین.
    narmafzar88-lahij.blogfa.com
  • iman
    سلام دوست عزیز.ممنون که به وبلاگ ما سر زدین.شما با اسمی که خواسته بودین لینک شدین.لطفا ما رو با اسم بهتربن وبلاگ دانود نرم افزار لینک کنید.موفق باشین.
    imanblog.blogfa.com
  • iman  - salam
    سلام دوست عزیز.ممنون که به وبلاگ ما سر زدین.شما با اسمی که خواسته بودین لینک شدین.لطفا ما رو با اسم دانلود هر چي بخواي لینک کنید.موفق باشین.
    bsd1.tk
  • parisa
    y 2nya mamnun. vaghe'an estefade kardam. lotfan az madarhay electricy va electronicy masale hal konid. ba zekre inke masalan self ya transistor dar koja gharar daran va tahlile frequncy va madarhaye chan tabaghe va... sepas
  • Hassan  - سایت شما عالیه
    لطفا دامنه ی اطلاع رسانیتون رو بیشتر کنید
  • criceos  - رشته !!
    با سلام
    سوال من این است که چرا در دستور:
    ;('x=get(handles.x_edit,'String
    عدد را به رشته تبدیل کرده ایم؟
    نمیشه به جای string ,
    num بنویسیم تا به رشته تبدیل نشه؟
  • ناشناس
    salam
    mohandesi leseram kheyli kheyli kam az matlab midunam
    ketabe farsi bara taghviyate signal mikham
    chizi rahnamaee mikoni
  • moj1001
    به قسمت معرفي كتاب برو يه كتاب هست با عنوان:
    آموزش كاربردي مباحث پيشرفته با Matlab
    براي شروع خوبه.
  • masih403
    کارت حرف نداره دمت گرم ادامه بدین.

    با سپاس فراوان
  • ناشناس
    پس چرا واسه من جواب نداد :confused:
  • moj1001
    دلايل مختلفي ممكن است وجود داشته باشد.
    خاستي فايل‌هاتو يه جايي آپلود كن يه نگاهي بهشون بندازم.
  • ali  - كمك!
    با سلام و تشكر
    اين برنامه واسه منم كار نكرد! واستون به اين آدرس آپلود كردم.لطفا زود ايرادشو بگين واسه پروژم لازمش دارم.خيلي ممنون
    http://www.mediafire.com/?d9lrx76jj5n320n
    http://www.mediafire.com/?cnqs11cb72s2mdu
    http://www.mediafire.com/?x2mh99kvsryrinf
  • moj1001
    سلام دوست عزيز
    پيدا كردن خطاي يك برنامه كه خودت اون رو ننوشتي از نوشتن اون برنامه سختره! اما من اين كار را برات انجام دادم. مشكل برنامت همش در يك حرف r بود كه بايد بصورت R اون رو مي‌نوشتي يه عكس هم ازش گرفتم تا بهتر متوجه بشي. از آدرس زير مي‌توني برنامه رو دريافت كني:
    http://s1.picofile.com/file/6836342052/calculator.rar.html
    موفق باشي
  • ali
    كسي نيس جواب مارو بده؟؟؟ :cry:
  • میثم
    وقتی از group button استفاده میکنیم با تغییر وضیعت یا حالت معمولی عددی در خروجی نشون داده نمیشه نفهمیدم مشکلش از کجاست
    radio button یا push button تنها مشکلی نداره و جواب میده
  • میثم
    یه نکته کوچولو هستش که بلاخره پیداش کردم
    butto group اول باید انتخاب بشه بعد radio group .
  • ali
    سلام
    خيلي ممنون درست شد!!! مشكل همون R بود! :roll:
    تشكر كه وقت گذاشتين.موفق باشيد
  • آرزو
    سلام
    من پردازش تصویر کار میکنم و میخوام از gui استفاده کنم.داخل gui باید برنامه ام رو بنویسم یا داخل Mfile خودم باید gui v, fk,dsl
  • مریم
    سلام
    زمانی که میخوام callback، radiobutton ها رو فراخوانی کنم انجام نمیشه و پیغام selectionchangefcn callback رو میده باید چکار بکنم؟
  • moj1001
    سلام
    اگه مراحلي رو كه نوشتم به‌ترتيب بري با هيچ خطايي مواجه نمي‌شي! اين خطا نمي‌دونم واسه چيه.
  • مریم
    مشکل من مشابه آقا میثمه با تغییر وضعیت در خروجی چیزی نشون داده نمیشه ، button group رو هم اول انتخاب کردم ولی درست نشد، زمانی هم که radio button رو بیرون از button group استفاده میکنم مشکلی نداره و راحت میشه call back اونو فراخوانی کرد اما زمانی که داخل button group باشه پیغام selectionchangefcn callback رو میده
  • moj1001
    نمي‌دونم مشكل شما از كجاست! به‌هر ترتيب پروژت رو يه‌جا آپلود كن يه نگاهي بهش مي‌اندازم.
  • موسی
    سلام.
    من برای درس گرافیک این ترمم پروژه paint ویندوز رو باید انجام می دادم. اما چون تا الان فرصت انجامش رو نداشتم و تا دو روز دیگه هم باید تحویل بدم.و واقعا حیاتیه از یک پروژه آماده می خوام کمک بگیرم و یکسری از کدهای اونو استفاده کنم اما نمی تونم بازش کنم .و توی توضیحات این برنامه نوشته
    MPAINT is an GUI interface to some functions in the CVLIB_MEX library , so you must have it installed to run this function
    یک راهنمایی بکنیداز کجا باید این کامپونت رو دانلود کنم و چطوری به برنامه اضافه کنم واز سایت مطلب که نمیشه چیزی دانلود کرد. :evil:
  • آرمین
    سلام به همه
    چطوری توی gui میشه چند تاcontour رو روی 1 نمودار نشون داد؟؟؟؟؟

    پیشاپیش از جواب کامل تون تشکر می کنم :lol:
  • moj1001
    سلام
    از دستور hold استفاده كن.
  • علی
    ببخشید یه سوال داشتم
    فرق hObject و handles چیه؟
    set(handles....
    set(hObject...
  • moj1001
    دستور set(hObject براي زماني هست كه مي‌خاي مقداري رو درون Edit Text يا هر عنصر گرافيكي ديگري رو در Callback خودش بنويسي و دستور set(handles براي نوشتن مقدار در يك عنصر گرافيكي در Callback‌ي خير از Callback‌ خودش.
  • رضا  - تبدیل gui به فایل اجرایی
    با سلام
    روشی وجود داره که این gui های تولید شده رو به فایل اجرایی با پسوندexe تبدیل کنیم تابرنامه در رایانه هایی که نرم افزار مطلب ر ندارند قابل اجرا باشد؟
  • moj1001
    سلام
    آره - deploytool رو تو صفحه command اينتر كن ادامه كار رو هم خودت متوجه مي‌شي سادس.
  • criceos
    سلام.
    من یک پروژه دارم که در mfile کدهاش رو نوشتم.
    برای اینکه خروجی و ورودی mfile رو در gui نشون بدم باید چه کار کنم؟
    خروجی یک نمودار هست و ورودی عدد!
  • moj1001
    سوالت رو متوجه نشدم؟ اگه با gui آشنايي داري كدت رو در mfile مربوط به gui بنويس. اگه منظورت چيزي ديگه‌اي هست كه واضح‌تر بگو؟
  • criceos
    می شه من کدم رو براتون email کنم تا یکم راهنمایی کنید؟ من با gui آشنایی کلی دارم
    در این حد که مثلا چه طور دوتا عدد رو با هم جمع کنیم :P می خوام یک راهنمای کنید که من کد mfile رو چه طور در gui فراخوانی کنم.
    اگر ممکن هست email شما رو داشته باشم که بفرستم براتون.
  • moj1001
    باشه يه جا آپلودش كن و لينكش رو تو همين قسمت نظرات بزار يه نگاهي بهش مي‌اندازم.
  • criceos
    Link: http://www.ziddu.com/download/16101712/project.rar.html

    این linkeshe . ممنون از لطفتون :P
  • moj1001
    نتونستم دانلود كنم برام ميل كن:

    mjt.atn@gmail.com
  • criceos
    من یک سوال دیگه هم دارم که نمی دونم کجا مطرحش کنم. در همون فایل که آپلود کردم از سیگنالم fft گرفتم و بعد از فیلتر fir2 عبورش دادم ، حالا چطور باید عکس fft بگیرم؟
    نوشتن دستور ifft به تنهایی جواب نمی ده!
  • moj1001
    اين سوال رو بايد در فروم مطرح كني ولي خب فايل رو بفرست شايد بتونم كمكت كنم.
  • moj1001
    سلام
    من نمي‌دونم برنامه چيه! ولي چون برنامت رو بصورت تابع نوشتي مي‌توني اون رو هر جا كه بخاي با نام اون تابع فراخواني كني.
    در مورد fft هم نمي‌دونم مشكلش چيه.
  • نيكا  - ....
    سلام
    ببخشيد مي خواستم چندتا عكس رو كنار هم در GUI قرار بدم از چه ابزاري بايد استفاده كنم ؟؟؟ در مورد قرار دادن فيلم هم اگه مي تونيد كمكم كنيد ممنون مي شم
  • ابراهیم  - ویرایش برنامه گرافیکی فازی
    سلام مهندس جان
    می خواستم در مورد برنامه فازی در متلب ازت کمک بگیرم.در toolboxفازی متلب با استفاده از برنامه گرافیکی یک برنامه ساختم .اونو export کردم به workspaceوبعد اونو بصورت textتبدیل کردم.میخوام مثل mfileدر بیاد که به محض اینکه دکمه اجرا رو فشار بدم اجرا بشهوجواب آن در صفحه commandدیده بشهوهمچنین بتونم با plot تو اون نمودار بکشم.اگه میشه راهنمایم کنید .
    ممنونم
  • moj1001
    سلام
    سوالت رو متوجه نشدم يعني چي برنامه فازي رو به text تبديل كردي؟
  • محمد  - کاربرد های gui
    سلام مهندس از مطالب جالب ت ممنون
    می خواستم چند تا از کارهای جدید guiرو بهم معرفی کنی واینکه آیا میشه با gui نیروگاه رو مدل کرد
  • moj1001
    سلام خواهش مي‌كنم
    بطور كلي هر برنامه‌‌اي رو كه بشه كدش رو نوشت و المان‌هاي گرافيكي اون موجود باشه ميشه طراحي كرد.
  • tehran8361  - شبیه سازی مدار الکتریکی

    با سلام.من یک سوال دارم اگه لطف کنید کمکم کنید ممنون میشم.من این مدار الکتریکی با سیمولینک شبیه سازی کردم .بدون نوشتن
    continuous powergui
    جواب نمیده و خطا میده.میشه علتشو بهم بگین؟و اینکه برای شبیه سازی مدارات الکتریکی آیا این روش مناسب است که همینطور مثل این مدل مدار را با مقاومت و...رسم کنیم و یا باید از راههای دیگه مثل بلوکهای جمع و ...استفاده کنیم؟
    خواهش میکنم پاسخ دهید.با تشکر فراوان.منتظر جوابتون هستم.حیاتیه
    اگه به ایمیلم جواب بدین بینهایت ممنون میشم
  • moj1001
    سلام
    بهتره براي شبيه‌سازي مدارهاي الكتريكي از نرم‌افزارهاي تخصصي استفاده كنيد چون simpowersystems محدوديت‌هايي داره و بيشتر براي شبيه‌سازي مدارهاي الكترونيك صنعتي و سيستم‌هاي قدرت به كار مي‌ره به‌هرحال بله دليل خطا هم استفاده نكردن از powergui هست.
  • mohammad  - sepasgozary
    agha daste golet dard nakone vaghean mamnoon man kheili gir dashtam to namayesh hasel ke ba komake shoma bartaraf shod sepas gozaram bedrood
  • bidel  - درخواست
    سلام.من میخواستم در خروجی m-file وقتی که اعداد رو بصورت fprintf نمایش داده شده اند. بصورت رنگی مشاهده کنم.؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    با تشکر
  • آرش كمانگير
    با سلام، من يك GUI نوشتم اين GUI‌ وقتي run مي شود دو تا شكل را از جايي مي خواند و در دو axes1 و axes2 قرار داده و نمايش مي دهد.لازم به ذكر است كه tag هاي هر يك از دو axes ها هم متناظر با نام آنها انتخاب شده است. ولي وقتي يكبار آن GUI را مي بندم و مجددا آنها را Open مي كنم در layout آن gui نام tag‌ها در axes ها حذف مي شود. دليل آنرا نمي دانم اين كار باعث مي شود كه Callback ‌هاي اشاره شده به آن دو axes‌ در دفعه دوم error بدهد مشكلم را چگونه مي توانيد رفع نماييد؟.ضمن اينكه تا زمانيكه آنرا را نبستم برنامه ام درست كار مي كند.با تشكر از جوابتون
  • moj1001
    سلام
    برنامت رو سيو كردي؟
  • آرش كمانگير
    آره سيوش كردم؟متوجه منظورم شدي؟
  • moj1001
    دقيقا نه؟
    نمي‌دونم اين مشكل از كجاست
    آپلودش كن يه نگا بش بندازم
  • آرش كمانگير
    تونستم مشككلش رو بفهمم و حلش كردم ربطي به سيو كردن نداشت احتمالا يكي از باگهاي متلبه با اين حال از سايتت ممنونم
  • مهدی
    سلام مهندس - من می خوام یک m-file رو توی یک یلوک که خودم ساختم فرار خوانی کنم- چطور می شه این کار رو کرد؟ دستور m-fill رو هم نوشتم
    mehdiravanbod@gmail.com
  • مصطفي  - فراخواني مدل هاي ساخته شده در hypermesh يا نرم افز
    با سلام
    مي خواستم بدونم آيا ميشه يك مدل ساخته شده كه mesh بندي شده رو تو مطلب فراخواني كرد و در كد نوشته شده از آن استفاده كرد؟
    منظورم استفاده از مدل دي كد fem هستش؟
  • moj1001
    سلام
    منظورت رو نگرفتم!
  • حسین  - سپاسگزاری
    مرسی مرسی:) خیلی عالی بود

    ایجاد سایتی با این نام و قرار دادن مطالبی به این ارزشمندی واقعا جای افتخار داره:)

    بینهایت سپاسگزارم
  • amir  - اشکال
    سلام
    من نمتوانم کالبکهای رادیو باتن ها را بدست اورم
    برنامه اروری مدهد و میگوید
    چون درون گروپ باتن هستند رادیو باتن ها
    شما نمیتوانید برای تک تک انها کالبک تعریف کنید
    لطفا مفصل جواب دهید
    ضمنا ورژن 2010 استفاده میکنم
    با تشکر
  • moj1001
    سلام
    من این برنامه رو با ورژن 2008 نوشتم و بعید می دونم در 2010 مشکل داشته باشه! متاسفانه من الان دسترسی به متلب ندارم که کاملتر جوابت رو بدم. بهرحال پیشنهادی که دارم برات اینه که بصورت دستی کدها رو درون کالبکها قرار بدی.
  • amirxxx  - اشکال
    در این مورد ارور میگه که باید از
    change selection fcn
    خود group button
    استفاده شود
    یکم راهنممایی کنید
    با تشکر
  • عابدی  - نمایش داده های خروجی در workspace
    سلام ممنون از اطلاعات مفیدتون . چطور میشه بعداز اجرای یک GUI داده ها رو در workspace داشت منظورم مقدار عددیشونه لطفا جوابو به ایمیلم هر چه زودتر بفرستید خیلی لازمش دارم ممنون
  • moj1001
    سلام
    روش مستقیمی سراغ ندارم اما می تونی داده های مورد نظرت رو ذخیره کنی و بعد در فضای کاری متلب بازیابی کنی.
  • ناشناس
    برنامه ایکه دراین صفحه نوشتید کل error داره!!!! :!:
  • ناشناس
    داخل یک لینک شما برنامه کامل رو گذاشتین ولی من همونو اجرا می کنم کلی error می ده :!:
  • moj1001
    ok
    اون برنامه مال من نیست و اگه نظرات مربوط به اون رو خونده باشی می بینی که کلا جریان دیگری داره!
    من قصد نداشتم برنامه خودم رو بزارم و ظاهراً دوستان در نوشتن و اجرای برنامه به مشکل برخورده اند برای همین برای اولین بار اصل برنامه رو جهت استفاده دوستان میزارم:

    http://s1.picofile.com/file/7338598816/calcu.rar.html
  • عاطفه
    با سلام
    تمام مراحل که اینجا اومده رو انجام دادم و حتی فایلی که شما قرار دادین رو هم اجرا کردم فقط خطا می ده که مشکلش نمی دونم کجاست
  • ناشناس
    ??? Reference to non-existent field 'x_edit'.

    Error in ==> calculator>diff_radiobutton_Callback at 170
    x=get(handles.x_edit,'String');

    Error in ==> gui_mainfcn at 96
    feval(varargin{:});

    Error in ==> calculator at 42
    gui_mainfcn(gui_State, varargin{:});

    Error in ==>
    @(hObject,eventdata)calculator('diff_radiobutton_Callback',hObject ,eventdata,guidata(hObject))


    ??? Error while evaluating uicontrol Callback
  • ناشناس
    سلام
    همون برنامه هم error می ده
    خیلی رو اعصابه
    کد من مثل یک ماشینحساب عمل می کنه
    اگه مشکل این حل بشه اون رو هم می تونم درست کنم
    با تشکر
  • moj1001
    سلام
    همون کدوم برنامه ارور می ده؟
    برنامه من! :!: جل الخالق! :!:
    چه اروری می ده؟ مطمئنی gui رو می تونی ران کنی؟
  • عاطفه
    فایل رو دریافت کردم
    متشکرم
  • amgh  - تولباکس فازی متلب
    با سلام
    اگه بخواهیم در قسمت fis متلب از دستور
    if(X1
  • moj1001
    سلام
    منظورت رو متوجه نشدم.
  • sam
    سلام برای فراخوانی اطلاعاتی که از طریق پورت سریال به pc فرستادم و در guiمیخوام استفاده کنم چه دستوری بکار میره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
  • moj1001
    سلام
    از fscanf می تونی استفاده کنی.
  • هادی
    سلام خیلی ممنون از آموزش هاتون
    می خواستم چطوری میشه خروجی برنامم که یه ماتریس هستش تو gui به صورت یک جدول بیارم.
  • sadegh  - linke GUI
    salam mohandes khaste nabashid az site besiyar khobeton mamnoonam va ishala payedar bashi. ye soal daram age komakam koni ye donya mamnoonet misham. man chndta GUI neveshtam ke ba yek push botton be ham link mishan vali vaghti az ye GUI be GUI badi miram moteghayerhaye GUI ghabli dar badi ghabele shenasayi nist che konam bajori gir kardam. man.m montazere pasokhetam. pishaoish mamnoonam.
  • moj1001
    سلام دوست عزیز
    این چند تا gui رو درون یک m-file نوشتی؟
    اگه آره که مشکلی نداری و میتونی متغییرها رو از یک کالبک به کالبک دیگه انتقال بدی.
    اگه نه بیشتر توضیح بده چه کار کردی.
  • sadegh  - GUI link
    mohandes momnoon az inke be in sorat pasokh dadin. har GUI m- -file khodesho dare. vali hamashono dakhele yek poshe gozashtam masalan yek GUI ba name test1 daram ba m-file khodesh va yek GUI ba name test2 va m-file khodesh toye push button ke roye test1 hastesh dakhele clbackesh neveshtam guidata(test2) ke vaghti ono click mikoni mire be gui test2 vali motegheyerhaye tarif shode dar test1 ro nemishnase. masalan age ye edit text ba tage khase khodesh toye test 1 bashe vaghti vaghti dar teste 2 hamon tag farakhani beshe ghabele shenasayi nistesh. az inke vaght mizari besiyar sepasgozaram khodayi kam peyda mishe hamchin afradi. az inke jomle nevisimam chandan jaleb nist pozesh mitalabam. ba arzoye behtarinha baraye shoma.
  • عاطفه
    سلام من یک معادله با دستور solve حل کردم 6 تا جواب دارد حالا باید این معادله این 6 جواب به یک فرمول بدهیم این رو برای مطلب به چه صورت تعریف کنیم ؟
  • moj1001
    سلام
    منظورت رو نگرفتم کامل توضیح بدی میخای چکار کنی.
  • sadegh
    salam mojadad mohandes bebakhshid az inke man dam be daghighe miyam comment mizaram chon bi sabrane montazere rahnemayiton hastam.bajori karam gir karde .
  • moj1001
    سلام آقاصادق
    با guidata فکر نکنم بتونی بین دو تا gui انتقال داده بدی. تا جایی که میدونم برای انتقال داده بین فانکشنهای مختلف درون یک gui به کار میره!
    به هر ترتیب شاید هم بشه تو هلپ متلب سرچ کن ببین چی دستگیرت میشه. ضمنا فکر کنم بتونی با ذخیره کرده دیتا با دستور save و بازیابی اونها با load انتقال داده بدی.
  • صادق  - gui link
    سلام مجدد مهندس مهندس. از راهنمایی های گذشته هم ممنونم. مهندس من طبق گفته خودتون از دستور save وload استفاده کردم وجواب داد ولی وقتی برنامه رو در نهایت به یک فایل exe تبدیل میکنم که در محیط ویندوز هم راه اندازی شه اونجا برنامه انجام میشه ولی متغیرهای که من داخخل یک فایل mat سیو کردم ثابت میمونن و اگه توی gui اول تغییرشون بدم در gui بعدی مقدارشون همون میمونه که قبل از exe شدن برنامه بود . چه میشه کرد؟؟؟؟؟؟
  • moj1001
    سلام
    ببین gui اولی اصلاً فایل mat رو برات درست میکنه یا نه؟
  • اتی  - فوری
    سلام خسته نباشید من در gui یک معادله نوشتم که ان با توجه به ورودی ها حل کند و در خروجی نشان دهد ولی هنگام run کردن eroor زیر می دهد
    ??? Error using ==> mpower
    Matrix must be square.

    Error in ==> text9>rcparl_radiobutton_Callback at 220
    x=[num2str(-rt/r),'+n^2+',num2str((2*f*3.1414*L/r)^2),'*(((1/(1+',num2 str(ka^2),'*((((n-2))/2)+',num2str(1/ka),'*((sqrt((((2-n)^2)/4)+n-1))) ))-1/n))^2)','=0'];

    Error in ==> gui_mainfcn at 75
    feval(varargin{:});

    Error in ==> text9 at 44
    gui_mainfcn(gui_State, varargin{:});

    ??? Error while evaluating uicontrol Callback.


    کد برنامه این
    r=get(handles.r_edit,'String');
    b=get(handles.b_edit,'String');
    f=get(handles.f_edit,'String');
    rt=get(handles.rt_edit,'String');
    ka=get(handles.ka_edit,'String');
    L=get(handles.L_edit,'String');
    r=str2num(r);
    b=str2num(b);
    f=str2num(f);
    rt=str2num(rt);
    w=2*pi*f;
    x=[num2str(-rt/r),'+n^2+',num2str((2*f*3.1414*L/r)^2),'*(((1/(1+',num2 str(ka^2),'*((((n-2))/2)+',num2str(1/ka),'*((sqrt((((2-n)^2)/4)+n-1))...
  • moj1001
    سلام - ممنون
    ماتریسی که در دستور mpower به کار می بری باید مربعی باشه.
  • اتی
    سلام. معادله بالا در m.file ساده جواب می دهد.ولی در gui این eror ها می دهد گاهی این erorمی دهد.

    Matrix must be square.
    ورودی که ما به این معادله می دهیم r,rt,b,ka,L,f
    برحسب n حل می کند .حالا این که شما می گید یک ماتریس عیر مربعی به توان 2 می رساند ومن برای رفع مشکل باید چه کار کنم
    با تشکر از کمک های قبلی

  • اتی
    ماتریس mpowerکدام دستور برنامه من میشود؟
  • moj1001
    اگه این دستور رو به کار نگرفتی احتمالاً ماتریس غیرمربعی رو به توان رسوندی!
  • moj1001
    سلام
    دوست عزیز من نمی دونم برنامت رو براساس چه الگوریتمی نوشتی! برا همین تنها کمکی که می تونم بهت بکنم اینکه که متغییرهایی رو که به توان می رسند رو پیدا کنی و ببینی که آیا ماتریسی غیرمربعی در اونها هست یا نه؟
  • sadegh  - swf
    salam.
    baraye gharar dadane yek tasvire SWF dar ye ghesmat az GUI chikar bayad kard?????
    albate mikham tasvir be sorate sabet dar hamonja bashe.
    albate tasvir yek matne ke besorate flash hastesh aya khode matlab mitone chonin tasviri ham ijad kone> pishapish mamnoonam..
  • moj1001
    سلام
    نمی دونم که SWF پشتیبانی میشه یا نه؟
  • sadegh  - tasvir
    salam mojadad.
    betore koli age bekham ye tasvir masalan axe khodamo hala ba har formati dakhele panjere GUI namayesh bedam bayad chikar konam.
  • اتی
    سلام من پروژه به طور کامل برای شما ایمیل کردم لطفا به آن نگاه کنید و بگید اشکال برنامه من کجاست که این ارور می دهد
    با تشکر از پاسخ های قبلی شما
  • moj1001
    سلام
    چیزی ارسال نشده!
  • اتی  - re:
    سلام من به این mathworks.ir@gmail.com ایمیل زدم اشتباه! یا ادرس دیگه است لطفا آن بدهید
  • sofi  - Password
    salam az site khbeton sepasgozaram.
    mikhastam bedonam chetori mishe baraye ye gui pasword gozasht be tori ke ghabla az zadane password on gui ke shamele chandin push button hast ; push buttonha khamosh bashan va bad az zadane paswoord roshan shan va text edite marbot be pasword va posh buttonesh khamosh shan.
    mer30
  • moj1001
    سلام
    اطلاعی در این مورد ندارم.
  • ناشناس
    سلام براتون میل کردم پروژم
  • mahla
    با سلام
    من هم موقع فراخوانی callback مربوط به radiobutton ها با خطای
    selection change fcn callback مواجه میشم.باید چی کارکنم؟یکی از دوستان فرمودند اول radio button باید انتخاب بشه بعد button group این یعنی چی؟
  • moj1001
    سلام
    تو نظرات قبلی به این موضوع اشاره شده.
  • moj1001
    سلام بر دوستان
    ظاهراً از ورژن R2008b به بعد نحوه نوشتن کالبک Radio Button‌هاي گروهي فرق کرده است و کالبک آنها از طریق SelectionChangeFcn مدیریت میشه!
    برای اطلاعات بیشتر به هلپ متلب مراجعه کنید اگر هم اشکالی داشتید در بخش نظرات سوالتون رو وارد کنید.
    موفق باشید.
  • reza.k.m.61
    سلام
    میخواستم بدونم چطوری میشه ارتباط بین gui ی که طراحی کردیم و کد هایی که در m نوشتیم رو برقرار کرد؟
    ممنون از سایت عالیتون
  • moj1001
    سلام
    منظورتون رو از ارتباط متوجه نمی شم!
    هر gui تشکیل شده از یک figure که اشیای گرافیکی gui در اون قرار دارند و یک m-file که کدهای مربوط به اشیای گرافیکی در آن نوشته شده اند.
  • حسین طیبی  - تشکر
    سلام
    از این مطالبتون بسیار ممنونم
نوشتن نظر
Your Contact Details:
نظر:
[b] [i] [u] [url] [quote] [code] [img]   
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
Security
کد آنتی اسپم نمایش داده شده در عکس را وارد کنید.
آخرین بروز رسانی در جمعه, 01 اردیبهشت 1391 ساعت 19:56