اندیس سلامتی (health index) در متلب|مفهوم+مثال-بخش اول (جلسه چهل و پنجم)

اندیس سلامتی در متلب
اندیس سلامتی در متلب

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

جلسه‌ی پیش با حل تمرین در متلب کمی در آموزش متلب عمیقتر شدیم. در این جلسه می‌خواهیم راجع به health index صحبت کنیم و ببینیم چه چیزی است. ابتدا کمی راجع به خود آن توضیح می‌دهیم و بعد در برنامه متلب آن را اجرا می‌کنیم.

اندیس سلامتی (health index) در متلب

یک فرمولی دارد که در اینجا آن را نشان می‌دهیم و توضیح می‌دهیم چیست.

فرض کنید که health index را با a نشان می‌دهیم و w همان weight یا وزن است که بر حسب کیلوگرم است. شما باید وقتی روی وزنه خود را وزن کنید، وزن شما را بر حسب کیلوگرم نشان می‌دهد. h آن ارتفاع یا اگر بخواهیم خودمانی‌‌‌تر بگوییم، قد ما است که باید به توان ۲ برسانیم و وزنمان را تقسیم بر (ارتفاع به توان ۲) بکنیم تا اندیس سلامتی‌مان را به دست آوریم که یک عددی می‌شود و توجه داشته باشید که آن ارتفاع ما بر حسب متر است که متر ضربدر متر می‌شود متر به توان ۲ یا متر مربع.

فرض کنید که قد ما ۹۰/۱ و وزن هم حدوداً ۹۰ کیلوگرم است. ۹۰ را تقسیم بر ۹۰/۱ می‌کنیم و به توان ۲ می‌رسانیم. یک عددی به دست می‌آید. توجه داشته باشید که قد را بر حسب متر بنویسید.

18.5 < a < 29.9  normal weight

18.5 > a  under weight

a > 29.9  over weight

اگر این عدد بین ۵/۱۸ تا ۹/۲۹ باشد، شما وزن نرمالی دارید. اگر این عدد کوچکتر از ۵/۱۸ باشد، شما کم‌وزنی دارید و باید کمی وزنتان را بالا ببرید و سلامتی‌تان دچار مشکل است. اگر این عدد بزرگتر از ۹/۲۹ باشد، شما اضافه وزنی دارید و باید کمی وزنتان را پایین بیاورید تا در این range باشید.

 حال ما می‌خواهیم این فرمول را در برنامه‌ی متلب اجرا کنیم.

برنامه متلب را باز می‌کنیم و در اینجا یک script جدید به نام ‌health index می‌سازیم.

اندیس سلامتی در متلب
اندیس سلامتی در متلب
اندیس سلامتی-تصویر 2
اندیس سلامتی در متلب-تصویر دوم

آن را باز می‌کنیم.

اندیس سلامتی-تصویر 3
اندیس سلامتی در متلب-تصویر سوم

گفتیم که اول از همه clc; را می‌نویسیم تا مثلا وقتی که run می‌گیریم تمام برنامه‌ها را پاک کند و clear کند و برای زمانی است که شما از برنامه run می‌گیرید.

و close all را هم می‌‌نویسیم. یعنی این‌که اگر نموداری در برنامه متلب باز کردید، با این کار تمام این‌ها برای شما بسته می‌شود و همه را می‌بندد.

وقتی که ما می‌خواهیم یک health index را در برنامه متلب اجرا کنیم، قبل از آن باید weight را به گونه‌ای وارد برنامه کنیم. چگونه می‌توان این weight قد و وزنمان را در برنامه وارد کنیم؟ با دستوری به نام input.

اندیس سلامتی-تصویر 4
اندیس سلامتی در متلب-تصویر چهارم

الان فرض کنیم نمی‌دانیم که input چیست. قبلا در مورد doc گفتیم. doc input را می‌زنیم تا documention باز شود و شما بتوانید اطلاعاتی که راجع به input است را بخوانید.

اندیس سلامتی-تصویر 5
اندیس سلامتی در متلب-تصویر پنجم

نوشته است request user input یعنی از کاربر request می‌کند یا می‌خواهد یک چیزی نوشته شود.

این دو صورت را برای ما در syntaxها آورده است:

x = input(promt)

str = input(promt, ‘s’)

promt را در قسمت Description هم توضیح داده است و به اصطلاح آن را descripe کرده یا توضیح داده که چیست.

promt یعنی اینکه یک اعلان یا پیغامی را به ما می‌دهد. کاربر باید در آن input اش را بزند و در (promt , ‘s’) حرف s از string می‌آید. مثلاً اگر از جنس string یا رشته باشد، می‌توانیم در اینجا آن را وارد کنیم. مثلا یک s که از جنس رشته است به این صورت ممکن است وارد شود.

در اینجا به خوبی می‌توانید همه چیز را بخوانید. مثال و example دارد و شما می‌توانید به راحتی در مورد input به صورت کامل مطالعه کنید. برای هر موضوع دیگری که بخواهید از این قسمت در مورد آن مطالعه کنید یک doc تایپ می‌کنید و documentation آن را برایتان می‌آورد.

اکنون در ابتدای کار ما می‌خواهیم با توجه به دستور input وزنمان را وارد کنیم. چگونه باید این کار را انجام دهیم؟ می‌نویسیم w = input (‘Enter your weight (kg) :  ‘) یک دو نقطه و یک فاصله قرار می‌دهیم زیرا ما وزن را نمی‌دانیم و کاربر می‌خواهد به ما بگوید که وزن چند است.

اگر در اینجا کد را متوجه نمی‌شود، دستور Enter your weight در قسمت command window نشان داده می‌شود و در اینجا وزن را وارد می‌کنید. بعد در آخر دستور ; هم اضافه می‌کنیم.

دومی قد بود. یک input می‌زنیم و می‌گوییم که Enter your height (m) که بر حسب متر است.

پس این دو تا را داریم. حالا run می‌کنیم تا جواب را ببینیم.

اندیس سلامتی-تصویر 6
اندیس سلامتی در متلب-تصویر ششم
اندیس سلامتی-تصویر 7
اندیس سلامتی در متلب-تصویر هفتم

می‌گوید وزن را بدهیم. برای مثال وزن را ۸۰ وارد می‌کنیم.

اندیس سلامتی-تصویر 8
اندیس سلامتی در متلب-تصویر هشتم

مشاهده می‌کنید که بعد گفته است که حالا قد خود را بگویید. برای مثال قد را ۹/۱ وارد می‌کنیم که بر حسب متر بوده است.

اندیس سلامتی-تصویر 9
اندیس سلامتی در متلب-تصویر نهم

در اینجا در workspace برای ما آورده است و در تصویر زیر مربع هم با رنگ سبز رنگ نشان داده شده است زیرا کدها را به درستی نوشتیم.

اندیس سلامتی-تصویر 10
اندیس سلامتی در متلب-تصویر دهم

ولی این‌ها به همین صورت در command window نمایش داده می‌شود. بهتر است یک پیغام disp هم بدهیم یعنی display کند یا پیغام دهد. مثلاً این پیغام This program shows your health index را می‌نویسیم که می‌گوید این برنامه دارد اندیس سلامتی شما را محاسبه می‌کند.

اندیس سلامتی-تصویر 11
اندیس سلامتی در متلب-تصویر یازدهم

الان وقتی run کنیم، ابتدا می‌گوید که این برنامه‌ای که در  ‌زیر آمده است، دارد اندیس سلامتی شما را نشان می‌دهد. توجه داشته باشید که این‌ها را باید بین دو علامت «’ » قرار دهید تا در command window نمایش داده شود.

حال فرمولی که برای اندیس سلامتی داشتیم را می‌نویسیم که a=w/h^2 بود.

این فرمول اندیس سلامتی است. آیا به نظر شما باید آن را داخل پرانتز قرار دهیم؟ شما باید در اینجا اولویت‌ها یعنی operator percidens را بدانید.

اندیس سلامتی-تصویر 12
اندیس سلامتی در متلب-تصویر دوازدهم

این‌ها را باید بدانید که در قسمتhelp  خود متلب وجود دارد که مثلاً parantheses یا همان پرانتز‌ها هستند.

اندیس سلامتی-تصویر 13
اندیس سلامتی در متلب-تصویر سیزدهم

اولویت همیشه با پرانتز است. هر جا پرانتز قرار دهید، ابتدا آنجا محاسبه می‌شود. بعد transposeها را محاسبه می‌کند و همین‌طور به ترتیب وقتی پایین‌تر می‌روید، اولویت‌ها هم پایین‌تر می‌شود و اگر در اینجا دقت کنید اولویت AND بالاتر از OR است. دلیل آن چیست؟ همان‌طور که اولویت ضرب بالاتر از جمع است و قبلا در فصل یک به شما گفتم که ضرب همان AND است و جمع همان OR است، پس AND هم اولویت بالاتری نسبت به OR دارد.

به سراغ ادامه برنامه‌نویسی در متلب می‌رویم.

می‌خواهیم بعد از آن در command window یک فاصله در پایین قرار دهیم. پس یک disp می‌زنیم. برای مثال می‌خواهیم در وسط چیزی بنویسیم که فاصله به پایین برود؟ خیر، چیزی نمی‌نویسیم. یک space می‌زنیم و فاصله‌ی خالی می‌گذاریم که این یک روش فاصله گذاشتن است و روش‌های دیگری هم وجود دارد.

بعد از آن چه کاری انجام می‌دهیم؟ بعد می‌گوییم می‌خواهیم health indexمان را به کار نمایش دهیم و بگوییم چند است. می‌نویسیم your health index = a. به نظر شما این طور نوشتن درست است؟ خیر، درست نیست. آیا اگر ‘ را در بیرون پرانتز قرار دهیم درست است؟ خیر، باز هم درست نیست. به چه دلیل؟ زیرا ما باید آن را داخل کروشه قرار دهیم تا به هم الحاق شوند. بنابراین یک کروشه بعد از پرانتز باز و یکی قبل از پرانتز بسته شده قرار می‌دهیم. الان چه اتفاقی دارد می‌افتد؟ یک string یا رشته دارد به یک عدد الحاق می‌شود که چنین چیزی اصلا امکان ندارد.

اندیس سلامتی-تصویر 14
اندیس سلامتی در متلب-تصویر چهاردهم

پس ما باید چه کار کنیم؟ عدد را به یک رشته تبدیل کنیم. بسیار ساده است و با یک دستور num2str این را به یک رشته تبدیل می‌کنیم. عدد a یا اندیس سلامتی‌مان را به سادگی به رشته تبدیل می‌کنیم. با دستور num2str(a) به سادگی خواهیم توانست این تبدیل را انجام دهیم.

اندیس سلامتی-تصویر 15
اندیس سلامتی در متلب-تصویر پانزدهم

در ادامه می‌نویسیم اگر a > 29.9، display کند که you are over weighted یعنی شما اضافه وزن دارید.

بعد از آن می‌نویسیم if a < 18.5 در این صورت you are under weighted را display کند.

و برای مورد آخر که حالت نرمال است، else را می‌نویسیم زیرا اگر دو حالت قبلی نبود، پس شخص وزن نرمال دارد و می‌خواهیم you are a normal person را display کند.

در آخر هم end را قرار می‌دهیم که برنامه ما تمام شود.

اندیس سلامتی-تصویر 16
اندیس سلامتی در متلب-تصویر شانزدهم

به نظر شما این برنامه درست است؟ خیر. زیرا وقتی در اینجا دو تا if قرار دهید، دو تا end از ما می‌خواهد. پس نباید دو تا if قرار می‌دادیم. در خط ۱۲ باید elseif قرار می‌دادیم. وقتی elseif بگذارید، در این صورت دیگر برنامه‌ی ما هم درست می‌شود. بنابراین به این نکته توجه داشته باشید.

اندیس سلامتی-تصویر 17
اندیس سلامتی در متلب-تصویر هفدهم

اکنون برنامه را run می‌کنیم.

اندیس سلامتی-تصویر 18
اندیس سلامتی در متلب-تصویر هیجدهم

از ما می‌خواهد که وزنمان را وارد کنیم. مثلا وزن ما ۹۰ کیلوگرم و قدمان ۳۰/۱ است. run نشده است.

بعد از خط ۹ باید یک فاصله قرار دهید که عدد a ما  نمایان شود.

حال اگر برنامه را run کنیم، برای مثال می‌گوید وزنتان را بگویید. وزنمان را ۵۰ وارد می‌کنیم و برای قد هم ۹/۱ را وارد می‌کنیم. می‌گوید شما under weighted هستید یعنی وزن کمی دارید. Health index ما ۸/۱۳ شده است که بسیار کمتر از ۵/۱۸ است یعنی خیلی کم‌وزنی داریم و باید وزنمان را بالا ببریم.

حال فرض کنید که ما اشتباها عدد قد را وارد کردیم و به جای ۹/۱ عدد ۱۹۰ را وارد کرده باشیم. ولی می‌خواهیم خود برنامه آن را تبدیل کند. چگونه می‌توان این کار را انجام داد؟ راه‌های زیادی وجود دارد. اگر بخواهیم ساده‌ترین راه را بیان کنیم، این است که برای مثال دیگر ما قد بالاتر از ۷/۲ نداریم. می‌گوییم که اگر h بزرگتر از ۷/۲ شد، یک پیغامی بدهد و h را تقسیم بر ۱۰۰ کند. زیرا ۱۹۰ گفته است که برحسب صد گفته است. پس اگر تقسیم بر صد کند، درست می‌شود. اگر این کار را انجام دهیم، این مسئله حل می‌شود.

پس بعد از خط ۶ ابتدا بهتر است که یک فاصله بیندازیم و بعد می‌گوییم  if h>2.7، you entered your health index in cm را display کند. یعنی شما اندیس سلامتی‌تان را در سانتی‌متر یعنی اشتباه نوشتید و باید به متر بنویسید. در صورتی که به سانتی‌متر زدید. این را display کند و بعد یک جمله دیگر it is converted to meter را display (ما خودمان آن را به متر تبدیل کردیم) کند که می‌توانید باهم نیز بنویسید. اما ما جداگانه می‌نویسیم.

بعد از آن می‌نویسیم h=h/100 که همان تبدیلی است که انجام دادیم.

بعد از آن هم باز یک dosplay می‌نویسیم که برای مثال آن height یا قد ما مساوی چه یود؟ اولا اینکه به دلیل این‌که داریم الحاق می‌کنیم، باید آن را به str تبدیل کنیم. یک num2str می‌نویسیم، مساوی می‌شود با hای که الان داریم و اینکه بر حسب متر هم است. در خط ۱۲ پرانتز را می‌بندیم و اینجا هم باید یک فاصله قرار دهیم. تنها چیزی که باقی می‌ماند، این است که در خط ۱۳ باید یک end برای if قرار دهیم، تا برنامه‌ی ما درست شود.

حالا run می‌گیریم.

می‌گوید وزن را وارد کنیم که وزن را برای مثال ۷۰ وارد می‌کنیم.

می‌گوید بر حسب متر قد را وارد کنیم. ما بر حسب متر وارد نمی‌کنیم و بر حسب سانتی‌متر وارد می‌کنیم.

مشاهده می‌کنیم که خودش تبدیل کرده است و نوشته قد ما ۹/۱ است و health index آن ۳۹۰۶/۱۹ می‌شود و شما یک انسان نرمال هستید و مشکلی در اینجا وجود ندارد.

در اینجا مبحث امروز را به پایان می‌رسانیم و در جلسه آینده با حل تمرین health index این مبحث را به صورت کامل خواهیم آموخت.

در صورتی که شما پس از خواندن محتوای جلسات قبلی و این بخش که به ساده‌ترین زبان ممکن درباره‌ی برنامه‌ی متلب و محیط کاربری آن توضیح داده باز هم سردرگم هستید. می‌توانید با برون سپاری انجام پروژه متلب خود به کارشناسان حرفه‌ای کارت پروژه می‌باشد. میتوانید از طریق شماره‌ی 09104503300 با پشتیبانان کارت از طریق پیام یا تماس در ارتباط باشید.

برای کسب اطلاعات بیشتر در مورد متلب میتوانید به مقاله آموزش متلب مقدماتی مراجعه کنید.

برای ثبت سفارش لطفا در تلگرام یا واتساپ یا ایتا به شماره 09104503300 پیام دهید.