آموزش برازش منحنی 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

  • نوامبر 20, 2016 در t 3:03 ب.ظ
    Permalink

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

    پاسخ دادن
    • دسامبر 7, 2016 در t 11:20 ق.ظ
      Permalink

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

      پاسخ دادن
  • دسامبر 24, 2016 در t 3:30 ق.ظ
    Permalink

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

    پاسخ دادن
    • ژانویه 26, 2017 در t 12:29 ب.ظ
      Permalink

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

      پاسخ دادن
  • ژانویه 22, 2017 در t 5:42 ب.ظ
    Permalink

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

    پاسخ دادن
    • ژانویه 26, 2017 در t 12:16 ب.ظ
      Permalink

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

      پاسخ دادن
  • فوریه 6, 2017 در t 1:41 ق.ظ
    Permalink

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

    پاسخ دادن
  • اکتبر 26, 2017 در t 9:45 ق.ظ
    Permalink

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

    پاسخ دادن
    • اکتبر 29, 2017 در t 1:36 ق.ظ
      Permalink

      با استفاده از دستور hold on میتونید دو یا چند نمودرا مجزا را روی هم بندازید.

      پاسخ دادن
  • نوامبر 11, 2017 در t 3:06 ب.ظ
    Permalink

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

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

    پاسخ دادن
    • ژانویه 2, 2018 در t 9:36 ب.ظ
      Permalink

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

      پاسخ دادن
  • ژانویه 4, 2018 در t 1:16 ب.ظ
    Permalink

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

    پاسخ دادن
    • ژوئن 10, 2018 در t 9:26 ق.ظ
      Permalink

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

      پاسخ دادن
  • ژانویه 14, 2018 در t 7:34 ب.ظ
    Permalink

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

    پاسخ دادن
  • ژانویه 16, 2018 در t 9:30 ب.ظ
    Permalink

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

    پاسخ دادن
  • ژانویه 20, 2018 در t 1:48 ب.ظ
    Permalink

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

    پاسخ دادن
    • ژوئن 10, 2018 در t 9:25 ق.ظ
      Permalink

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

      پاسخ دادن
  • ژانویه 30, 2018 در t 8:02 ب.ظ
    Permalink

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

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

    پاسخ دادن
    • ژوئن 10, 2018 در t 9:22 ق.ظ
      Permalink

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

      پاسخ دادن
  • فوریه 28, 2018 در t 4:55 ب.ظ
    Permalink

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

    پاسخ دادن
    • ژوئن 10, 2018 در t 9:14 ق.ظ
      Permalink

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

      پاسخ دادن
  • آوریل 20, 2018 در t 9:07 ب.ظ
    Permalink

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

    پاسخ دادن
    • ژوئن 10, 2018 در t 9:11 ق.ظ
      Permalink

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

      پاسخ دادن
  • ژوئن 10, 2018 در t 2:11 ب.ظ
    Permalink

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

    پاسخ دادن
  • ژوئن 15, 2018 در t 11:20 ق.ظ
    Permalink

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

    پاسخ دادن
  • آگوست 5, 2018 در t 5:12 ب.ظ
    Permalink

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

    پاسخ دادن
  • دسامبر 10, 2018 در t 1:26 ق.ظ
    Permalink

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

    پاسخ دادن
  • فوریه 26, 2019 در t 2:35 ب.ظ
    Permalink

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

    پاسخ دادن
  • فوریه 26, 2019 در t 2:36 ب.ظ
    Permalink

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

    پاسخ دادن

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

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