آخرین اخبار پربازدیدترین ها
کد خبر: 27927
تعداد نظرات: ۹ نظر
۲۱:۳۳ ۲۰ /۰۹/ ۱۳۹۶

آموزش ‏Matlab - درون یابی و برون یابی

در این پست می خواهیم درون یابی و برون یابی با متلب رو آموزش دهیم.

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


          1200  5.0  0.25    1.1
data = 1400  4.1  0.23  0.8
          1500  3.2   0.22  0.3


فرض کنید که مثلا ستون اول این ماتریس نشان دهنده ارتفاع باشه، مثلا ستون دوم نشون دهنده دما باشه، ستون سوم معرف چگالی و ستون چهارم هم معرف فشار باشد.
پس با توجه به این تعریف می فهمیم که مثلا در ارتفاع 1200 ، دما برابر 5 و چگالی برابر 0.25 و فشار برابر 1.1 هستش. یا اینکه در جایی که فشار 0.8 هستش چگالی برابر 0.23 و یا در دمای 3.2 ارتفاع برابر 1500 می باشد.
الف- حالا فرض کنید یکی می پرسه تو ارتفاع 1420 مثلا دما چقدره؟
ب- یا اینکه مثلا اگه چگالی برابر 0.2315 باشه فشار چقدره؟
ج- یا اینکه اگه ارتفاع 1100 باشه دما چقدره؟ یا اینکه اگه ارتفاع 1600 باشه فشار چقدر میشه؟
در مورد الف و ب به خوبی مشخصه که باید درون یابی انجام بشه و در مورد ج به خوبی مشخصه که باید برون یابی انجام بشه.
حالا می خواهیم دستور درون یابی و برون یابی تو متلب رو توضیح بدیم.
دستور interp1 کار درون یابی و برون یابی تو متلب رو برای ما انجام میده.
دستور interp1 دارای سه ورودی می باشد:


interp1(A,B,C)

فرض کنید که می خواهیم الف را حل کنیم. در ارتفاع 1420 دما چقدر می باشد؟ پس ما با ارتفاع و دما کار داریم. C همان متغیر معلومه که ما داریم. اونم ارتفاع 1420 هستش. پس C برابر با 1420 هستش.
اما A و B دو دسته داده ای هستند که متلب قراره بر اساس مطابقت اونها با همدیگه درون یابی رو در C‌ انجام بده و جواب رو بده. برای اینکه راحتتر بتونید حفظ کنید به طور ساده اگه بخوام بگم باید بگم که جنسC و A باید یکی باشند. پس فهمیدیم که A هم باید از جنس ارتفاع باشد. اما B باید از چه جنسی باشد؟ از جنس مجهول که در اینجا مجهول مسئله دما می باشد.
حالا که فهمیدیم A باید داده های ارتفاع و B باید داده های دما باشند به ماتریس داده هامون بر میگردیم. کدام ستون معرف داده های ارتفاع بود؟ ستون اول ماتریس. پس A همان ستون اول ماتریس می باشد پس A=data(:,1) .
کدام ستون معرف داده های دما بود؟ ستون دوم ماتریس. پس B همان ستون دوم ماتریس می باشد پسB=data(:,2) .
حالا که همه چی مشخص شد می تونیم از دستور interp1 استفاده کنیم:


>>interp1(data(:,1) , data(:,2) , 1420)

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

امیدوارم فهمیده باشید که A و B و C‌چی هستند.
حالا به راحتی می تونید جواب ب را بدهید:


>>interp1(data(:,3),data(:,4),0.2315)


متلب به طور پیش فرض برای درون یابی کردن از رابطه خطی بین داده ها استفاده می کنه. متلب روشهای دیگری رو هم برای درون یابی در interp1 داره که میتونید برید و help متلب رو بخونید که در اینجا فقط اسامی این روشها رو آورده می شود:


linear , nearest , spline , pchip , cubic , v5cubic


پس اگه روش رو ننویسیم به طور پیش فرض اون رو linear میگیره:


>>interp1(data(:,1) , data(:,2) , 1420)

برابر است با


>>interp1(data(:,1) , data(:,2) , 1420 , ‘linear’)


اگه خواستید روش رو عوض کنید به جای کلمه linear میتونید اسامی دیگه رو که براتون نوشتم بنویسید:


>>interp1(data(:,1) , data(:,2) , 1420,’cubic’)


حالا بر میگردیم به بخش ج (اگه ارتفاع 1100 باشه دما چقدره) که باید برون یابی انجام دهیم. خب! دستور رو می نویسیم:


>>interp1(data(:,1) , data(:,2) , 1100 )

در این جا متلب به شما جواب NaN را خواهد داد. علتش چیه؟
علت اینه که دستور interp1 در حالت پیش فرض کار درون یابی رو انجام میده و اگه بخواهید کار برون یابی رو براتون انجام بده حتما باید 2 تا کار رو انجام بدید:
1- اولا در دستور interp1 باید کلمه extrap را وارد کنید تا متلب بفهمه که باید برون یابی انجام بده.
2- دوما مثل درون یابی نیست که اگه روش رو بهش معرفی نکنید خودش خطی بگیره. در برون یابی حتما باید روش رو هم بهش معرفی کنید.
پس باید به این صورت بنویسیم:


>>interp1(data(:,1) , data(:,2) , 1100 ,’extrap’ , ‘linear’)

یا مثلا


>>interp1(data(:,1) , data(:,2) , 1600 , ‘extrap’, ‘cubic’)


دستور interp1 به عبارتی کار درون یابی و برون یابی یک بعدی رو براتون انجام میده که در اغلب کارهاب مهندسی هم همین دورن یابی یک بعدی به کار می آید. اما اگه خواستید بیشتر بدونید می تونید برید help‌ نرم افزار رو بخونید و درون یابی و برون یابی دو بعدی با دستور interp2 و سه بعدی با دستور interp3‌ رو مطالعه کنید.

ارسال نظرات قوانین ارسال نظر
لطفا از نوشتن با حروف لاتین (فینگلیش) خودداری نمایید.
از ارسال دیدگاه های نا مرتبط با متن خبر، تکرار نظر دیگران، توهین به سایر کاربران و ارسال متن های طولانی خودداری نمایید.
لطفا نظرات بدون بی احترامی، افترا و توهین به مسئولان، اقلیت ها، قومیت ها و ... باشد و به طور کلی مغایرتی با اصول اخلاقی و قوانین کشور نداشته باشد.
در غیر این صورت، «برق نیوز» مطلب مورد نظر را رد یا بنا به تشخیص خود با ممیزی منتشر خواهد کرد.
نتیجه عبارت زیر را وارد کنید
=
captcha
انتشار یافته: ۹
در انتظار بررسی: ۰
غیر قابل انتشار: ۰
ناشناس
Iran (Islamic Republic of)
۲۱ آذر ۱۳۹۶ - ۰۸:۴۰
باتشکر
لطفا هفته ای یک آموزش بذارین
برق نیوز
سعی میشود آموزشهای بیشتری در سایت قرار داده بشه.
جاسم
Germany
۲۲ آذر ۱۳۹۶ - ۱۴:۴۱
خیلی خوب است این نرم افزار از قابلیتهای زیادی برخوردار است
ناشناس
Germany
۲۶ شهريور ۱۳۹۸ - ۱۹:۴۷
توضیحتون عالی و واضح بود. واقعا ممنون
sana
Iran (Islamic Republic of)
۰۵ دی ۱۳۹۸ - ۱۹:۵۱
عالی بود واقعا مرسی
علی
Iran (Islamic Republic of)
۱۳ دی ۱۳۹۹ - ۲۱:۰۴
از آموزش روان، مختصر و مفیدتون بسیار ممنونم
علیرضا
India
۱۵ بهمن ۱۳۹۹ - ۱۳:۴۳
خیلی ساده و کاربردی توضیح داده شده
عالی بود
نیو
Germany
۱۷ بهمن ۱۳۹۹ - ۲۲:۱۱
عالی بوود مرسی از توضیح خوبتون
افشین
Iran (Islamic Republic of)
۰۷ اسفند ۱۳۹۹ - ۲۳:۱۳
خیلی ممنون از توضیحات مفیدتون. فقط برای انجام extrapolation توسط دستور interp1 باید اول روش رو نوشت بعد دستور extrap رو وارد کرد. که جابجا نوشته شده در توضیحاتتون.
علی
Iran (Islamic Republic of)
۰۴ ارديبهشت ۱۴۰۰ - ۱۴:۱۷
از توضیحات زیبا و مختصر و مفیدتون ممنونم