07 اسفند متلب و کاربردهای آن نوشته شده: adminsite 0 در چهارمین روز از ماه ژوئن سال 2020 کلیو مولر و جک لیتل، مقالهای تحت عنوان تاریخچه متلب در ژورنال " ACM" منتشر کردند. این مقاله در چهارمین کنفرانس بین المللی تاریخچۀ زبانهای برنامه نویسی همراه با 50 مورد از منابع که تقریباً 40 مورد آنها غیر آرشیوی بودند با ضمیمۀ 34 عکس برای گالری تصاویر، وارد میدان شده و در حال حاضر به صورت رایگان در دسترس عموم است. در ادامه صفحات اولیۀ این مقاله را برای علاقمندان منتشر میکنیم. مولر و لیتل در پیشگفتار این مقاله ادعا میکنند که Matrix Laboratory با نام تجاری و آشنای MATLAB از همان ابتدا یک زبان برنامه نویسی نبوده و در واقع در اواخر دهۀ 1970 که ساخته و وارد بازار شده تنها یک ماشین حساب ماتریسی (Interactive) یا ساده تلقی میشده! ساختار کلیاش هم خیلی سادهتر از ورژن این روزهایش بوده است به طوری که تنها 71 کلمۀ ذخیره شده (Reserved word) و توابع داخلی را پوشش می داده است. و کاربران برای ایجاد هر نوع تغییری نیز فقط باید از کد منبع فرترن (Fortran) یا کامپایل مجدد استفاده میکردند. البته سازندگان متلب خیلی هم تقصیرکار نبودهاند؛ چراکه به طورکلی زبانهای برنامه نویسی در سال 1984 همگانی و پدیدار شدند و در آن زمان متلب تازه تبدیل به یک محصول تجاری شده و فروخته میشد. . بالاخره با گذشت زمان این ماشین حساب مجدداً پیاده سازی شد و با اضافه شدن توابع کاربر، جعبه ابزار و دیگر امکانات به طور قابل توجهی بهبود یافت. ابتدا نسخۀ اولیۀ این نرم افزار در " IBM" و سپس به طور مستقیم عرضۀ "Apple Macintosh" شد. واضح است که با انتشار هر ورژن جدید قابلیتهای جدیدی نیز به آن اضافه میشد. برخی از کاربردیترین و سادهترین ابزار و دستورات آن مثل جعبه ابزار سیستم کنترل یا جعبه ابزار سیستم پردازش سیگنال و حل عددی معادلات دیفرانسیل ساده به ترتیب در سالهای 1985 و 1987 ساخته شدند. همین موضوع به سادگی و با مقایسه با آپدیتهای جدید، اوج تواناییها و کاربردهایش چه در آن سالها و چه امروزه را نشان میدهد. در آخرین نسخهای که کمپانی MathWorks سازندۀ سری محصولات متلب وارد بازار کرد؛ بیش از 60 جعبه ابزار با قابلیتهای گسترده و تخصصی ارائه شدند. شاید بهتر بود پیش از گفتن تاریخچه و قدمت این نرم افزار، توضیح میدادیم که اصلاً متلب چیست؟ و یا اصلاً چه میکند؟ اما این موضوع سبب شد که تا اینجا ما را همراهی کنید و نگاه کنجکاو و مشتاقتان ما را همراهی کند. پس حالا میرویم سر اصل مطلب: متلب دقیقاً چیست؟ متلب یک زبان برنامه نویسی نسل چهارم است. این یعنی با دیگر زبانهای برنامه نویسی مثل جاوا، جاوا، اسکریپت،C, C++, C# ،پایتون و... تفاوت دارد. . زبانهای برنامه نویسی معمولاً هرکدام در یک حوزۀ خاص مورد استفاده قرار میگیرند. البته این بدین منظور نیست که مثلاً نمیشود با یک زبان دو کار مختلف انجام داد اما این معنی را میدهد که گاهی یک زبان برنامه نویسی از یک زبان دیگر در موارد خاصی بهتر عمل میکند. به طور مثال برای طراحی سایت برنامه نویسان جاوا اسکریپت C++ را به جاوا و... ترجیح میدهند و این اصلاً به معنای ضعیف بودن یا ناتوانی سایر زبانها نیست بلکه نشان از عملکرد بهتر در آن حیطۀ به خصوص را دارد. برای متلب هم این موضوع صدق میکند. متلب با اینکه یک زبان برنامه نویسی است اما بیشتر در حوزۀ پژوهشی و علمی کارآمد است. یعنی برای اینکه یک پدیدۀ ریاضی را شبیه سازی کنیم کاملاً مناسب است اما در زمینۀ طراحی سایت؟ حرفی برای گفتن ندارد. پس با این حساب به زبان ساده متلب یک زبان با کارایی به شدت بالا برای محاسبات فنی و تخصصی است. از همین رو در تمام رشتههای مهندسی و علوم پایه توانایی به کارگیری دارد. متلب در چه زمینه هایی قابل استفاده است؟ این قسمت از مقاله تا حدودی تکراری است اما نمیتوان از آن صرف نظر کرد. بنابراین خواهیم گفت که مهندسان و متخصصان از متلب برای تجزیه و تحلیل، آنالیز، ایجاد و آزمایش سیستمها و مدلها، پردازش سیگنال و تصویر، شبیه سازی، محاسبات فنی، تجسم دادههای چند بعدی، انیمیشن، گرافیک و رباتیک استفاده میکنند. از آنجایی که متلب توانایی ارتباط با سایر زبانهای برنامه نویسی را نیز دارد، بین کاربران بسیار محبوب است. به دلیل اینکه، زبانی که این برنامه پشتیبانی میکند، ماتریسی-آرایهای است؛ میتوان گفت که با متلب میتوان از سادهترین دستورها تا پیچیدهترین برنامهها را استفاده و اجرا کرد. چراکه جعبه ابزارهای متلب تقریباً هر مشکلی را پوشش میدهند و از امکانات متنوعی برخوردارند. بخش های اصلی متلب این برنامه پنج بخش یا پارت اصلی دارد. برای استفاده از آن یا پیاده سازی یک برنامه ابتدا لازم است که با این بخشها آشنایی داشته باشیم: MATLAB Language یا زبان متلب The MATLAB working environment یا محیط کاری متلب Handle Graphics یا کنترل گرافیک The MATLAB mathematical function library یا کتابخانه توابع ریاضی متلب The MATLAB Application program interface (API) یا رابط برنامه های کاربردی متلب پس از بخشهای اصلی بد نیست کمی هم با اصطلاحات و عبارات کاربردی متلب آشنا شویم: Variables (متغیرها) Numbers (اعداد) Operators (نمادها) Functions (توابع) که همان اصطلاحات ریاضی نام آشنای روزمرۀ ما است. پیش از آنکه وارد بُعد تخصصی کار شویم و کاربردهای متلب را به طور حرفهای توضیح دهیم، بد نیست از اصطلاح جعبه ابزار که بالاتر اشاره کردیم سخن بگوییم. جعبه ابزار یا همان Tool Box معنای خیلی دقیقی ندارد. بیشتر به این معناست که مجموعهای از تجهیزات موردنیاز برای کار با متلب در آنها نهفته است؛ که بعضی از آنها رایگان و برخی دیگر باید از کمپانی Mathworks خریداری شود. در ادامه انواع جعبه ابزار را معرفی میکنیم: انواع جعبه ابزار Aerospace Toolbox Antenna Toolbox Audio System Toolbox Automated Driving System Toolbox Bioinformatics Toolbox Communications System Toolbox Computer Vision System Toolbox Control System Toolbox Curve Fitting Toolbox DSP System Toolbox Data Acquisition Toolbox Database Toolbox Datafeed Toolbox Econometrics Toolbox Financial Instruments Toolbox Financial Toolbox Fuzzy Logic Toolbox Image Acquisition Toolbox Image Processing Toolbox Instrument Control Toolbox LTE System Toolbox Model Predictive Control Toolbox Model-Based Calibration Toolbox Neural Network Toolbox OPC Toolbox Optimization Toolbox Parallel Computing Toolbox این لیست به ترتیب حروف الفبا همینطور ادامه دارد و سازندگان با هر ورژن به تعداد آنها میافزایند تا استفاده از نرم افزار برای کاربران راحتتر از قبل شود. از اتاق فرمان اشاره میکنند که پیش از باز کردن بحث کاربردها هنوز یک قسمت بازگو نشده وجود دارد که توضیح ندادنش یک حفرۀ سوالی ایجاد میکند! پس این بار سوال اصلی این است که: این MATLAB Simulink که میگویند؛ یعنی چه؟! سیمولینک بسته، پکیج یا مجموعهای است در تعامل با متلب برای شبیه سازی و مدل سازی هرگونه سیستم، فرآیند و مشکل. در واقع سیمولینک با استفاده از کتابخانهها و بلوکها به صورت ترکیبی با متلب کار کرده و همزمان میتواند از امکانات دیگر نیز استفاده کند. حالا چرا انقدر مهم است؟ چون یکی از کاربردیترین و اساسیترین بخشهای متلب است که استفاده از دیگر بخشها و امکانات نرم افزار در گرو اوست. به همین علت است که حتی دورههایی نیز برای یادگیری آن برگزار شده و متقاضیان برای به روز کردن دانش خود به دنبال یادگیری آن هستند. فعلاً در همین حد بگوییم که برای شروع و استفاده از آن کافی است نماد Simulink را در پنل منو جست و جو کنید. برای اطلاعات بیشتر دورۀ آموزشی پارس پژوهان بهترین گزینه است. و اما بالاخره بحث اصلی و شیرینی که این همه برایش مقدمه چینی کردیم. توضیحاتی جامع و کامل از هر کار جالب و مهمی که میتوانیم با متلب انجام دهیم. برای استارت از آنالیز و تجزیه و تحلیل شروع میکنیم. آنالیز داده ها یا Data analysis در متلب مهندسان و دانشمندان از متلب برای برای سازماندهی و تجزیه و تحلیل مجموعه دادههای پیچیده در زمینههای مختلف اعم از اقلیم شناسی، زمین شناسی، پزشکی و صنایع دارویی، امور مالی و... استفاده میکنند و میتوانند با وارد کرده دادههای اولیه، دادههای خروجی را نیز پیش بینی کنند. به طور کلی متلب برای آنالیز دادهها امکانات مهیجی را ارائه میکند؛ مثل: انواع دادههای از پیش تعیین شده و قابلیت های پیش پردازش طراحی شده برای داده های مهندسی و علمی، دادههای تعاملی و قابل تنظیم، برنامهها و وظایف ویرایشگر زنده که به پاکسازی تعاملی دادهها، آماده سازی و نوشتن کد کمک میکند، توابع از پیش ساخته شده برای تجزیه و تحلیل آماری، سازماندهی خودکار آنالیز در اجزای نرم افزار کد منبع قابل جاسازی بدون الگوریتم های کدگذاری مجدد دستی و ... شبیه سازی یا Simulation در متلب همانطور که از نامش پیداست، این قسمت از کاربردهای متلب وابسته به همان Simulink است که پیشتر گفتیم. خیلی سادهتر به این معنا است که برای شبیه سازی باید با سیمولینک کار کرد و از آن سر درآورد؛ در غیر این صورت بهتر است کلاً بیخیال ماجرا شد! به دلیل حائز اهمیت بودن همین موضوع بود که قبل از توضیحات تکمیلی، از سیمولینک گفتیم و صحبت کردیم. حالا این شبیه سازی که میگوییم به چه معناست؟ شبیه سازی به تبعیت کردن یا تقلید کردن یک فرآیند یا سیستم از یک وضعیت واقعی یا مجازی را میگویند. این کار برای کاهش خطرات و هزینه و افزایش دقت در یک سیستم انجام میشود و متلب یکی از راههای انجام آن است. برای اجرای یک شبیه سازی، به یک مدل ریاضی از سیستم نیاز داریم که می تواند به صورت بلوک دیاگرام، شماتیک، نمودار حالت یا حتی کد بیان شود. نرم افزار شبیه سازی رفتار مدل را با تغییر شرایط در طول زمان یا رخ دادن رویدادها محاسبه می کند. نرم افزار شبیه سازی همچنین شامل ابزارهای تجسم مانند نمایش دادهها و انیمیشنهای سه بعدی است که به نظارت بر شبیه سازی در حین اجرا کمک می کند. البته قبول داریم که توضیحات متنی ممکن است خیلی مطالب را در ذهن جا نیندازند اما دست و پای ما هم برای توضیحات بیش از این بسته است. بنابراین توصیه میکنیم برای یادگیری بهتر فیلمهای آموزشی ببینید یا در دورههای مربوطه شرکت کنید. ناگفته نماند که پارس پژوهان هردوی اینها را در اختیارتان خواهد گذاشت. بهینه سازی در متلب بهینه سازی یا Optimization در فرهنگ لغت و دیکشنریهای تخصصی، به معنای گزینش و انتخاب کردن بهترین عضو از میان دیگر اعضای قابل دسترس است. این تعریف به قدری در علوم و حوزههای مختلف مهم است که علاوه بر رشتههای مهندسی، رشتههای مدیریتی به ویژه مدیریت صنعتی و اقتصاد نیز با آن سروکار دارند. در ادامه بهتر است برای واضحتر شدن مسئله، اصطلاح تابع هدف، که به شدت در بهینه سازی اهمیت دارد را تعریف کنیم. تابع هدف همان هدف نهایی ما از طرح مسئله است. به طور مثال کم کردن هزینههای یک پروژه و یا یک متغیر و تابع ریاضی، هردو میتوانند تابع هدف باشند. توابع هدف انواع مختلفی دارند؛ آنها میتوانند هم به صورت خطی و هم غیرخطی و چندگانه وجود داشته باشند. تعریف خطی و غیرخطی بودن هم که برمیگردد به دوران پیش از دبیرستان. حالا میرسیم به تابع هدف خودمان! بهینه سازی در متلب چگونه است؟ یکی از محبوبترین روشهای بهینه سازی در این نرم افزار، روش The gradient descent یا گرادیان نزول است. یعنی در جهت عکس گرادیان تابع هدف صورت میگیرد. اینکه بهترین روش، روش عکس باشد به نظر همزمان هم جالب و هم عجیب است. با این حال معرفی دیگر روشهای بهینه سازی در متلب چیزی نیست که بتوان در این مقاله گنجاند اما میتوان در یک دورۀ اموزشی از آن صحبت کرد! راه پارس پژوهان همیشه برای علاقمندان باز است. شبکۀ عصبی یا Neural Network در متلب حتی عنوان این سرفصل نیز عجیب و دور از ذهن است اما بله، درست میبینید؛ متلب حتی قادر است این کار را نیز انجام دهد. طبق رسوم گذشته ابتدا توضیح میدهیم که اصلاً شبکۀ عصبی چیست؟ شبکۀ عصبی یا شبکۀ عصبی مصنوعی در واقع ابزار یا سیستمی است که با استفاده از نورونها ساختاری شبیه به مغز انسان برای ماشینها ایجاد میکند تا به وسیلۀ آن تشخیص الگوها، طبقه بندی دادهها، پیشبینی رویدادها و... را به آنها آموزش داد. میتوان گفت که شبکۀ عصبی زیربنای علم هوش مصنوعی است. البته باز هم تعریف کلیتری نیز وجود دارد. ساختار مغز را تصور کنید. مغز یک سیستم غول پیکر از سلولهایی به نام نورون است. اتصال یا پیوند این نورونها باعث میشود پیامهای عصبی از یک نورون به یک نورون دیگر منتقل شود. حالا اگر بخواهیم همین کار را برای ماشینها یا رباتها نیز انجام دهیم چه؟ اینجاست که بحث شبکه عصبی مصنوعی مطرح میشود و متلب یکی از راههایی است که شبکۀ عصبی مکانیسم مغز را تقلید کند. شکل زیر تفاوت این دو ساختار را نشان میدهد. نکته قابل توجه دیگری که بد نیست بدانید این است که شبکۀ عصبی مصنوعی از سه بخش سیگنال ورودی، خروجی و پردازش تشکیل شده و مانند یک تابع ریاضی رفتار میکند. یعنی در واقع میتوان گفت که: که به ترتیب نشان دهندۀ سیگنالهای ورودی و پردازش است و به نوعی تابع فعال سازی نام دارد. از آنجایی که طبق شکل میتوان این سیگنالها را به صورت ماتریسی بیان کرد و نرم افزار متلب نیز بر پایۀ ماتریسها بنا شده است؛ پس به وضوح مشخص است که چرا متخصصان حوزۀ پزشکی و علوم مهندسی از متلب برای طراحی یک شبکۀ عصبی مصنوعی استفاده میکنند. به دلیل اینکه وقت و محدودیت ما اجازۀ توضیحات بیش از این را نمیدهد، علاقمندان میتوانند با استفاده از لینک هایلایت شده به اطلاعات بیشتری در این مورد دست یابند. الگوریتم ژنتیک یا Genetic Algorithm در متلب احتمالاً همه با تئوری تکامل داروین آشنا هستید. این تئوری تاثیر عمیقی بر پژوهشهای علمی جهان گذاشت که یکی از این تاثیرات باعث به وجود آمدن جالبترین الگوریتم جهان شد؛ بله، همین الگوریتم ژنتیک! داروین اعتقاد داشت که بقا صرفاً به قویترین بودن یا باهوشترین بودن ارتباط ندارد؛ بلکه بیشتر به سازگاری افراد در برابر تغییرات وابسته است. الگوریتم ژنتیک نیز از دل همین جمله بیرون آمد. سادهترین مثال برای فهم ماهیت این الگوریتم این است که تصور کنیم میخواهیم یک جمعیت انسانی تولید کنیم. برای این کار از میان افراد، بهترینها را انتخاب و آنها را باهم ترکیب میکنیم! اگر این افراد از ویژگیهای ارثی بهتری برخوردار باشند طبیعتاً فرزندان بهتری نیز به وجود میآورند. حالا این افراد را به جای انسان در نظر گرفتن راه حل در نظر بگیرید. هرچقدر این چرخه یا فرآیند ادامه یابد، فرزندان یا راه حلها یا حتی ایدههای بهینهتر و بهتری تولید شده و در انتها به مجموعهای از راه حلها تبدیل میشوند. این روش علاوه بر حوزههای زیستی در حوزههای مهندسی، حمل و نقل، رباتیک و بسیاری دیگر از حیطههای علمی نیز کاربرد دارد. حالا این الگوریتم اصلاً چه ربطی به متلب دارد؟ الگوریتم ژنتیک اهمیت بالایی در محاسبات تکاملی، بهینه سازی هوشمند، هوش محاسباتی و... دارد. چرا که روشهای دیگر برای حل مسائل پیچیدۀ مهندسی قابل به کارگیری نیستند. معمولاً کسانی که به دنبال یادگیری Deep learning و Machine learning هستند یا در این خصوص کار میکنند، نیازمند کسب اطلاعات کافی در این مورد هستند. از الگوریتم ژنتیک میتوان در مسائلی که تابع هدف ناپیوسته، تابع غیرخطی، تصادفی و غیراستاندارد داریم؛ استفاده کنیم. پردازش سیگنال و تصویر در متلب علت اینکه این مورد از کاربردهای متلب را آخر از همه بیان کردیم، این بود که خوانندگان باید دانش و شناخت کافی از فضای متلب و دیگر بخشهای اساسی آن داشته باشند. درست است که این بخش از کار به پیچیدگی مباحث دیگر نیست اما با دانش ابتدایی هم نمیتوان بر آن مسلط شد. به همین علت بود که در انتهای کار معرفی شد. منظور از پردازش تصویر، پردازش تصاویر دیجیتال و آنالوگی است. مثال سادهای هم دارد. تصویری که رویش کار میکنیم همان ورودی است. هر تغییری هم که اعمال کنیم در تصویر نهایی میشود خروجی. این تغییرات هم شامل ویرایش و بهبود کیفیت تصویر، طبقه بندی و متمایز ساختن اشیاء درون تصویر و اندازهگیری آنها، پردازش به شکلی متفاوت و بصری و بازسازی تصاویر است. پس تصویر نهایی در واقع تفسیر و تحلیل و اطلاعات مفیدی است که با این تغییرات بدست میآوریم. این تکنیک موثر، علاوه بر حوزههای صنعتی در حوزههای پزشکی و نظامی نیز کاربرد داشته و در متلب پیاده سازی میشوند. قبل از توضیح پردازش سیگنال، ابتدا توضیح میدهیم که اصلاً سیگنال چیست؟ سوال سادهای به نظر میرسد، اما کمتر کسی پیدا میشود که یک شرح علمی و کامل از این موضوع داشته باشد. سیگنال به هرچیزی که دربردارندۀ اطلاعات باشد، میگویند. کلمۀ "هرچیز" کمی کلی به نظر میآید اما درستترین تعریف است. چرا که در هر رشته و حوزۀ مختف این سیگنالها هم متفاوت بوده و حتی اسامی متغیری نیز دارند. امروزه با گسترش تکنولوژی و کامپیوترهای هوشمند، دادهها به صورت سیگنالهای دیجیتال طبقه بندی میشوند. به همین خاطر آنالیز یا پردازش این سیگنالها غیرقابل اجتناب است. در متلب و دیگر نرمافزارها این آنالیز در واحد زمان صورت میگیرد که از مشهورترین مثالهایش میتوان به پردازش سیگنالهای صوتی اشاره کرد. نکتۀ قابل توجه این است که در متلب چه برای پردازش تصویر و چه پردازش سیگنال باید تصویر یا سیگنالمان به صورت دیجیتالی باشد نه آنالوگی. Sampling rate یکی از ابزارهایی است که به همین منظور استفاده و اجرا میشود. Oversampling و Undersampling نیز دو نمونه از ابزارآلاتی هستند که در کنار نرخ نمونه برداری به کار گرفته میشوند. پیش از این در قسمت معرفی جعبه ابزارهای متلب تعدادی از آنها را معرفی کردیم که بد نیست دوباره سری به آنها بزنید و تجدید خاطره کنید. اصطلاحات پایین هم در بخش پردازش متلب به شدت کاربردیاند؛ در تصاویر زیر تا حد ممکن سعی کردیم آنها را معرفی کنیم: و کلام آخر کاربرد و مصارف متلب به شدت متنوع و هیجان انگیز است. در این مقاله سعی شد مهمترین و مشهورترین کاربردهایش را به درستی و به زبان ساده برای مخاطبان بازگو کرده و سعی کنیم رسالت خود در انتشار دانش را به حد کمال برسانیم. سپاسگزاریم که تا اینجا همراه ما بودید. نویسنده: سارا محمد پور، دانشجوی مهندسی شیمی اشتراک گذاری Facebook Googleplus Linkedin RSS Skype Twitter نظرات (0) نظرات هیچ نظری ثبت نشده است.