دستور find در متلب|تابع find متلب (بیست و هشتم)

دستور find در متلب
دستور find در متلب

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

جلسه‌‌ی گذشته در رابطه با عملگر مقایسه در متلب صحبت کردیم. در این جلسه قصد داریم در رابطه با دستور find در متلب توضیح دهیم.

آموزش دستور فایند find(توضیحات+مثال)

در این جلسه قصد داریم درباره‌ی نحوه استفاده از تابع find توضیح دهیم. با یک مثال این آموزش را پیش خواهیم برد. ابتدا ماتریسی مانند ماتریس A تعریف می‌کنیم سپس اعضای ماتریسمان را مشخص می‌کنیم. ماتریسی که ما در اینجا تعریف کردیم دارای سه سطر و چهار ستون است.

برای مشاهده عملکرد دستور find از این دستور در ماتریس A استفاده میکنیم و متوجه کارایی دستور find شده همچنین زمان مناسب استفاده از این دستور را متوجه می‌شویم. می‌خواهیم اعضایی را از A پیدا کنیم که بزرگتر از ۵ هستند. به نظر شما چه کار باید انجام دهیم؟ با توجه به چیزهایی که تا به حال گفتیم، آیا می‌توانیم بنویسیم A>5؟ چه جوابی به ما می‌دهد؟ گفتیم که این یک منطق است و می‌آید در جاهایی که اعضای A  از ۵ بزرگتر است را برای ما true می‌کند. یعنی ۱ می‌گذارد و جاهایی که نیست را 0 و false می‌کند.

حال ما می‌خواهیم این‌ها را find کنیم یعنی می‌خواهیم جایگاه این‌ها را پیدا کنیم. Find (A>5)

مشاهده می‌کنید که جواب را به صورت زیر نشان می‌دهد.

پیدا کردن جایگاه اعداد در ماتریس
پیدا کردن جایگاه اعداد ماتریس در متلب

شاید بگویید ۳ کجا بزرگتر از ۵ است. اما منظور از ۳ در اینجا عدد ۳ در ماتریس A نیست منظور جایگاه آنهاست.

 اگر به ماتریس دوم در بالا دقت کنید، در ستون اول سومین درایه true است یعنی بزرگتر از ۵ است. بنابراین اولین جواب در تابع find عدد سه است. در ماتریس دوم در جایگاه ۴ عدد صفر وجود دارد پس false است و در جواب تابع find قرار نمی‌گیرد. اما جایگاه ۵ و ۶ true هستند. پس جواب‌های بعدی تابع ۵ و ۶ هستند. ۷ هم جواب نیست. جواب‌های بعدی ۸ و ۹ هستند. جایگاهشان را به ما داده است. در کل تابع find اگر find خالی را بزنید، برای ما جاهایی که غیر صفر هستند را پیدا می‌کند. مثلا اگر فرض کنید اعضای ماتریس B  به صورت زیر باشند، الان اگر بنویسیم find (B) برای ما جایگاه‌هایی را پیدا کرده است که غیر صفر هستند که دومی و چهارمی و  ششمی هستند. که ۳ و ۴ و۴۰ هستند.

دستور find در متلب چه کاری انجام می‌دهد؟

ابتدا Aهایی را که بزرگتر از ۵ هستند را محاسبه می‌کند و یک ماتریس صفر و یک به دست می‌آورد و سپس می‌آید آن جایگاه‌ها را برای ما نشان می‌دهد.

حال می‌خواهیم اعضای ماتریس را هم به دست آوریم. گفتیم که find(A>5) این‌ها را به ما داده است. حال می‌خواهیم ببینیم آن اعضا چند هستند. می‌نویسیم داخل A آنهایی که پیدا کرده است و آنهایی که بزرگتر از ۵ بودند را بدهد.

اجرای دستور find در متلب
اجرای دستور find در متلب

در تصویر فوق مشاهده می‌کنید که به ما گفت که چند بوده است. اگر به ماتریس A توجه کنید، اعضای بزرگتر از ۵، خود ۵ که نیست، به ترتیب همه را برای ما نشان داده است.

گفته است که ۹ اولین آنهاست. بعد از آن ۲ که نیست. بعد ۶، بعد ۱۰، بعد ۷ و همین‌طور به ترتیب نمایش داده  است. حال شما می‌خواهید این‌ها sort شود و به ترتیب باشد. پس به صورت زیر می‌نویسیم:

مرتب کردن اعداد مشخص شده
مرتب کردن اعداد مشخص شده در متلب ( sort کردن)

البته به این صورت جواب نمی‌دهد و باید بگویید که sort کند (ادامه را باید داخل پرانتز بنویسیم) Aهایی که داخل آنها بزرگتر از ۵ است.

مشاهده می‌کنید که به صورت sort شده به ما گفته است یعنی از کوچک به بزرگ نمایش داده است.

 به صورتی که اول نوشتیم نمی‌شود دستور find در متلب را داخل sort بنویسیم. باید به صورت دوم بنویسیم.

در بالا اگر منظور A(A>5) را متوجه نشدید، اگر خاطرتان باشد اندیس‌گذاری می کردیم مثلاً می‌گفتیم در ماتریس A برای ما آنهایی که سطر ۳ و ستون ۲ هستند را مشخص کند و بگوید چیست. در اینجا هم به همین صورت است فقط در اینجا به صورت منطقی است یعنی بگوید در ماتریس A آنهایی که بزرگتر از ۵ هستند را به ما بدهد. که به آن logical indexing می‌گویند. مانند همان اندیس‌گذاری می‌ماند ولی شرطی یا منطقی است.

برای مثال در همین ماتریس A می‌خواهیم بگوییم که Aهایی را به ما بدهد که بزرگتر از ۴ هستند و کوچکتر از ۱۰ هستند یعنی در واقع می‌خواهیم ۵ و ۶ و ۹ و ۷ و ۸ را به دست آوریم. مثل find عمل می‌کند. به ما آنهایی را داده است که بزرگتر از ۴ و کوچکتر از ۱۰ هستند و به ترتیب حضور در آرایه‌ها ظاهر می‌شوند. اگر بخواهید به ترتیب عددی باشد، آن را sort می‌کنیم.

تعریف کردن بازه
تعریف کردن بازه‌ای از اعضا

در B چطور؟ در ماتریس B که در بالاتر تعریف کردیم، چگونه است؟ مثلاً اگر بگوییم B(B) جوابی را به ما نشان می‌دهد؟ همان‌طور که در تصویر زیر مشاهده می‌کنید، خیر.

توجه کردن به نکات ریز در متلب
توجه کردن به نکات ریز در متلب

بنابراین باید بگوییم که Bهایی را به ما بدهد که … زیرا گفتیم وقتی که B را می‌زنیم، غیر از صفرها را می‌دهد ولی نباید به صورت تصویر فوق بنویسیم. باید بگوییم Bهایی را به ما بدهد که بزرگتر از صفر هستند که ۳ و ۴  و ۴۰ هستند. به طور دیگری نیز می‌توانیم بنویسیم بگوییم Bهایی را به ما بدهد که صفر نباشند. به این صورت نیز می‌‌توان نوشت که در تصویر زیر مشاهده می‌کنید. حتی می‌توانیم بگوییم که B را به صورت logical به ما بدهد.

یعنی بگویید که آنهایی را که logical B بودند را در B به ما بدهد که می‌شود ۳ و ۴ و ۴۰. و خیلی کارهای دیگری را می‌توان در اینجا انجام داد.

در جلسه آینده با دستور دیگری به نام دستور mod در متلب آشنا خواهیم شد.

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

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

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