آموزش نرم افزارهای مهندسی مکانیک و کنترل

آموزش های ارائه شده توسط محسن رضایی (دکتری مکانیک، مشاورصنعتی و طراح ماشین آلات، مکانیزم ها و سازهای مکانیکی)

برنامه نویسی و محاسباتنرم افزار متلب

آموزش برازش منحنی Curve fitting درنرم افزار MATLAB _ قسمت دوم تولباکس cftool

درmain_1 پست قبل به صورت ساده برازش منحنی با استفاده از یک دستور نرم افزار MATLAB آموزش داده شد. در این قسمت آموزش جامع تری از برازش منحنی قرار داده خواهد شد. از آنجایی که برازش منحنی یک روش بسیار جامع است و در تمام رشته های مهندسی و علوم مورد استفاده قرار میگیرد لذا در این آموزش ما برازش منحنی را از ابتدا و با فرض اینکه داده ها در نرم افزار Excell وجود دارند شروع میکنیم. بدین صورت که ابتدا داده ها وارد نرم افزار MATLAB شده و سپس با استفاده از تولباکس cftool به برازش منحنی پرداخته می شود. برای آموزش کامل لطف کنید مرحله به مرحله با روند آموزش جلو روید. برای مشاهده ی آموزش به ادامه ی مطلب مراجعه نمایید.

 

 در صورت داشتن هرگونه سوال، لطف کنید سوالاتتون رو در قسمت نظرات مطرح کنید. و در صورت داشتن پروژه در خصوص نرم افزار MATLAB و مهندسی مکانیک ، کنترل، محاسبات عددی، SIMULINK، SimMechanics میتوانید از طریق ایمیل و تلفن در قسمت تماس با ما، ارتباط برقرارکنید.

 

در پست قبل به صورت ساده برازش منحنی با استفاده از یک دستور نرم افزار MATLAB آموزش داده شد. در این قسمت آموزش جامع تری از برازش منحنی قرار داده خواهد شد. از آنجایی که برازش منحنی یک روش بسیار جامع است و در تمام رشته های مهندسی و علوم مورد استفاده قرار میگیرد لذا در این آموزش ما برازش منحنی را از ابتدا و با فرض اینکه داده ها در نرم افزار Excell وجود دارند شروع میکنیم. بدین صورت که ابتدا داده ها وارد نرم افزار MATLAB شده و سپس با استفاده از تولباکس cftool به برازش منحنی پرداخته می شود. برای آموزش کامل لطف کنید مرحله به مرحله با روند آموزش جلو روید. و با مطالعه ی هر شماره آن را در عکس ها نیز مشاده نمایید.

1- در ابتدا مانند شکل زیر داده های مورد نظر خود را در نرم افزار اکسل وارد کنید. و آن را به نام دلخواهی ذخیره نمایید.

2- پس از آن در نرم افزار MATLAB با استفاده از گزینه ی Import Data فایل اکسل ذخیره شده را فراخوانی و کنید.

3- پس از آن با استفاده از گزینه ی Import Selection داده ها در نرم افزار MATLAB ذخیره می شوند.

4- برای ملاحظه ی داده ها میتوانید از قسمت Workspace داده ها را ملاحظه نمایید.

نکته: میتوانستید بدون وارد کردن داده ها از نرم افزار اکسل مستقیما داده ها را به صورت های مختلف در نرم افزار MATLAB ایجاد کنید. که یکی از روشها را به صورت زیر است . برای ملاحظه ی سایر روشهای ساخت بردادها و داده ها پست 45 ببینید.

x_data=[0  1  2   3   4   5   6   7   8   9  10];
y_data=[0 14 52 108 176 250 324 392 448 486 500];

cftool_1_1

5- پس از وارد کردن داده ها در Workspace نرم افزار متلب به روشهای فوق نوبت به وارد شدن که تولباکس برازش منحنی است که برای این کار کافی است در پنجره ی دستورات نرم افزار MATLAB دستور cftool را وارد کنید.

>>cftool

6- نام دلخواهی را برای آن انتخاب کنید.

7- پنجره ی برازش منحنی مانند شکل زیر ایجاد میشود. در قسمت داده های مربوط به محور x داده های مربوط به آن را x_data انتخاب شود.

8- در قسمت مربوط به داده های محور y داده های مربوط به آن را y_data انتخاب نمایید. البته این نکته را هم خاطر نشان کنم که میتوان داده های قسمت z را هم برای برازش سطوح استفاده کرد که ما در اینجا تنها به برازش منحنی پرداخته ایم.

9- در این قسمت میتوان نوع برازش منحنی را انتخاب کرد. با انتخاب هر کدام از روش ها یک سری ضرایب ثابتی دارند که میتوان ضرایب ثابت را در قسمت نتایج ملاحظه کرد. انواع توابعی که تولباکس قادر به برازش هست به صورت زیر است.

  • تابع فوریع     Fourier
    که در قسمت Number  of term میتوان مرتبه ی سری فوریه را مشخص کرد. برای مثال اگر مرتبه ی سری فوریه را 1 در نظر بگیرید . در قسمت Result سه ثابت a0,a1,b1 را به شما میدهد. و اگر بخواهید مرتبه ی سری فوریه را 8 بگیرید در قسمت نتایج ثابت a0 و ثابت های a1تا a8 و همچنین از b1 تا b8 در مجموع تولباس هفده پارمتر را تعیین میکند.
  • تابع گوسین     Gaussian
    مانند تابع فوریه نیز تابع گوسین شکل خاص خود را و همچنین در قسمت تعداد ترم ها مرتبه های متفاوت از یک تا هشت دارد.
  • تابع اینترپولنت  Interpolant
    ساده ترین نوع برازش منحنی است و انواع مختلفی دارد . که در قسمت Method میتوان آنها را ملاحظه کرد اما از همه ی روشها مهمتر روش Liner و Cubic است که یکی بین نقاط را با یک تابع خطی به هم وصل میکند. به عبارتی هرچقدر تعداد نقطه ها بیشتر باشد تعداد پارمترهای این روش هم زیاد میشود. مثلا برای برازش نوع خطی برای ده داده باید ده معادله و ده مجهول داشته باشید. در ضمن ممکن است برازش انجام شده طوری باشد که فقط نقاط را در برگیرد و مسیر مناسبی را در بر نگیرد.
  • روش تابع توان   Power
  • روش دوران  Rotational
  • روش اسپلاین هموار Smothing Spline
  • روش Sum of Sine
    این روش روشی جامع تر از روش فوریه است.
  • روش چند جمله ای Polynomial
    این روش هم یک از روشهای روتین هست که برای توابع و ساختارهای خاص جواب های خوبی میدهد. به دلیل اینکه در پست قبل ما برازش را با این روش انجام داده ایم و برای چک کردن پاسخ ها با شکل قبل ما از روش چند جمله ای استفاده میکنیم و در قسمت مربوط به درجه باید درجه ی چند جمله ای را قرار داد. که ما دراینجا درجه ی چند جمله ای را 3 قرا میدهیم .

10- در قسمت نتایج Result میتوانید ساختار تابع و ضرایب را ملاحظه نمایید.

11- در قسمت شکل هم میتوان شکل نمودار برازش شده را ملاظه نمایید.

12- برای استخراج کد مروبوطه هم میتوان در قسمت

File>>Generate Code

میتوان کد مروبط به تولباکس را استخراج کرد. سپس با نام دلخواهی ذخیره کرد. مثلا با نام createFit ذخیره کنید .

13 – سپس با دستور زیر تابع فراخواهی شود

createFit(x_data, y_data)

14- پس از وارد کردن دستور میتوان تابع برازش شده ره به صورت شکل و به همراه ضرایب مشاهده کرد.

 

cftool_2_2

در صورت داشتن هرگونه سوال، لطف کنید سوالاتتون رو در قسمت نظرات مطرح کنید. و در صورت داشتن پروژه در خصوص نرم افزار MATLAB و مهندسی مکانیک ، کنترل، محاسبات عددی، SIMULINK، SimMechanics میتوانید از طریق ایمیل و تلفن در قسمت تماس با ما، ارتباط برقرارکنید.

محسن رضایی

دکتری مهندسی مکانیک گرایش دینامیک کنترل و ارتعاشات دانشگاه شیراز زمینه های تحقیقاتی: دینامیک، کنترل، ارتعاشات، دینامیک پرواز، دینامیک خودرو، آیروالاستیسته، بهینه سازی زمینه های کاری صنعتی: طراحی مکانیزم های خطوط تولید،طراحی جرثقیل ها،طراحی ماشین الات صنعتی،بررسی عیوب و بهینه سازی ماشین الات صنعتی نرم افزارهای مسلط: متلب-سیمولینک- سیم مکانیک-انسیس - انسیس ورکبنچ-آدامز-سالیدورکس-آباکوس تلفن تماس: 09369074440 ایمیل : mechanic.soft[at]yahoo.com , info[at]mechanicsoft.ir نوشته‌های تازه

30 thoughts on “آموزش برازش منحنی Curve fitting درنرم افزار MATLAB _ قسمت دوم تولباکس cftool

  • نیرومند

    سلام
    اولا ممنون بابت توضیحات خیلی خوب شما
    دوما یک سوال داشتم ، چگونه میتوانیم اون شکل آخر رو که رسم میکینیم تابع رو هم روی شکل نشان بده ، برای کار های تحقیقاتی لازم است که تابع رو هم نشون بده؟؟
    با تشکر

    پاسخ دادن
    • سلام مرسی
      شما میتونید داده ها رو استخراج کنید و هر شکل دلخواهی رو توی متلب plot کنید

      پاسخ دادن
  • محمدرضا

    با سلام و خسته نباشید…
    سوالی داشتم.. اینکه زمانیکه ما interpolant را انتخاب میکنیم، چطور میتونیم مثل بقیه روش ها معادله و ضرایب رو ببینیم؟
    الان برای من معادله و ضرایب این پیامها رو داده:
    Cubic spline interpolant:
    f(x) = piecewise polynomial computed from p
    Coefficients:
    p = coefficient structure

    پاسخ دادن
    • این ضرایب توی تولباکس مشخص هستن و در پست هم من نحوه دیدن ضرایب رو نشون دادم.
      موفق باشید.

      پاسخ دادن
  • مرجان

    با سلام وقتی داده های x و y را داریم چطوری میتوان تابع گاما را روی داده ها برازش داد و پارامترهای توزیع را با روش mle براورد کرد؟
    با تشکر فراوان

    پاسخ دادن
    • لطف کنید پست قبلی مربوط به برازش منحنی در نرم افزار متلب قسمت اول رو مطالعه بفرمایید.

      پاسخ دادن
  • مهدی

    با سلام .
    بنده کاربرد این موارد پایین صفحه و این که چه چیزی را نشان می دهند برایم سوال است.مثل:
    SSE,R-quare,DFE,RMSE
    و همچنین center and scale که می توان تیک گذاشت یا برداشت چه کاربردی دارد.
    و همچنین کاربرد weights در سمت چپ
    باتشکر

    پاسخ دادن
  • ميرزائي

    با سلام ممنون از توضيحات كاملتون
    ما اگه بخوايم دوتا نمودار رو ،رو هم بندازيم چيكار بايد بكنيم؟يعني دو تا x و دو تا y داشته باشيم با دو تا نمودار در يك شكل

    پاسخ دادن
  • علی

    سلام
    من یک معادله exp دارم و میخوام باهاش fit انجام بدم اما همیشه خطای زیر رو میده!باید چیکار کنم؟؟؟

    Inf computed by model function, fitting cannot continue.
    Try using or tightening upper and lower bounds on coefficients.

    پاسخ دادن
    • خوب احتمالا تابع ها نمیتونند داده هاتون رو برازش کنند. اگه پراکندگی داده ها زیاد باشه و رفتار غیرخطیش خیلی غیرقابل پیش بینی باشه ممکنه نشه داده ها رو برازش کرد.
      در این حالت اگه تعداد دادهاتون زیاد باشه میتونید از شبکه عصبی استفاده کنید.

      پاسخ دادن
  • مرتضی

    Ignoring NaNs in data.
    این خطا یا تذکر نرم افزار متلب مربوط به چیست ؟

    پاسخ دادن
    • برخی از داده هایی که دارید وارد میکنید تعریف نشده هستند. مثلا زمانی که شما یک رو بر صفر هم تقسیم میکنید نوع داده اینطوریه. یا لگاریتم یک عدد منفی رو میگیرد.

      پاسخ دادن
  • کیوان

    سلام با تشکر از آموزش خوبتان
    می خواهم به نمودار دلخواهی گوسین فیت کنم اما نباید مثلا a1 و b1 و c1 از هم مستقل باشند بلکه توسط تابعی به هم مرتبط اند آیا امکان این نوع فیت کردن در متلب وجود دارد؟ در حقیقت درجه آزادی متلب فقط در ست کردن ai هاست و بقیه bi و ci توسط تابعی بدست می آیند. امکان این کار در نرم افزار های دیگه هست؟ با نهایت سپاس

    پاسخ دادن
  • Sama

    سلام
    ممنون بابت توضیحات خوب شما
    چطور میشود تعداد ضرایب به دست آمده را بیش تر کرد مثلا در تقریب زدن به وسیله ی سری فوریه تعداد ضرایب بیش تر از ۸ و با انتخاب کاربر باشد؟

    پاسخ دادن
  • مهدی

    سلام دوست عزیز. ممنون از مطالب مفیدتون.
    من یه سری داده دارم که با این روش فیت کردم. چطور مییتونم به داده های نمودار فیت شده دسترسی پیدا کنم؟ من دو دسته داده تجربی دارم که میخوام هردو رو فیت کنم و بعد به پیک نمودارهای فیت شده نرمالیزه کنم و با هم توی یه شکل رسمشون کنم و پیک ها رو مقایسه کنم. فکر کنم برای این کار باید داده های دوتا نمودار فیت شده رو داشته باشم.
    ممنون میشم اگه راهنمایی کنید

    پاسخ دادن
    • نرم افزار به شما تابع فیت شده میده و شما میتونید از تابع دیتاها رو استخراج و ترسیم کنید.

      پاسخ دادن
  • آزاده خدیوی

    سلام این چه اروریه که هر چی میزنم نمیشه . قبلا میشد

    Error in curvefit.listener>iJavaCallback/evalCallback (line 63)
    originalCallback(src, evt.JavaEvent);

    پاسخ دادن
    • سلام فکر میکنم اشکال از تولباکس یا بسته ی متلب هستش میتونید بسته ی برازش منحنی رو مجددا نصب کنید.

      پاسخ دادن
  • رضا

    سلام خسته نباشید من میخوام برازش رو برای حجم استفاده کنم میشه راهنمایی کنید ممنون

    پاسخ دادن
    • متن با این تولباکس برازش حجم انجام ندادم و نمیدونم امکان پذیر باشه یا نه، اما به راحتی میتونید در متلب کد نویسی کنید.

      پاسخ دادن
  • علی

    سلام
    من یک سری نتایج آزمایشگاهی رو در اسکیل لگاریتمی رسم کردم اما وقتی دستور cftool رو وارد میکنم همون اسیکل معمولی رو برای برازش کردن نشون میده، چکار باید کرد؟ ممنون

    پاسخ دادن
    • شما میتونید ابتدا تبدیلش کنید به داده های معمولی، برازش و انجام بدین و بعد لگاریتمیش کنید.

      پاسخ دادن
  • اعظم

    سلام. ممنونم از مطالب خوبتون
    خیلی استفاده کردم

    پاسخ دادن
  • پروانه

    سلام خیلی ممنون از پست مفیدتون.
    من میخوام پارامترهای کارسختی رو از فرمول j2 استخراج کنم اما وقتی از نوع exponential استفاده میکنم اصلا روی داده هام فیت نمیشه.
    باید چکار کنم؟

    پاسخ دادن
  • شبنم

    سلام خسته نباشید.
    من هر داده ای رو وارد میکنم با این خطا روبرو میشم در قسمت results
    Ignoring NaNs in data.

    پاسخ دادن
  • امیر

    سلام جناب رضایی
    ممنون از مطالب مفیدتون
    یه سوال داشتم. من یک تابع کسری بصورت مجموع 20 جمله تحت سیگما دارم (یک سری جمع) که هر جمله دارای دو مجهوله یعنی در مجموع 40 ضریب.
    حالا میخواستم این تابع رو به مجموعه ای از نقاط فیت کنم. راه حل کلی رو میفرمایید.
    سپاسگزارم

    پاسخ دادن
  • نادری

    سلام . اگه نمودارها با اکسل لگاریتمی رسم شده باشند، چه کار باید کرد؟؟؟

    پاسخ دادن
  • نادری

    سلام . اگه نمودارها در scale لگاریتمی رسم شده باشند، چه کار باید کرد؟؟؟

    پاسخ دادن

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *