آموزش برازش منحنی Curve fitting درنرم افزار MATLAB _ قسمت دوم تولباکس cftool
در پست قبل به صورت ساده برازش منحنی با استفاده از یک دستور نرم افزار 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];
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- پس از وارد کردن دستور میتوان تابع برازش شده ره به صورت شکل و به همراه ضرایب مشاهده کرد.
در صورت داشتن هرگونه سوال، لطف کنید سوالاتتون رو در قسمت نظرات مطرح کنید. و در صورت داشتن پروژه در خصوص نرم افزار MATLAB و مهندسی مکانیک ، کنترل، محاسبات عددی، SIMULINK، SimMechanics میتوانید از طریق ایمیل و تلفن در قسمت تماس با ما، ارتباط برقرارکنید.
سلام
اولا ممنون بابت توضیحات خیلی خوب شما
دوما یک سوال داشتم ، چگونه میتوانیم اون شکل آخر رو که رسم میکینیم تابع رو هم روی شکل نشان بده ، برای کار های تحقیقاتی لازم است که تابع رو هم نشون بده؟؟
با تشکر
سلام مرسی
شما میتونید داده ها رو استخراج کنید و هر شکل دلخواهی رو توی متلب 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 داشته باشيم با دو تا نمودار در يك شكل
با استفاده از دستور hold on میتونید دو یا چند نمودرا مجزا را روی هم بندازید.
سلام
من یک معادله 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 توسط تابعی بدست می آیند. امکان این کار در نرم افزار های دیگه هست؟ با نهایت سپاس
سلام
ممنون بابت توضیحات خوب شما
چطور میشود تعداد ضرایب به دست آمده را بیش تر کرد مثلا در تقریب زدن به وسیله ی سری فوریه تعداد ضرایب بیش تر از ۸ و با انتخاب کاربر باشد؟
سلام دوست عزیز. ممنون از مطالب مفیدتون.
من یه سری داده دارم که با این روش فیت کردم. چطور مییتونم به داده های نمودار فیت شده دسترسی پیدا کنم؟ من دو دسته داده تجربی دارم که میخوام هردو رو فیت کنم و بعد به پیک نمودارهای فیت شده نرمالیزه کنم و با هم توی یه شکل رسمشون کنم و پیک ها رو مقایسه کنم. فکر کنم برای این کار باید داده های دوتا نمودار فیت شده رو داشته باشم.
ممنون میشم اگه راهنمایی کنید
نرم افزار به شما تابع فیت شده میده و شما میتونید از تابع دیتاها رو استخراج و ترسیم کنید.
سلام این چه اروریه که هر چی میزنم نمیشه . قبلا میشد
Error in curvefit.listener>iJavaCallback/evalCallback (line 63)
originalCallback(src, evt.JavaEvent);
سلام فکر میکنم اشکال از تولباکس یا بسته ی متلب هستش میتونید بسته ی برازش منحنی رو مجددا نصب کنید.
سلام خسته نباشید من میخوام برازش رو برای حجم استفاده کنم میشه راهنمایی کنید ممنون
متن با این تولباکس برازش حجم انجام ندادم و نمیدونم امکان پذیر باشه یا نه، اما به راحتی میتونید در متلب کد نویسی کنید.
سلام
من یک سری نتایج آزمایشگاهی رو در اسکیل لگاریتمی رسم کردم اما وقتی دستور cftool رو وارد میکنم همون اسیکل معمولی رو برای برازش کردن نشون میده، چکار باید کرد؟ ممنون
شما میتونید ابتدا تبدیلش کنید به داده های معمولی، برازش و انجام بدین و بعد لگاریتمیش کنید.
سلام. ممنونم از مطالب خوبتون
خیلی استفاده کردم
مرسی، ایشالا که مطالب مورد بدردتون خورده باشه.
سلام خیلی ممنون از پست مفیدتون.
من میخوام پارامترهای کارسختی رو از فرمول j2 استخراج کنم اما وقتی از نوع exponential استفاده میکنم اصلا روی داده هام فیت نمیشه.
باید چکار کنم؟
سلام خسته نباشید.
من هر داده ای رو وارد میکنم با این خطا روبرو میشم در قسمت results
Ignoring NaNs in data.
سلام جناب رضایی
ممنون از مطالب مفیدتون
یه سوال داشتم. من یک تابع کسری بصورت مجموع 20 جمله تحت سیگما دارم (یک سری جمع) که هر جمله دارای دو مجهوله یعنی در مجموع 40 ضریب.
حالا میخواستم این تابع رو به مجموعه ای از نقاط فیت کنم. راه حل کلی رو میفرمایید.
سپاسگزارم
سلام . اگه نمودارها با اکسل لگاریتمی رسم شده باشند، چه کار باید کرد؟؟؟
سلام . اگه نمودارها در scale لگاریتمی رسم شده باشند، چه کار باید کرد؟؟؟