• متلب: ابزار آینده یا اسباب بازی گران قیمت. توضیحات برنامه Matlab

    اکثر توسعه دهندگان در تصور نحوی و ویژگی های آن مشکل دارند. موضوع این است که این زبان به طور مستقیم با یک محصول نرم افزاری محبوب مرتبط است که هزینه آن می تواند به مقادیر شگفت انگیزی برسد. بنابراین، سوال اصلی این است: آیا خود زبان Matlab خوب است؟ و آیا می تواند برای شما مفید باشد.

    استفاده

    اجازه دهید نه با یک انحراف استاندارد در تاریخ و بحث در مورد جوانب مثبت و منفی زبان، بلکه با محیط نرم افزار MATLAB / Simulink - تنها جایی که قهرمان این متن می تواند مفید باشد، شروع کنیم. فقط تصور کن ویرایشگر گرافیکی، که در آن می توانید بدون داشتن چندین سال تجربه و تحصیلات مرتبط به هر یک از ایده های خود جامه عمل بپوشانید. و هنگامی که یک طرح تعامل بین ابزارها ایجاد کردید، می توانید یک اسکریپت با کیفیت بالا برای استفاده مکرر دریافت کنید.

    MATLAB چنین ویرایشگری در دنیای داده است. دامنه کاربرد آن بی نهایت گسترده است: اینترنت اشیاء، امور مالی، پزشکی، فضا، اتوماسیون، روباتیک، سیستم های بی سیم و بسیاری موارد دیگر. به طور کلی، تقریبا امکانات نامحدودبرای جمع آوری و تجسم داده ها و همچنین پیش بینی، اما تنها در صورتی که امکان خرید بسته مناسب وجود داشته باشد.

    در مورد قیمت، تقریبا هیچ محدودیت بالایی وجود ندارد، اما پایین تر حدود 99 دلار است. برای ربودن چنین محصول قدرتمندی با پول نسبتاً کمی، باید دانشجو باشید. و البته شما یک محصول نسبتاً محدود دریافت خواهید کرد.

    ویژگی های زبان

    زبان متلب ابزاری است که تعامل یک اپراتور (اغلب حتی یک برنامه نویس) را با همه تضمین می کند. فرصت های موجودتجزیه و تحلیل، جمع آوری و ارائه داده ها. این زبان دارای مزایا و معایب آشکار زبانی است که در یک اکوسیستم بسته زندگی می کند.

    ایرادات:

      آهسته و مملو از عملگرها، دستورات، توابع، زبان، که هدف اصلی آن بهبود ادراک بصری است.

      تمرکز بالایی دارد. هیچ پلتفرم نرم افزاری دیگری وجود ندارد که MATLAB در آن مفید باشد.

      نرم افزار گران قیمت اگر دانشجو نیستید - یا آماده شوید که جیب های خود را خالی کنید یا از مرز قانون عبور کنید. و حتی اگر دانش آموز - قیمت مناسب و معقول است.

      تقاضای کم علیرغم علاقه زیاد به متلب تقریباً در همه زمینه ها، تنها تعداد کمی از آنها به طور واقعی و قانونی از آن استفاده می کنند.

    مزایای:

      یادگیری زبان آسان است، نحوی ساده و واضح دارد.

      فرصت های بزرگ اما این بیشتر مزیت کل محصول به عنوان یک کل است.

      به روز رسانی های مکرر، به عنوان یک قاعده، تحولات مثبت قابل توجهی حداقل چند بار در سال رخ می دهد.

      محیط نرم افزار به شما امکان می دهد آن را به یک کد "سریع" در C، C++ تبدیل کنید.

    مخاطب هدف

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

    یعنی اگر خیلی برنامه نویس نیستید، اما به هر نحوی حرفه شما با نیاز مرتبط است پردازش نرم افزارداده ها، سپس محصول MATLAB/Simulink با زبان مناسب می تواند کارهای روزمره شما را تا حد زیادی ساده کند.

    ادبیات

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

    آیا تجربه کار با متلب را دارید؟ و کدام؟

    برای کسانی که می خواهند برنامه نویس شوند - .

    محیط MATLAB شامل یک مترجم فرمان به زبان سطح بالا است. سیستم گرافیکی، بسته های افزودنی را بسته بندی می کند و به زبان C پیاده سازی می شود. همه کارها از طریق پنجره فرمان (Command Window) سازماندهی می شوند که با شروع برنامه matlab.exe ظاهر می شود. در حین کار، داده ها در حافظه (Workspace) قرار می گیرند، پنجره های گرافیکی برای نمایش منحنی ها، سطوح و سایر نمودارها ایجاد می شوند.

    محاسبات در پنجره فرمان در حالت گفتگو انجام می شود. کاربر دستورات را وارد می کند یا فایل هایی را با متون به زبان متلب راه اندازی می کند. مفسر ورودی را پردازش می کند و نتایجی را تولید می کند: داده های عددی و رشته ای، هشدارها و پیام های خطا. خط ورودی با >> مشخص شده است. پنجره فرمان اعداد وارد شده از صفحه کلید، متغیرها و نتایج محاسبات را نمایش می دهد. نام متغیرها باید با یک حرف شروع شود. علامت = مربوط به عملگر انتساب است. فشار دادن کلید Enter باعث می شود که سیستم بیان را ارزیابی کرده و نتیجه را نمایش دهد. از صفحه کلید در خط ورودی تایپ کنید:

    کلید Enter را فشار دهید، نتیجه محاسبه بر روی صفحه نمایش در ناحیه مشاهده ظاهر می شود:

    تمام مقادیر متغیرهای محاسبه شده در طول جلسه فعلی کار در یک منطقه مخصوص رزرو شده از حافظه رایانه به نام فضای کاری سیستم متلب (Workspace) ذخیره می شود. دستور clc می تواند محتویات پنجره فرمان را پاک کند، اما این روی محتویات فضای کاری تاثیری نخواهد داشت. هنگامی که دیگر نیازی به ذخیره تعدادی متغیر در جلسه جاری نیست، می توان آنها را با دستور clear یا clear(name1, name2, ...) از حافظه کامپیوتر پاک کرد. دستور اول همه متغیرها را از حافظه حذف می کند و دومی متغیرهای name1 و name2 را حذف می کند. از دستور who می توان برای نمایش لیستی از همه متغیرهای موجود در آن استفاده کرد این لحظهوارد فضای کاری سیستم شود. برای مشاهده مقدار هر متغیری از فضای کاری فعلی سیستم، کافیست نام آن را تایپ کرده و کلید Enter را فشار دهید.

    پس از پایان جلسه با سیستم متلب، تمامی متغیرهای محاسبه شده قبلی از بین می روند. برای ذخیره محتویات فضای کاری سیستم متلب در فایلی روی دیسک کامپیوتر، باید دستور منو File / Save Workspace As ... را اجرا کنید. به طور پیش فرض پسوند نام فایل mat است، بنابراین اینگونه فایل ها معمولا فایل های MAT نامیده می شود. برای بارگذاری یک فضای کاری که قبلاً روی دیسک ذخیره شده است در حافظه رایانه، دستور منو را اجرا کنید: File / Load Workspace ... .

    اعداد واقعی و دو نوع داده

    سیستم متلب در سطح ماشین تمام اعداد واقعی داده شده توسط مانتیس و توان را نشان می دهد، به عنوان مثال، 2.85093E+11، که در آن حرف E پایه درجه برابر با 10 را نشان می دهد. این نوع داده پایه، Double نامیده می شود. متلب به طور پیش فرض فرمت کوتاه را برای خروجی ممیز شناور تنظیم می کند که تنها چهار رقم اعشار را بعد از نقطه اعشار نمایش می دهد.

    یک مثال از صفحه کلید وارد کنید:

    »res=5.345*2.868/3.14-99.455+1.274

    نتیجه محاسبه را بدست آورید:

    اگر نمایش کامل اعداد واقعی re مورد نیاز است، دستور را از صفحه کلید وارد کنید:

    کلید enter را فشار دهید و بیشتر دریافت کنید اطلاعات دقیق:

    رز = -93.29900636942675

    اکنون تمامی نتایج محاسباتی با دقت بالایی در این جلسه در محیط سیستم متلب نشان داده خواهد شد. اگر قبل از خاتمه جلسه فعلی نیاز به بازگشت به دقت قدیمی نمایش اعداد واقعی در پنجره فرمان دارید، باید دستور را وارد کرده و (با فشار دادن کلید Enter) اجرا کنید:

    اعداد صحیح توسط سیستم در پنجره فرمان به صورت اعداد صحیح نمایش داده می شوند.

    عملیات حسابی بر روی اعداد واقعی و متغیرهای نوع دوگانه انجام می شود: جمع +، تفریق -، ضرب *، تقسیم / و توان ^ . اولویت در اجرا عملیات حسابیمعمولی عملگرهای دارای اولویت یکسان به ترتیب از چپ به راست انجام می شوند، اما پرانتز می تواند این ترتیب را تغییر دهد.

    اگر نیازی به دیدن نتیجه محاسبه برخی از عبارت ها در پنجره فرمان نیست، در انتهای عبارت وارد شده، یک نقطه ویرگول قرار داده و تنها سپس Enter را فشار دهید.

    سیستم متلب شامل تمام توابع ابتدایی اولیه برای محاسبات با اعداد واقعی است. هر تابعی با نام خود، لیست آرگومان های ورودی (آنها با کاما از هم جدا شده اند و در داخل پرانتز به دنبال نام تابع قرار دارند) و مقدار محاسبه شده (برگردانده شده) مشخص می شود. فهرستی از تمام توابع ریاضی ابتدایی موجود در سیستم را می توان با استفاده از دستور help elfun به دست آورد. پیوست 1 توابع استاندارد یک آرگومان واقعی را فهرست می کند.

    یک عبارت شامل محاسبه تابع آرکسین را ارزیابی کنید:

    مطمئن شوید که نتیجه زیر را دریافت می کنید:

    مربوط به عدد پی. در سیستم متلب برای محاسبه عدد پی، علامت خاصی وجود دارد: پی. (لیست متغیرهای سیستم متلب در پیوست 2 آمده است).

    متلب همچنین دارای توابع منطقی است، توابع مربوط به حساب اعداد صحیح (گرد کردن به نزدیکترین عدد صحیح: گرد، برش قسمت کسری یک عدد: ثابت). همچنین تابع mod - باقی مانده تقسیم، با در نظر گرفتن علامت، علامت - علامت یک عدد، lcm - کمترین مضرب مشترک، perms - محاسبه تعداد جایگشت ها و nchoosek - تعداد ترکیب ها وجود دارد. و خیلی های دیگر. بسیاری از توابع دامنه تعریف متفاوتی از مجموعه اعداد حقیقی دارند.

    علاوه بر عملیات حسابی بر روی عملوندهای نوع دوگانه، عملیات رابطه ای و منطقی نیز انجام می شود. عملیات رابطه ای دو عملوند را از نظر قدر مقایسه می کنند. این عملیات با کاراکترها یا ترکیبی از کاراکترهای زیر نوشته می شود (جدول 1):

    میز 1


    اگر عملگر رابطه‌ای درست باشد، مقدار آن 1 و اگر نادرست باشد، 0 است. عملگرهای رابطه‌ای اولویت کمتری نسبت به عملگرهای حسابی دارند.

    یک عبارت با عملیات رابطه ای از صفحه کلید تایپ کرده و محاسبه کنید

    » a=1; b=2; c=3;

    » res=(a

    نتیجه زیر را دریافت خواهید کرد:

    عملیات منطقی روی اعداد واقعی با علائم ذکر شده در جدول 2 نشان داده می شود:

    جدول 2


    & | ~
    و یا نه

    دو مورد اول از این عملیات باینری (دو عملوندی) و آخرین مورد یک واحد (تک عملوند) است. عملگرهای منطقی عملوندهای خود را به عنوان "درست" (نه برابر با صفر) یا "نادرست" (برابر با صفر) در نظر می گیرند. اگر هر دو عملوند عملیات "AND" درست باشد (مساوی صفر نیست)، نتیجه این عمل 1 است ("درست"). در تمام موارد دیگر، عملیات "AND" مقدار 0 ("نادرست") را تولید می کند. عملیات OR فقط در صورتی 0 (نادرست) تولید می کند که هر دو عملوند نادرست (برابر صفر) باشند. عملیات "NOT" "نادرست" را به "درست" تبدیل می کند. عملیات منطقی کمترین اولویت را دارند.

    اعداد مختلط و توابع مختلط

    متغیرهای پیچیده، مانند واقعی، به طور خودکار دارای نوع دوگانه هستند و نیازی به توضیح اولیه ندارند. حروف i یا j برای واحد خیالی رزرو شده اند. در مواردی که ضریب جلوی واحد فرضی عدد نیست، بلکه یک متغیر است، باید از علامت ضرب بین آنها استفاده شود. بنابراین، اعداد مختلط را می توان به صورت زیر نوشت:

    » 2+3i; -6.789+0.834e-2*i; 4-2j; x+y*i;

    تقریباً تمام توابع ابتدایی امکان محاسبات با آرگومان های پیچیده را فراهم می کنند. بیان را ارزیابی کنید:

    » res=sin(2+3i)*atan(4i)/(1 -6i)

    نتیجه این خواهد بود:

    1.8009 - 1.91901

    توابع زیر به ویژه برای کار با اعداد مختلط طراحی شده اند: abs (مقدار مطلق یک عدد مختلط)، conj (مجموعه مختلط)، تصویر (قسمت خیالی یک عدد مختلط)، واقعی (قسمت واقعی یک عدد مختلط)، زاویه ( آرگومان یک عدد مختلط)، isreal ("درست" اگر عدد واقعی باشد). توابع یک متغیر مختلط در پیوست 1 فهرست شده است.

    با توجه به عملیات حسابی، هیچ چیز جدیدی برای اعداد مختلط (در مقایسه با اعداد واقعی) غیرممکن است که بگوییم. همین امر در مورد عملیات رابطه‌ای «برابر» و «معادل نیست» صدق می‌کند. بقیه عملیات رابطه‌ای تنها بر اساس بخش‌های واقعی این عملوندها نتیجه می‌دهند.

    یک عبارت را وارد کنید، نتیجه را دریافت کنید و آن را توضیح دهید:

    » c=2+3i; d=2i; » c>d

    اگر عملوندهای بولی صفر باشند، عملوندها را نادرست در نظر می گیرند. اگر حداقل یک قسمت از عملوند مختلط (واقعی یا خیالی) برابر با صفر نباشد، چنین عملوندی درست تلقی می شود.

    آرایه های عددی

    برای ایجاد یک آرایه تک بعدی می توانید از عملیات الحاق که با براکت مشخص می شود استفاده کنید. عناصر آرایه بین براکت ها قرار می گیرند و با فاصله یا کاما از یکدیگر جدا می شوند:

    »al=; d=;

    برای دسترسی به یک عنصر آرایه جداگانه، باید عملیات نمایه سازی را اعمال کنید، که برای آن، پس از نام عنصر، شاخص عنصر را در پرانتز مشخص کنید.

    شما می توانید عناصر یک آرایه از قبل تشکیل شده را با اعمال عملیات نمایه سازی و انتساب تغییر دهید. به عنوان مثال، با وارد کردن:

    عنصر سوم آرایه را تغییر خواهیم داد. یا بعد از مقدمه:

    » al(2)=(al(1)+al(3))/2;

    عنصر دوم آرایه برابر با میانگین حسابی عناصر اول و سوم می شود. نوشتن یک عنصر ناموجود کاملاً معتبر است - به معنای افزودن یک عنصر جدید به آرایه موجود است:

    با اعمال تابع طول به آرایه a1 پس از انجام این عمل، متوجه می شویم که تعداد عناصر آرایه به چهار عنصر افزایش یافته است:

    همین عمل - "طولانی کردن آرایه a1" - می تواند با استفاده از عملیات الحاق انجام شود:

    شما می توانید یک آرایه را با فهرست کردن همه عناصر آن به صورت جداگانه تعریف کنید:

    » a3(1)=67; a3(2)=7.8; a3(3)=0.017;

    با این حال، این روش ایجاد کارآمد نیست. راه دیگر برای ایجاد یک آرایه یک بعدی بر اساس استفاده از یک تابع خاص است که با یک دو نقطه (عملیات تشکیل طیفی از مقادیر عددی) مشخص می شود. بعد از دو نقطه، اولین عدد محدوده، گام (افزایش) و عدد نهایی محدوده را تایپ کنید. مثلا:

    »diap=3.7:0.3:8.974;

    اگر نیازی به نمایش کل آرایه حاصل ندارید، در پایان مجموعه (بعد از عدد انتهایی محدوده) باید یک نقطه ویرگول تایپ کنید. برای اینکه بفهمید چند عنصر در یک آرایه وجود دارد، تابع طول (نام آرایه) را فراخوانی کنید.

    برای ایجاد یک آرایه دو بعدی (ماتریس) می توانید از عملیات الحاق نیز استفاده کنید. عناصر آرایه با توجه به موقعیت آنها در خطوط یکی پس از دیگری تایپ می شوند، از نقطه ویرگول به عنوان جداکننده خط استفاده می شود.

    از صفحه کلید وارد شوید:

    » a=

    ENTER را فشار دهید، دریافت می کنیم:

    ماتریس حاصل a با اندازه 3x2 (اولی تعداد ردیف ها را نشان می دهد، دومی - تعداد ستون ها) را نیز می توان با الحاق عمودی بردارهای ردیف تشکیل داد:

    »a=[;;];

    یا الحاق افقی ستون-بردارها:

    » a=[,];

    ساختار آرایه های ایجاد شده را می توان با استفاده از دستور whos (نام آرایه)، بعد آرایه توسط تابع ndims و اندازه آرایه بر اساس اندازه پیدا کرد.

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

    » a(1,1)=1; a(1,2)=2; a(2,1)=3; » a(2,2)=4; a(3,1)=5; a(3,2)=6;

    با این حال، اگر قبل از شروع نوشتن عناصر آرایه، آرایه ای با اندازه مورد نیاز با استفاده از توابع ones (m, n) یا صفر (m, n) پر شده با یک یا صفر (m is) بسیار کارآمدتر خواهد بود. تعداد سطرها، n تعداد ستون هاست). هنگامی که این توابع فراخوانی می شوند، حافظه از قبل برای یک اندازه آرایه مشخص تخصیص داده می شود، پس از آن تجویز تدریجی عناصر با مقادیر مورد نظر نیازی به بازسازی ساختار حافظه اختصاص داده شده برای آرایه ندارد. این توابع همچنین می توانند هنگام تعیین آرایه هایی با ابعاد دیگر استفاده شوند.

    اگر پس از تشکیل آرایه X، باید اندازه آن را بدون تغییر عناصر آرایه تغییر دهید، می توانید از تابع تغییر شکل (X, M, N) استفاده کنید که در آن M و N اندازه های جدید آرایه X هستند.

    توضیح عملکرد این تابع تنها بر اساس روشی که سیستم متلب عناصر آرایه ها را در حافظه کامپیوتر ذخیره می کند، ممکن است. آنها را در یک ناحیه پیوسته از حافظه به ترتیب ستون ذخیره می کند: ابتدا عناصر ستون اول و سپس عناصر ستون دوم و غیره قرار می گیرند. علاوه بر داده های واقعی (عناصر آرایه)، حافظه رایانه نیز ذخیره می شود اطلاعات کنترلی: نوع آرایه (مثلاً دوتایی)، ابعاد و اندازه آرایه، سایر اطلاعات خدمات. این اطلاعات برای تعیین مرزهای ستون ها کافی است. نتیجه این است که برای تغییر شکل ماتریس با تابع تغییر شکل، کافی است فقط اطلاعات سرویس را تغییر دهید و داده های خود را لمس نکنید.

    شما می توانید ردیف های یک ماتریس را با ستون های آن با استفاده از عملیات انتقال که با علامت مشخص می شود تعویض کنید." (نقطه و آپستروف).

    »A=;

    عملیات " (آپوستروف) جابجایی را برای ماتریس های واقعی و جابجایی را با صرف مختلط همزمان برای ماتریس های پیچیده انجام می دهد.

    اشیایی که متلب با آنها کار می کند آرایه هستند. حتی یک عدد داده شده در نمایش داخلی متلب آرایه ای متشکل از یک عنصر است. متلب به شما این امکان را می دهد که محاسبات را با آرایه های عظیم اعداد به آسانی و با اعداد واحد انجام دهید و این یکی از قابل توجه ترین و مهم ترین مزیت های سیستم متلب نسبت به سایر بسته های نرم افزاری متمرکز بر محاسبات و برنامه نویسی است. علاوه بر حافظه مورد نیاز برای ذخیره عناصر عددی (هر کدام 8 بایت برای اعداد واقعی و 16 بایت برای اعداد مختلط)، MATLAB به طور خودکار حافظه را برای اطلاعات کنترلی هنگام ایجاد آرایه ها اختصاص می دهد.

    محاسبات آرایه

    در زبان‌های برنامه‌نویسی سنتی، آرایه‌ها عنصر به عنصر محاسبه می‌شوند، به این معنا که هر عملیات جداگانه باید بر روی یک عنصر جداگانه از آرایه برنامه‌ریزی شود. در زبان M سیستم متلب، عملیات گروهی قدرتمند در کل آرایه به یکباره مجاز است. این عملیات گروهی سیستم متلب است که امکان تنظیم عبارات را به روشی بسیار فشرده فراهم می کند که در محاسبه آن مقدار عظیمی از کار در واقع انجام می شود.

    عملیات جمع و تفریق ماتریس با علائم استاندارد + و - نشان داده می شود.

    ماتریس های A و B را تعریف کنید و عملیات جمع ماتریس را انجام دهید:

    »A=; B=;

    اگر از عملوندها استفاده شود اندازه های متفاوت، یک پیغام خطا صادر می شود، مگر اینکه یکی از عملوندها اسکالر باشد. هنگام انجام عملیات A + اسکالر (ماتریس A -)، سیستم اسکالر را به آرایه‌ای با اندازه A گسترش می‌دهد که عنصر به عنصر به A اضافه می‌شود.

    برای ضرب عنصری و تقسیم عنصری آرایه‌های هم‌اندازه، و همچنین توان عنصری آرایه‌ها، از عملیاتی که با ترکیب دو نماد نشان داده می‌شوند استفاده می‌شود: .*، ./، و .^. استفاده از ترکیب شخصیت ها با این واقعیت توضیح داده می شود که نمادهای * و / نشان دهنده عملیات ویژه هستند جبر خطیبیش از بردارها و ماتریس ها

    علاوه بر عملیات ./ که عملیات تقسیم عنصر راست نامیده می شود، عملیات تقسیم بر اساس عنصر چپ نیز وجود دارد. \. تفاوت بین این عملیات: عبارت A./B منجر به ماتریسی با عناصر A (k, m) / B (k, m) می شود و عبارت A. \ B منجر به ماتریسی با عناصر B (k, m) می شود. ) / A (k , m).

    علامت * به ضرب ماتریس ها و بردارها به معنای جبر خطی اختصاص دارد.

    علامت \ در سیستم MATLAB برای حل یک مسئله جبر خطی نسبتاً پیچیده - یافتن ریشه های یک سیستم معادلات خطی ثابت است. به عنوان مثال، اگر شما نیاز به حل یک سیستم معادلات خطی دارید Ay = b، که در آن A یک ماتریس مربع داده شده به اندازه N´N است، b یک بردار ستون داده شده به طول N است، سپس برای پیدا کردن بردار ستون مجهول y، آن را پیدا کنید. برای محاسبه عبارت A \ b کافی است (این معادل عمل : A -1 B است).

    مسائل معمولی هندسه تحلیلی در فضا، مربوط به یافتن طول بردارها و زوایای بین آنها، با محاسبه حاصلضرب اسکالر و برداری، به راحتی با ابزارهای مختلف سیستم متلب حل می شوند. به عنوان مثال، برای یافتن حاصل ضرب بردارها، تابع ویژه cross در نظر گرفته شده است، به عنوان مثال:

    »u=; v=;

    حاصل ضرب اسکالر بردارها را می توان با استفاده از تابع محاسبه کرد همه منظوره sum که مجموع تمام عناصر بردارها را محاسبه می کند (برای ماتریس ها، این تابع مجموع تمام ستون ها را محاسبه می کند). حاصل ضرب اسکالر، همانطور که مشخص است، برابر است با مجموع حاصلضرب مختصات (عناصر) مربوطه بردارها. بنابراین عبارت این است: » sum(u.*v)

    حاصل ضرب نقطه ای دو بردار u و v را محاسبه می کند. حاصل ضرب نقطه ای را می توان به صورت زیر محاسبه کرد: u*v".

    طول یک بردار با استفاده از حاصل ضرب نقطه و تابع جذر محاسبه می شود، به عنوان مثال:

    » sqrt(sum(u.*u))

    عملیات رابطه ای و منطقی که قبلاً برای اسکالرها در نظر گرفته شده بود، در مورد آرایه ها عنصر به عنصر انجام می شود. هر دو عملوند باید اندازه یکسانی داشته باشند و عملیات نتیجه ای با اندازه یکسان را برمی گرداند. در حالتی که یکی از عملوندها اسکالر باشد، بسط مقدماتی آن انجام می شود که مفهوم آن قبلاً با استفاده از مثال عملیات حسابی توضیح داده شده است.

    در میان توابعی که ماتریس هایی با ویژگی های داده شده تولید می کنند، اغلب از تابع استفاده می شود چشم، که ماتریس های مربع واحد و همچنین تابع رند را تولید می کند که به طور گسترده در عمل استفاده می شود و آرایه ای با عناصر تصادفی ایجاد می کند که به طور یکنواخت در بازه 0 تا 1 توزیع شده اند. به عنوان مثال، عبارت

    یک آرایه ایجاد می کند اعداد تصادفیاندازه 3x3 با عناصر به طور مساوی در فاصله 0 تا 1 توزیع شده است.

    اگر این تابع را با دو آرگومان فراخوانی کنید، برای مثال R=rand(2,3)، یک ماتریس 2x3 R از عناصر تصادفی دریافت خواهید کرد. هنگامی که رند با سه یا چند آرگومان اسکالر فراخوانی می شود، آرایه های چند بعدی از اعداد تصادفی تولید می شوند.

    تعیین کننده ماتریس مربع با استفاده از تابع det محاسبه می شود. از جمله توابعی که علاوه بر موارد فوق ساده ترین محاسبات را روی آرایه ها انجام می دهد توابع جمع، از تابع prod نیز استفاده می شود که در همه چیز شبیه تابع مجموع است، فقط نه مجموع عناصر، بلکه حاصل ضرب آنها را محاسبه می کند. توابع max و min به ترتیب بیشترین و حداقل عناصر آرایه ها را جستجو می کنند. برای بردارها، یک مقدار عددی واحد را برمی‌گردانند و برای ماتریس‌ها، مجموعه‌ای از عناصر شدید محاسبه‌شده برای هر ستون را تولید می‌کنند. تابع sort عناصر آرایه های یک بعدی را به ترتیب صعودی مرتب می کند و برای ماتریس ها برای هر ستون جداگانه مرتب می کند.

    متلب دارای توانایی منحصر به فردی برای انجام محاسبات گروهی روی آرایه ها با استفاده از توابع ریاضی رایج است که فقط با آرگومان های اسکالر در زبان های برنامه نویسی سنتی کار می کنند. در نتیجه، با کمک نمادهای بسیار فشرده، راحت برای تایپ در حالت تعاملی با پنجره فرمان سیستم MATLAB، می توان حجم زیادی از محاسبات را انجام داد. به عنوان مثال، فقط دو عبارت کوتاه

    » x=0:0.01:pi/2; y=sin(x);

    مقادیر تابع sin را همزمان در 158 نقطه محاسبه کنید و دو بردار x و y را با 158 عنصر تشکیل دهید.

    توابع رسم

    قابلیت های گرافیکی سیستم متلب قدرتمند و متنوع است. بیایید آسان ترین ویژگی ها (گرافیک سطح بالا) را بررسی کنیم.

    دو بردار x و y را تشکیل دهید:

    » x=0:0.01:2; y=sin(x);

    فراخوانی تابع:

    و نموداری از تابع را روی صفحه دریافت خواهید کرد (شکل 1).

    برنج. 1. نمودار تابع y=sin(x)

    متلب اشیاء گرافیکی را در پنجره های گرافیکی ویژه ای نمایش می دهد که عبارت Figure در عنوان آنها وجود دارد. بدون حذف اولین پنجره گرافیکی از صفحه نمایش، عبارات را از صفحه کلید وارد کنید

    و یک نمودار جدید از تابع در همان پنجره گرافیکی دریافت کنید (در این مورد، محورهای مختصات قدیمی و نمودار ناپدید می شوند - این را می توان با دستور clf نیز به دست آورد، دستور cla فقط نمودار را حذف می کند و محورهای مختصات را به محدوده استاندارد آنها از 0 تا 1).

    اگر نیاز به ترسیم نمودار دوم "در بالای نمودار اول" دارید، قبل از فراخوانی مجدد تابع گرافیکی نمودار، باید دستور hold on را اجرا کنید که برای نگه داشتن پنجره گرافیکی فعلی طراحی شده است:

    » x=0:0.01:2; y=sin(x);

    تقریباً همین اتفاق می افتد (شکل 2) اگر تایپ کنید:

    » x=0:0.01:2; y=sin(x); z=cos(x);

    »طرح (x,y,x,z)

    برنج. 2. نمودارهای توابع y=sin(x)، z=cos(x)، ساخته شده در یک پنجره گرافیکی

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

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

    به عنوان مثال، برای محاسبات قبلی با توابع sin و cos، نمودارهای این دو تابع را در زیر ناحیه اول رسم کنید و تابع exp(x) را در زیر ناحیه دوم همان پنجره گرافیکی رسم کنید. شکل 3):

    » subplot(1,2,1); نمودار (x,y,x,z)

    » subplot(1,2,2); نمودار (x,w)

    برنج. 3. نمودارهای توابع y=sin(x)، z=cos(x) و w=exp(x)، ساخته شده در دو ناحیه فرعی از یک پنجره گرافیکی

    محدوده متغیرها در محورهای مختصات این زیر دامنه ها مستقل از یکدیگر هستند. تابع subplot سه آرگومان عددی می گیرد که اولی برابر با تعداد ردیف های نمودار فرعی، آرگومان دوم برابر با تعداد ستون های نمودار فرعی و آرگومان سوم تعداد طرح های فرعی است (تعداد در کنار آن شمارش می شود. ردیف ها، در صورت اتمام به یک ردیف جدید منتقل می شوند). شما می توانید عمل تابع subplot را با دستور حذف کنید:

    » طرح فرعی (1،1،1)

    اگر برای یک نمودار منفرد محدوده متغیرها در امتداد یک یا هر دو محور مختصات خیلی بزرگ است، می توانید از توابع رسم در مقیاس لگاریتمی استفاده کنید. توابع semilogx، semilogy و loglog برای این کار طراحی شده اند.

    با استفاده از تابع گرافیکی قطبی می توانید تابع را در مختصات قطبی رسم کنید (شکل 4).

    » phi=0:0.01:2*pi; r=sin(3*phi);

    برنج. 4. نمودار تابع r=sin(3*phi) در مختصات قطبی

    در نظر گرفتن ویژگی های اضافیمربوط به مدیریت ظاهرنمودارها - تنظیم رنگ و سبک خطوط، و همچنین قرار دادن برچسب های مختلف در پنجره گرافیکی. مثلا دستورات

    » x=0:0.1:3; y=sin(x);

    » نمودار (x,y,r-,x,y, "ko")

    به شما این امکان را می دهد که نمودار را مانند یک خط قرمز قرمز به نظر بیاورید (شکل 5)، که روی آن دایره های سیاه در نقاط محاسبه شده گسسته قرار می گیرند. در اینجا تابع نمودار یک تابع را دو بار اما در دو سبک متفاوت ترسیم می کند. اولین مورد از این سبک ها دارای برچسب "r-" است که به معنای خط کشیده شده به رنگ قرمز (حرف r) و stroke به معنای یک خط ثابت است. سبک دوم با برچسب "ko" به معنای ترسیم دایره های سیاه (حرف k) (حرف o) به جای نقاط محاسبه شده است.

    برنج. 5. رسم تابع y=sin(x) در دو سبک مختلف

    به طور کلی نمودار تابع (x1, y1, s1, x2, y2, s2, ...) به شما امکان می دهد چندین نمودار از توابع y1(x1), y2(x2), ... را در یک پنجره گرافیکی با ترسیم ترکیب کنید. آنها را با سبک های s1، s2، ... و غیره.

    سبک‌های s1، s2،... به‌عنوان مجموعه‌ای از سه نشانگر کاراکتری که در گیومه‌های تکی محصور شده‌اند، مشخص می‌شوند. یکی از این نشانگرها نوع خط را مشخص می کند (جدول 3). نشانگر دیگری رنگ را تنظیم می کند (جدول 4). آخرین نشانگر نوع "نقاط" را تعیین می کند (جدول 5). ممکن است هر سه نشانگر را مشخص نکنید. سپس از نشانگرهای پیش فرض استفاده می شود. ترتیب مشخص شدن نشانگرها مهم نیست، یعنی "r+-" و "-+r" نتیجه یکسانی دارند.

    جدول 3. نشانگرهای نوع خط

    جدول 4 نشانگرهایی که رنگ خط را تعیین می کنند

    جدول 5 نشانگرهایی که نوع نقطه را تعریف می کنند

    اگر یک نشانگر روی نوع نقطه در خط استایل قرار دهید، اما نشانگر را روی نوع خط قرار ندهید، فقط نقاط محاسبه شده نمایش داده می شوند و با یک خط پیوسته به هم متصل نمی شوند.


    سیستم متلب محدودیت های محور افقی را بر روی مقادیر مشخص شده توسط کاربر برای متغیر مستقل تعیین می کند. برای متغیر وابسته در محور عمودی، متلب به طور مستقل محدوده مقادیر تابع را محاسبه می کند. اگر هنگام ترسیم نمودارها در سیستم متلب نیاز دارید که این ویژگی مقیاس بندی را کنار بگذارید، باید به صراحت محدودیت های خود را برای تغییر متغیرها در امتداد محورهای مختصات اعمال کنید. این کار با استفاده از تابع axis() انجام می شود.

    از توابع xlabel، ylabel، عنوان و متن برای قرار دادن کتیبه های مختلف بر روی شکل به دست آمده استفاده می شود. تابع xlabel یک برچسب برای محور افقی، تابع ylabel همچنین برای محور عمودی ایجاد می کند (علاوه بر این، این برچسب ها در امتداد محورهای مختصات قرار دارند). اگر می خواهید کتیبه ای را در یک مکان دلخواه در شکل قرار دهید، از تابع متن استفاده کنید. عنوان کلی برای نمودار توسط تابع عنوان ایجاد می شود. علاوه بر این، با استفاده از دستور grid on، می توانید یک شبکه اندازه گیری را در کل منطقه ترسیم اعمال کنید. به عنوان مثال (شکل 6):

    » x=0:0.1:3; y=sin(x);

    »طرح (x,y,,r-,x,y,ko”)

    »title("گراف تابع sin(x)");

    » xlabel("xcoordinate"); ylabel("sin(x)");

    » text(2.1, 0.9, "\leftarrowsin(x)"); شبکه روشن است

    برچسب با تابع متن از نقطه ای با مختصات مشخص شده توسط دو آرگومان اول شروع می شود. به طور پیش فرض، مختصات در همان واحدهای مختصات مشخص شده در محورهای افقی و عمودی مشخص می شوند. کاراکترهای کنترلی ویژه بعد از نویسه \ (بکسلش) در متن وارد می شوند.

    گرافیک سه بعدی

    هر نقطه در فضا با سه مختصات مشخص می شود. مجموعه ای از نقاط متعلق به یک خط در فضا باید به عنوان سه بردار مشخص شود که اولی شامل مختصات اول این نقاط، بردار دوم - مختصات دوم آنها، بردار سوم - مختصات سوم است. پس از آن، این سه بردار را می توان به ورودی تابع plot3 وارد کرد، که خط سه بعدی مربوطه را بر روی صفحه نمایش می دهد و تصویر حاصل را می سازد (شکل 7). از صفحه کلید وارد شوید:

    » t=0:pi/50:10*pi; x=sin(t);

    » y=cos(t); plot3 (x,y,t); شبکه روشن است

    برنج. 7. نمودار یک مارپیچ که با استفاده از تابع plot3 ساخته شده است

    از همان تابع plot3 نیز می توان برای به تصویر کشیدن سطوح در فضا استفاده کرد، البته اگر نه یک خط، بلکه تعداد زیادی خط بکشید. از صفحه کلید تایپ کنید:

    » u=-2:0.1:2; v=-1:0.1:1;

    »=meshgrid(u,v);

    » z=exp(-X.^2-Y.^2);

    یک تصویر سه بعدی از نمودار تابع به دست آورید (شکل 8).

    تابع plot3 نموداری را به صورت مجموعه ای از خطوط در فضا ترسیم می کند که هر یک از آنها برشی از یک سطح سه بعدی توسط صفحات موازی با صفحه yOz هستند. علاوه بر این ساده ترین تابعسیستم متلب دارای تعدادی عملکرد دیگر است که به شما امکان می دهد در نمایش نمودارهای سه بعدی به واقع گرایی بیشتری برسید.

    برنج. 8. رسم سطح در فضا، با استفاده از تابع plot3 ساخته شده است


    اسکریپت ها و m-فایل ها.

    برای عملیات ساده، حالت تعاملی راحت است، اما اگر نیاز به انجام محاسبات مکرر یا پیاده سازی الگوریتم های پیچیده باشد، باید از فایل های MATLAB (پسوند فایل از یک حرف m تشکیل شده است) استفاده شود. script-m-file (یا اسکریپت) - یک فایل متنی حاوی دستورالعمل های MATLAB که در حالت دسته ای خودکار اجرا می شود. ایجاد چنین فایلی با استفاده از ویرایشگر سیستم MATLAB راحت تر است. از پنجره فرمان سیستم متلب با دستور منو File/New/M-file (یا دکمه سمت چپ نوار ابزار که یک صفحه کاغذ سفید سفید را نشان می دهد) فراخوانی می شود. اگر نام فایل اسکریپت (بدون پسوند) را در خط فرمان وارد کنید، دستورات نوشته شده در فایل های اسکریپت اجرا می شوند. متغیرهای تعریف شده در پنجره فرمان و متغیرهای تعریف شده در اسکریپت ها یک فضای کاری واحد از سیستم متلب را تشکیل می دهند و متغیرهای تعریف شده در اسکریپت ها جهانی هستند، مقادیر آنها جایگزین مقادیر همان متغیرهایی می شود که قبل از فراخوانی این مورد استفاده می شد. فایل اسکریپت

    پس از ایجاد متن اسکریپت، باید آن را در دیسک ذخیره کنید. مسیر دایرکتوری حاوی فایل باید برای سیستم متلب مشخص باشد. دستور File/Set Path کادر محاوره ای Directory Path Viewer را فراخوانی می کند. برای افزودن یک دایرکتوری جدید به لیست مسیرهای دسترسی، دستور منوی Path/Add to path را اجرا کنید.

    اسکریپت ها

    در کنار کار بر روی خط فرمان، راه دیگری برای اجرای دستورات وجود دارد. این نوشتن برنامه است.

    اسکریپت دنباله ای از دستورات متلب است که روی فایلی با پسوند ".m" نوشته می شود. اینها معمولی هستند فایل های متنی. برای نوشتن آنها می توانید از هر ویرایشگر متنی استفاده کنید.

    برای ایجاد یک اسکریپت، به طور کلی، کافی است یک ویرایشگر متن معمولی در دسترس داشته باشید. ما از ویرایشگر تعبیه شده در محیط MATLAB استفاده خواهیم کرد. برای ایجاد یک اسکریپت جدید از دکمه "Script جدید" در گوشه بالا سمت چپ استفاده کنید. پس از فشار دادن این دکمه، یک پنجره ویرایشگر متن ظاهر می شود (شکل 5).

    شکل 5. ویرایشگر کد MATLAB بیایید یک برنامه کوچک ایجاد کنیم:

    fprintf ("سلام جهان!\n")

    اکنون باید این اسکریپت را ذخیره کنید، برای این کار باید روی دکمه "ذخیره" در سمت چپ کلیک کنید گوشه بالایی، پس از آن متلب پیشنهاد می کند آن را در فهرست فعلی ("پوشه فعلی") ذخیره کند. بیایید نام اسکریپت را "Example1.m" بگذاریم و آن را ذخیره کنیم. مطلوب است که اسکریپت در دایرکتوری فعلی ذخیره شود، بنابراین متلب به دنبال اسکریپت هایی برای اجرا می شود.

    در پوشه هایی که در مسیر متغیر داخلی MATLAB لیست شده اند. این لیست همچنین شامل دایرکتوری فعلی است که در محیط MATLAB در سمت راست در یک منطقه شناور خاص نمایش داده شده است. به طور پیش فرض، اسکریپت در دایرکتوری فعلی ذخیره می شود، بنابراین می توانید بلافاصله آن را فراخوانی کنید. می توانید با وارد کردن نام آن (نام فایل m که در آن ذخیره شده است) در خط فرمان و فشار دادن "Enter" یا "Run" در ویرایشگر کد، اسکریپت را برای اجرا شروع کنید. در هر دو مورد، پنجره فرمان خروجی زیر را نمایش می دهد:

    >> مثال 1 سلام جهان!

    بیایید مثال دیگری را در نظر بگیریم. یک اسکریپت وجود دارد:

    x = 0:0.02:2*pi; a = 0.3;

    y = a * sin(x) + b * cos(x); نمودار (x, y)

    بیایید آن را در فایل Example2.m ذخیره کرده و برای اجرا اجرا کنیم. در نتیجه، متلب تابع y = a sin(x)+ b cos(x) را محاسبه و رسم خواهد کرد.

    همچنین توجه می کنیم که پس از اجرای اسکریپت، متغیرهای x , a , b و y در پنجره Workspace ظاهر شدند. برای توضیح اینکه چرا اینطور است، یک مفهوم بسیار مهم در متلب به عنوان فضای کاری در نظر بگیرید.

    فضای کاری در متلب

    فضای کاری سیستم متلب ناحیه ای از حافظه است که متغیرهای سیستم در آن قرار دارند. فضاهای کاری در متلب دو نوع هستند:

    فضای کار پایه - فضای کار پایه;

    فضای کار تابع - فضای کار تابع.

    همه متغیرهای فضای کاری از لحظه ای که در هنگام کار با این فضای کاری اعلام می شوند تا زمانی که به صراحت با استفاده از دستور clear حذف شوند یا تا پایان اعتبار فضای کاری در آن وجود دارند، مثلاً برای فضای کاری پایه، این بسته شدن MATLAB است.

    هنگامی که اسکریپت اجرا می شود، یک فضای کاری جدید ایجاد نمی کند، بلکه با فضای کاری از جایی که فراخوانی شده است کار می کند.

    وقتی اسکریپت را از پنجره فرمان فرا می‌خوانیم، با فضای کار پایه کار می‌کند، بنابراین به تمام متغیرهایی که قبل از فراخوانی اسکریپت ایجاد کرده‌ایم دسترسی دارد. همچنین، اگر اسکریپت متغیرهای بیشتری ایجاد کند، پس از آن در دسترس خواهند بود

    تکمیل آن

    نظرات

    سبک نوشتاری خوب کد برنامهبه عنوان نظر روی کدی که می نویسید حساب می شود. نظرات به هیچ وجه بر عملکرد برنامه تأثیر نمی گذارد و در خدمت ارائه است اطلاعات اضافی. نظرات به دیگران کمک می کند تا الگوریتم شما را درک کنند و به شما کمک می کند تا ماهیت آنچه را که نوشته اید پس از مدت زمان مشخصی به یاد بیاورید، زمانی که قبلاً آنچه را که برنامه ریزی کرده اید را فراموش کرده اید. متلب از کاراکتر "%" برای نشان دادن شروع یک نظر استفاده می کند.

    % تولید اعداد تصادفی با توزیع یکنواخت

    % محاسبه انتظارات ریاضی اعداد تولید شده

    % نمایش داده ها بر روی نمودار

    % 50 اعداد تصادفی

    % تولید و اختصاص بردار تصادفی

    مقادیر متغیر r

    % بردار تولید شده را روی نمودار نمایش دهید

    ٪ یک خط بکش

    از طریق (0، m) و (n، m)

    % میانگین حسابی مقادیر را محاسبه کنید

    بردار r

    طرح(،)

    عنوان ("میانگین داده های یکنواخت تصادفی") % عنوان نمودار

    کارکرد

    تنوع دیگر برنامه های متلب- کارکرد. بر خلاف اسکریپت ها، هنگام فراخوانی یک تابع، یک فضای کاری جدید ایجاد می کند، بنابراین متغیرهای اعلام شده خارج از کد آن در داخل تابع قابل مشاهده نخواهند بود. بنابراین از پارامترهای ورودی و خروجی برای پیوند دادن تابع با کد خارجی استفاده می شود. سینتکس کلی یک اعلان تابع را در نظر بگیرید:

    function = function_name(x1,...,xM) operator_1 operator_2

    operator_n پایان

    این تابع در یک فایل m جداگانه موجود است.

    یک تابع با کلمه کلیدی تابع و سپس مربع شروع می شود

    پرانتزها که با کاما از هم جدا شده اند، نام متغیرهای خروجی هستند. بعد علامت "=" و نام تابع می آید. نام تابع از قوانینی مشابه با نام متغیرها پیروی می کند. همچنین توجه داشته باشید که نام تابع باید حتماً با نام فایلی که در آن تعریف شده است مطابقت داشته باشد. بعد از نام تابع داخل پرانتز که با کاما از هم جدا شده اند، نام پارامترهای ورودی قرار می گیرد.

    خطوط زیر شامل بدنه تابع (هر عبارت معتبر MATLAB) است.

    در پایان تابع به پایان می رسد کلمه کلیدیپایان، با این حال اختیاری است و می توان آن را حذف کرد.

    همچنین توجه داشته باشید که اگر تابع فقط یک پارامتر را برمی گرداند، لازم نیست آن را در براکت قرار دهید، به عنوان مثال:

    تابع s = triaArea(a, b)

    % محاسبه مساحت مثلث قائم الزاویه

    % a، b - پاهای مثلث

    s = a * b / 2; پایان

    اگر تابع اصلاً پارامترها را برنگرداند، بلافاصله پس از کلمه کلیدی تابع، نام تابع می آید، به عنوان مثال:

    تابع helloWorld()

    % نمونه تابع بدون پارامترهای ورودی و خروجی disp("Hello world!");

    دستور زیر برای فراخوانی یک تابع استفاده می شود:

    نام_تابع (z1،...، zM)

    که در آن k1، ...، kN متغیرهایی هستند که مقادیر خروجی تابع در آنها نوشته می شود، аz1،...،zM آرگومان های تابع هستند.

    اگر تابع فقط یک پارامتر را برمی گرداند، می توان براکت های مربع را حذف کرد، به عنوان مثال:

    s = triaArea (1،2)

    پارامترهای تابع واقعی و رسمی

    تمایز بین پارامترهای تابع واقعی و رسمی مهم است:

    پارامتر واقعی - آرگومان هنگام فراخوانی تابع به آن ارسال می شود.

    پارامتر رسمی - یک آرگومان که هنگام اعلام یا تعریف یک تابع مشخص می شود.

    اجازه دهید این تفاوت را با یک مثال توضیح دهیم.

    اگر بخواهید دستورات زیادی را وارد کنید و مرتباً آنها را تغییر دهید، کار از خط فرمان MatLab دشوار است. یادداشت روزانه با دستور diary و صرفه جویی در محیط کار فقط کمی کار را آسان می کند. توسط بیشترین راه راحتاجرای دستورات MatLab باید استفاده شود M-فایل ها،که در آن می توانید دستورات را تایپ کنید، همه آنها را به یکباره یا به صورت قسمتی اجرا کنید، آنها را در یک فایل ذخیره کنید و بعداً از آنها استفاده کنید. ویرایشگر M-file برای کار با M-file طراحی شده است. با این ویرایشگر، می توانید توابع خود را ایجاد کرده و آنها را فراخوانی کنید، از جمله از طریق خط فرمان.

    منو را گسترش دهید فایلپنجره اصلی MatLab و در پاراگراف جدیدمورد فرعی را انتخاب کنید M-فایل. فایل جدید در پنجره ویرایشگر M-file باز می شود.

    دستوراتی را در ویرایشگر تایپ کنید که منجر به ساخت دو نمودار در یک پنجره گرافیکی می شود:

    x = ;
    f = exp(-x);
    طرح فرعی (1، 2، 1)
    نمودار (x, f)
    g = sin(x);
    طرح فرعی (1، 2، 2)
    نمودار (x, g)

    اکنون فایل را با نام mydemo.m در یک زیر شاخه ذخیره کنید کار کردندایرکتوری اصلی MatLab با انتخاب مورد ذخیره به عنوانمنو فایلویرایشگر برای اجرای تمام دستورات موجود در فایل، مورد را انتخاب کنید اجرا کندر منو اشکال زدایییک پنجره گرافیکی روی صفحه ظاهر می شود. شکل شماره 1،حاوی نمودارهای توابع اگر تصمیم به ترسیم کسینوس به جای سینوس دارید، به سادگی خط g = sin(x) در فایل M را به g = cos(x) تغییر دهید و همه دستورات را دوباره اجرا کنید.

    تبصره 1

    اگر هنگام تایپ خطایی رخ داد و MatLab نتواند دستور را تشخیص دهد، دستورات تا زمانی که اشتباه وارد شده اجرا می شوند و پس از آن پیام خطا در پنجره فرمان نمایش داده می شود.

    یک ویژگی بسیار مفید ارائه شده توسط ویرایشگر M-file این است اجرای برخی از دستوراتپنجره گرافیک را ببندید شکل شماره 1.در حالی که دکمه سمت چپ را نگه داشته اید با ماوس یا در حالی که کلید را پایین نگه داشته اید با کلیدهای جهت دار انتخاب کنید ، چهار دستور اول برنامه را اجرا کنید و از پاراگراف اجرا کنید ارزیابی کنید انتخابمنو متن. لطفا توجه داشته باشید که تنها یک نمودار مربوط به دستورات اجرا شده در پنجره گرافیکی نمایش داده می شود. به یاد داشته باشید که برای اجرای برخی از دستورات باید آنها را انتخاب کرده و فشار دهید . سه دستور برنامه باقی مانده را اجرا کنید و وضعیت پنجره گرافیکی را زیر نظر بگیرید. خودتان تمرین کنید، چند نمونه از آزمایشگاه های قبلی را در ویرایشگر M-file تایپ کنید و آنها را اجرا کنید.

    بلوک های جداگانه فایل M را می توان با آن ارائه کرد نظرات،که در حین اجرا نادیده گرفته می شوند، اما هنگام کار با یک فایل M راحت هستند. نظرات در MatLab با علامت درصد شروع می شوند و به طور خودکار با رنگ سبز برجسته می شوند، به عنوان مثال:

    % رسم sin(x) در یک پنجره جداگانه

    چندین فایل را می توان همزمان در ویرایشگر M-file باز کرد. انتقال بین فایل ها با استفاده از برگه هایی با نام فایل ها در پایین پنجره ویرایشگر انجام می شود.

    باز کردن یک فایل M موجود با استفاده از آیتم انجام می شود باز کنمنو فایلمحیط کاری یا ویرایشگر فایل M. همچنین می توانید با استفاده از دستور MatLab Edit از خط فرمان، فایلی را در ویرایشگر باز کنید و نام فایل را به عنوان آرگومان مشخص کنید، برای مثال:

    دستور ویرایش بدون آرگومان منجر به ایجاد یک فایل جدید می شود.
    تمام نمونه‌هایی که در این آزمایشگاه و آزمایشگاه‌های بعدی ظاهر می‌شوند، بهتر است تایپ شده و در فایل‌های M ذخیره شوند، آن‌ها با نظرات تکمیل شوند و از ویرایشگر M-file اجرا شوند. استفاده از روش های عددی و برنامه نویسی در MatLab نیازمند ایجاد فایل های M است.

    2. انواع M-فایل

    فایل های M در MatLab دو نوع هستند: فایل برنامه(اسکریپت M-Files) حاوی دنباله ای از دستورات و فایل تابع(Function M-Files)، که توابع تعریف شده توسط کاربر را توصیف می کند.

    فایل-برنامه (پرونده-روش) که هنگام خواندن زیربخش قبلی ایجاد کردید. تمام متغیرهای اعلام شده در یک فایل-برنامه پس از اجرای آن در محیط کاری در دسترس قرار می گیرند. برنامه فایل ارائه شده در زیربخش 2.1 را در ویرایشگر M?file اجرا کنید و دستور whos را در خط فرمان تایپ کنید تا محتویات محیط کار را مشاهده کنید. توضیحی از متغیرها در پنجره فرمان ظاهر می شود:

    » چه کسی
    نام کلاس بایت اندازه
    f 1x71 568 دو آرایه
    g 1x71 568 آرایه دوتایی
    x 1x71 568 آرایه دوتایی
    کل کل 213 عنصر با استفاده از 1704 بایت است

    متغیرهای تعریف شده در یک فایل برنامه را می توان در فایل های برنامه دیگر و در دستورات اجرا شده از خط فرمان استفاده کرد. دستورات موجود در برنامه فایل به دو صورت اجرا می شوند:

    • از ویرایشگر M-file همانطور که در بالا توضیح داده شد.
    • از خط فرمان یا فایل برنامه دیگر، با استفاده از نام فایل M به عنوان دستور.

    استفاده از روش دوم بسیار راحت تر است، به خصوص اگر فایل برنامه ایجاد شده بعداً به طور مکرر مورد استفاده قرار گیرد. در واقع M-file ایجاد شده به دستوری تبدیل می شود که MatLab آن را درک می کند. تمام پنجره های گرافیکی را ببندید و mydemo را در خط فرمان تایپ کنید، یک پنجره گرافیکی مربوط به دستورات فایل برنامه mydemo.m ظاهر می شود. پس از وارد کردن دستور mydemo، MatLab اقدامات زیر را انجام می دهد.

    • بررسی می کند که آیا دستور وارد شده نام یکی از متغیرهای تعریف شده در زمان اجرا است یا خیر. اگر متغیری وارد شود، مقدار آن نمایش داده می شود.
    • اگر متغیری وارد نشده باشد، MatLab دستور وارد شده را در میان توابع داخلی جستجو می کند. اگر دستور یک تابع داخلی باشد، اجرا می شود.

    اگر نه یک متغیر یا یک تابع داخلی وارد شده باشد، MatLab شروع به جستجوی یک فایل M با نام دستور و پسوند می کند. متر. جستجو با شروع می شود پوشه کنونی(Current Directory)، اگر M-file در آن یافت نشد، MatLab از طریق دایرکتوری های نصب شده در آن نگاه می کند. مسیرهای جستجو(مسیر). فایل M یافت شده در MatLab اجرا می شود.

    اگر هیچ یک از اقدامات فوق موفقیت آمیز نبود، پیامی در پنجره فرمان نمایش داده می شود، به عنوان مثال:

    » mydem
    ؟؟؟ تابع یا متغیر تعریف نشده "mydem".

    به عنوان یک قاعده، فایل های M در دایرکتوری کاربر ذخیره می شوند. به منظور. واسه اینکه. برای اینکه سیستم MatLabمی توانید آنها را پیدا کنید، باید مسیرهایی را که مکان فایل های M را نشان می دهد تنظیم کنید.

    تبصره 2

    نگاه داشتن M-فایل های خودخارج از دایرکتوری اصلی MatLab به دو دلیل دنبال می شود. ابتدا، هنگام نصب مجدد MatLab، فایل هایی که در زیر شاخه های دایرکتوری اصلی MatLab قرار دارند، ممکن است از بین بروند. ثانیاً، هنگام راه اندازی MatLab، تمام فایل های زیر شاخه جعبه ابزار به روشی بهینه در حافظه رایانه قرار می گیرند تا عملکرد را افزایش دهند. اگر یک فایل M در این دایرکتوری نوشته اید، تنها پس از راه اندازی مجدد MatLab می توانید از آن استفاده کنید.

    3. تعیین مسیرها

    در MatLab نسخه 6 .ایکسدایرکتوری فعلی و مسیرهای جستجو مشخص می شوند. این ویژگی ها یا با استفاده از کادرهای محاوره ای مناسب یا دستورات خط فرمان تنظیم می شوند.

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

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

    برای افزودن دایرکتوری، روی دکمه کلیک کنید اضافه کردن پوشه مرور کردن برای مسیردایرکتوری مورد نظر را انتخاب کنید افزودن دایرکتوری با تمام زیر شاخه های آن با کلیک بر روی دکمه انجام می شود با زیر پوشه ها اضافه کنید. متلب جستجو کردن مسیر.ترتیب جستجو مربوط به محل مسیرها در این قسمت است، اولین دایرکتوری جستجو می شود که مسیر آن در بالای لیست قرار دارد. شما می توانید ترتیب جستجو را تغییر دهید یا حتی مسیر یک فهرست را حذف کنید، که برای آن دایرکتوری را در فیلد انتخاب کنید متلب جستجو کردن مسیرو موقعیت آن را با استفاده از دکمه های زیر مشخص کنید:
    حرکت به بالا - قرار دادن در بالای لیست؛
    حرکت بالا - یک موقعیت بالا بروید؛
    برداشتن - حذف از لیست؛
    حرکت پایین - حرکت به سمت پایین یک موقعیت؛
    حرکت به پایین - در انتهای لیست قرار دهید.

    4. دستورات برای تنظیم مسیرها.

    مراحل تنظیم مسیرها در MatLab 6 .ایکسدستورات تکراری دایرکتوری فعلی با دستور cd تنظیم می شود، برای مثال cd c:\users\igor. دستور cd که بدون آرگومان فراخوانی می شود، مسیر دایرکتوری فعلی را چاپ می کند. مسیرها با استفاده از دستور path تنظیم می شوند که با دو آرگومان فراخوانی می شود:

    مسیر (مسیر، "c:\users\igor") - دایرکتوری c:\users\igor را با کمترین اولویت جستجو اضافه می کند.
    مسیر ("c: \users\igor",path) - دایرکتوری c:\users\igor را با بالاترین اولویت جستجو اضافه می کند.

    استفاده از دستور path بدون آرگومان باعث می شود لیستی از مسیرهای جستجو روی صفحه نمایش داده شود. می توانید با استفاده از دستور rmpath یک مسیر را از لیست حذف کنید:

    rmpath("c:\users\igor") مسیر c:\users\igor را از لیست مسیرها حذف می کند.

    تبصره 3

    مسیرهای دایرکتوری را بی جهت حذف نکنید، به خصوص مسیرهایی که از آنها مطمئن نیستید. حذف ممکن است به این واقعیت منجر شود که برخی از توابع تعریف شده در MatLab در دسترس نباشند.

    مثال.در دایرکتوری ریشه دیسک ایجاد کنید D(یا هر درایو یا دایرکتوری دیگری که در آن دانش آموزان مجاز به ایجاد دایرکتوری های خود هستند) یک دایرکتوری با نام خانوادگی شما، به عنوان مثال WORK_IVANOV، و M-file mydemo.m را در آنجا با نام mydemo3.m بنویسید. مسیرهای فایل را تنظیم کنید و دسترسی به فایل را از خط فرمان نشان دهید. نتایج را در یک گزارش آزمایشگاهی گزارش کنید.

    راه حل:

    1. در دایرکتوری ریشه دیسک Dدایرکتوری WORK_IVANOV ایجاد می شود.
    2. M-file mydemo.m در پوشه WORK_IVANOV با نام mydemo3.m نوشته می شود.
    3. کادر محاوره ای باز می شود تنظیم مسیرمنو فایلمحیط کاری MatLab
    4. دکمه فشار داده شده است اضافه کردن پوشهو در گفتگوی ظاهر شده مرور کردن برای مسیرفهرست WORK_IVANOV انتخاب شده است.
    5. افزودن یک دایرکتوری با تمام زیر شاخه های آن با کلیک بر روی دکمه انجام می شود اضافه کردن با زیر پوشه هامسیر دایرکتوری اضافه شده در فیلد ظاهر می شود متلب جستجو کردن مسیر.
    6. برای ذخیره مسیر، کلید را فشار دهید صرفه جوییکادر محاوره ای تنظیم مسیر.
    7. صحت همه اعمال با تایپ دستور mydemo3 از خط فرمان بررسی می شود. یک پنجره گرافیکی روی صفحه ظاهر می شود.

    5. توابع فایل

    برنامه های فایل مورد بحث در بالا دنباله ای از دستورات MatLab هستند، آنها هیچ آرگومان ورودی یا خروجی ندارند. برای استفاده از روش‌های عددی و هنگام برنامه‌نویسی برنامه‌های کاربردی خود در MatLab، باید بتوانید توابع فایلی ایجاد کنید که اقدامات لازم را با آرگومان‌های ورودی انجام دهند و نتیجه را در آرگومان‌های خروجی برگردانند. این زیربخش چند مثال ساده ارائه می دهد تا به شما در درک نحوه کار با توابع فایل کمک کند. فایل‌های تابع، مانند فایل‌های رویه، در ویرایشگر M-file ایجاد می‌شوند.

    5.1. توابع فایل با یک آرگومان ورودی

    فرض کنید در محاسبات اغلب لازم است از تابع استفاده شود

    منطقی است که یک فایل تابع را یک بار بنویسید و سپس آن را در هر کجا که برای ارزیابی این تابع لازم است فراخوانی کنید. یک فایل جدید در ویرایشگر M-file باز کنید و متن فهرست را تایپ کنید

    تابع f = myfun(x)
    f= exp(-x)*sqrt((x^2+1)/(x^4+0.1));

    کلمه تابع در خط اول مشخص می کند که فایل داده شدهحاوی یک فایل تابع خط اول است هدر تابع،که میزبان است نام تابعو لیستی از آرگومان های ورودی و خروجی. در مثال موجود در فهرست، نام تابع myfun، یک آرگومان ورودی x و یک آرگومان خروجی f است. پس از عنوان در ادامه می آید بدن عملکرد(در این مثال از یک خط تشکیل شده است)، که در آن مقدار آن محاسبه می شود. مهم است که مقدار محاسبه شده به f نوشته شود. نقطه ویرگول برای جلوگیری از نمایش اطلاعات غیر ضروری بر روی صفحه تنظیم شده است.

    اکنون فایل را در پوشه کاری خود ذخیره کنید. لطفا توجه داشته باشید که انتخاب مورد صرفه جویییا صرفه جویی مانندمنو فایلمنجر به ظاهر شدن یک کادر محاوره ای برای ذخیره فایل در فیلد می شود فایل نامکه قبلاً حاوی نام myfun است. آن را تغییر ندهید، فایل تابع را در فایلی با نام پیشنهادی ذخیره کنید.

    اکنون تابع ایجاد شده را می توان به همان روشی مانند sin ، cos و موارد دیگر استفاده کرد ، به عنوان مثال از خط فرمان:

    »y=myfun(1.3)
    Y =
    0.2600

    فراخوانی توابع خود را می توان از یک فایل-برنامه و از یک تابع-فایل دیگر انجام داد.

    هشدار

    دایرکتوری حاوی فایل تابع باید جاری باشد یا مسیر آن باید به مسیر جستجو اضافه شود، در غیر این صورت MatLab به سادگی تابع را پیدا نمی کند یا به جای آن تابع دیگری را با همین نام فراخوانی می کند (اگر در دایرکتوری ها قرار داشته باشد. برای جستجو در دسترس است).

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

    » x = ;
    » y = myfun(x)
    ؟؟؟ خطا در استفاده از ==> ^
    ماتریس باید مربع باشد.
    خطا در ==> C:\MATLABRll\work\myfun.m
    در خط 2 ==> f = exp(-x)*sqrt((x^2+1)/(x^4+1));

    اگر نحوه کار با آرایه ها را یاد گرفته اید، رفع این نقص مشکلی ایجاد نمی کند. شما فقط باید از عملیات عنصر عاقلانه هنگام محاسبه مقدار تابع استفاده کنید.
    بدنه تابع را همانطور که در لیست زیر نشان داده شده است تغییر دهید (فراموش نکنید که تغییرات را در فایل myfun.m ذخیره کنید).

    تابع f = myfun(x)
    f = exp(-x).*sqrt((x.^2+1)./(x.^4+0.1));

    حالا آرگومان تابع myfun می تواند یک عدد یا یک بردار یا ماتریسی از مقادیر باشد، به عنوان مثال:

    » x = ;
    » y = myfun(x)
    Y =
    0.2600 0.0001

    متغیر y که نتیجه فراخوانی تابع myfun در آن نوشته شده است، به طور خودکار به یک بردار با اندازه مورد نیاز تبدیل می شود.

    تابع myfun را در قسمتی از خط فرمان یا با استفاده از برنامه فایل رسم کنید:

    x = ;
    y = myfun(x);
    نمودار (x, y)

    MatLab راه دیگری برای کار با توابع فایل ارائه می دهد - استفاده از آنها به عنوان آرگومان برای برخی از دستورات. به عنوان مثال، برای رسم یک نمودار، از تابع ویژه fplot استفاده کنید که جایگزین دستورات داده شده در بالا می شود. هنگامی که fplot فراخوانی می شود، نام تابعی که قرار است نمودار آن ترسیم شود، در آپستروف ها قرار می گیرد، محدودیت های ترسیم در یک بردار ردیفی از دو عنصر مشخص می شود.

    fplot ("myfun"، )

    myfun را با پلات و fplot روی همان محورها، با نگه داشتن، ترسیم کنید. لطفاً توجه داشته باشید که نمودار ترسیم شده با fplot با دقت بیشتری رفتار تابع را منعکس می کند، زیرا fplot خود مرحله آرگومان را انتخاب می کند و آن را در مناطقی که تغییر سریع در تابع نمایش داده می شود کاهش می دهد. نتایج را در یک گزارش آزمایشگاهی گزارش کنید.

    5.2. توابع فایل با آرگومان های ورودی چندگانه

    نوشتن توابع فایل با چندین آرگومان ورودی تقریباً مشابه نوشتن یک آرگومان واحد است. همه آرگومان های ورودی در یک لیست جدا شده با کاما قرار می گیرند. به عنوان مثال، فهرست زیر حاوی یک فایل تابعی است که طول بردار شعاع یک نقطه را در فضای سه بعدی محاسبه می کند.
    تابع فایل لیست با آرگومان های متعدد

    تابع r = شعاع 3 (x، y، z)
    r = sqrt(x.^2 + y.^2 + z.^2);

    » R = radius3(1, 1, 1)
    R=
    1.732

    علاوه بر توابع با آرگومان های ورودی متعدد، MatLab به شما اجازه می دهد تا توابعی ایجاد کنید که چندین مقدار را برمی گرداند. داشتن چندین آرگومان خروجی

    5.3. توابع فایل با آرگومان های خروجی متعدد

    توابع فایل با آرگومان های خروجی متعدد برای ارزیابی توابعی که چندین مقدار را برمی گرداند مفید هستند (در ریاضیات به آنها می گویند. توابع برداری). آرگومان‌های خروجی به فهرست آرگومان‌های خروجی، با کاما از هم جدا می‌شوند و خود فهرست در براکت‌های مربع قرار می‌گیرد. مثال خوبتابعی است که زمان داده شده را بر حسب ثانیه به ساعت، دقیقه و ثانیه تبدیل می کند. این فایل تابع در لیست زیر نشان داده شده است.

    لیست تابع برای تبدیل ثانیه به ساعت، دقیقه و ثانیه

    تابع = hms (ثانیه)
    ساعت = طبقه (ثانیه/3600)؛
    دقیقه = طبقه ((ثانیه ساعت * 3600)/60);
    ثانیه = ثانیه ساعت * 3600 دقیقه * 60;

    هنگام فراخوانی توابع فایل با آرگومان های خروجی متعدد، نتیجه باید در بردار با طول مناسب نوشته شود:

    » [H، M، S] = hms(10000)
    H=
    2
    M =
    46
    S=
    40

    6. مبانی برنامه نویسی در MatLab

    فایل تابع و فایل برنامه استفاده شده در زیربخش های قبلی بیشترین تعداد را دارند مثال های سادهبرنامه ها، تمام دستورات MatLab موجود در آنها به صورت متوالی اجرا می شوند. برای حل بسیاری از مشکلات جدی تر، نیاز به نوشتن برنامه هایی است که در آن اقدامات به صورت چرخه ای انجام می شود یا بسته به شرایط خاص، بخش های مختلفی از برنامه ها اجرا می شوند. اجازه دهید عملگرهای اصلی را در نظر بگیریم که دنباله های اجرای دستورات MatLab را مشخص می کنند. عملگرها را می توان هم در رویه های فایل و هم در توابع استفاده کرد که به شما امکان می دهد برنامه هایی با ساختار انشعاب پیچیده ایجاد کنید.

    6.1. بیانیه حلقه برای

    اپراتور برای انجام تعداد معینی از اقدامات تکراری طراحی شده است. ساده ترین استفاده از دستور for به شرح زیر است:

    برای count = start:step:final
    دستورات MatLab
    پایان

    در اینجا count یک متغیر حلقه است، start مقدار اولیه آن، نهایی مقدار نهایی آن است، و step مرحله ای است که با هر بار ورود به حلقه تعداد آن افزایش می یابد. به محض اینکه مقدار شمارش از نهایی بیشتر شود، حلقه به پایان می رسد. متغیر حلقه می تواند نه تنها مقادیر صحیح، بلکه مقادیر واقعی هر علامت را نیز بگیرد. بیایید کاربرد عملگر چرخه for را بر روی چند مثال معمولی تحلیل کنیم.
    اجازه دهید لازم باشد که یک خانواده از منحنی ها برای را استخراج کنیم، که بسته به پارامتر توسط یک تابع داده می شود برای مقادیر پارامتر از -0.1 تا 0.1.
    متن فایل رویه را در ویرایشگر M-file تایپ کنید و در فایل FORdem1.m ذخیره کنید و برای اجرا (از ویرایشگر M-file یا از خط فرمان با تایپ دستور FORdem1 در آن و فشار دادن آن) اجرا کنید. ):

    % فایل-برنامه برای ساختن خانواده ای از منحنی ها
    x = ;
    برای = -0.1:0.02:0.1
    y = exp(-a*x).*sin(x);
    صبر کن
    نمودار (x, y)
    پایان

    تبصره 4

    ویرایشگر M-file به طور خودکار پیشنهاد می کند که عبارات را در داخل حلقه قرار دهید که از حاشیه سمت چپ تورفتگی دارند. از این فرصت برای راحتی کار با متن برنامه استفاده کنید.

    در نتیجه اجرای FORdem1، یک پنجره گرافیکی ظاهر می شود که شامل خانواده مورد نیاز منحنی ها است.

    یک فایل برنامه برای محاسبه مجموع بنویسید

    الگوریتم برای محاسبه مجموع از انباشت نتیجه استفاده می کند، یعنی. اول مجموع صفر است ( اس= 0)، سپس به یک متغیر کواحد وارد شده است، 1/ ک! به اسو نتیجه دوباره در آن قرار داده می شود اس. به علاوه کیک افزایش می یابد و این روند تا 1/10 ترم آخر ادامه می یابد. فایل برنامه Fordem2 که در لیست زیر نشان داده شده است، مقدار مورد نظر را محاسبه می کند.

    لیست فایل-برنامه Fordem2 برای محاسبه مجموع

    % فایل-برنامه برای محاسبه مجموع
    % 1/1!+1/2!+ … +1/10!

    % S را برای جمع آوری مقدار بازنشانی کنید
    S = 0;
    درصد تجمع مقدار در چرخه
    برای k = 1:10
    S = S + 1/factorial(k);
    پایان
    % نتیجه را در پنجره فرمان S چاپ کنید

    فایل برنامه را در ویرایشگر M-file تایپ کنید، آن را در دایرکتوری فعلی در فایل Fordem2.m ذخیره کرده و اجرا کنید. نتیجه در پنجره فرمان نمایش داده می شود، زیرا در خط آخر فایل-برنامه اسبدون نقطه ویرگول برای نمایش مقدار متغیر موجود است اس

    توجه داشته باشید که بقیه خطوط در فایل-برنامه ممکن است باعث خروجی صفحه نمایش شوند مقادیر میانی، با یک نقطه ویرگول خاتمه می یابند تا خروجی را به پنجره فرمان سرکوب کنند.

    دو خط اول با نظرات به طور تصادفی با یک خط خالی از بقیه متن برنامه جدا نمی شوند. آنها زمانی نمایش داده می شوند که کاربر با استفاده از دستور help از خط فرمان، اطلاعاتی در مورد آنچه Fordem2 انجام می دهد دریافت کند.

    >>helpFordem2
    فایل-برنامه برای محاسبه مجموع
    1/1!+1/2!+ … +1/10!

    هنگام نوشتن برنامه های فایل و توابع فایل، از نظرات غافل نشوید!
    تمام متغیرهای مورد استفاده در برنامه فایل در محیط کاری در دسترس می شوند. آنها به اصطلاح متغیرهای جهانی هستند. از طرفی برنامه فایل می تواند از تمامی متغیرهای وارد شده در محیط کاری استفاده کند.

    مشکل محاسبه مجموع را مشابه مورد قبلی اما بسته به متغیر در نظر بگیرید ایکس

    برای محاسبه این مقدار در برنامه فایل Fordem2، باید خط داخل حلقه for را به تغییر دهید

    S = S + x.^k/factorial(k);

    قبل از اجرای برنامه باید یک متغیر تعریف کنید ایکسدر خط فرمان با دستورات زیر:

    >> x = 1.5;
    >> Fordem2
    S=
    3.4817

    مانند ایکساین می تواند یک بردار یا یک ماتریس باشد، زیرا برنامه فایل Fordem2 از عملیات عنصری برای جمع آوری مجموع استفاده می کند.

    قبل از راه اندازی Fordem2، لازم است به یک متغیر اختصاص داده شود ایکسمقداری مقدار، و برای محاسبه مجموع، به عنوان مثال، از پانزده عبارت، باید تغییراتی در متن برنامه فایل ایجاد کنید. بسیار بهتر است که یک تابع فایل عمومی بنویسید که دارای مقدار آرگومان ورودی باشد ایکسو حد بالایی مقدار، و خروجی - مقدار مقدار اس(ایکس). فایل تابع sumN در لیست زیر نشان داده شده است.

    لیست کردن فایل تابع برای محاسبه مجموع

    تابع S = sumN(x, N)
    تابع فایل % برای محاسبه مجموع
    % x/1!+x^2/2!+ … +x^N/N!
    درصد استفاده: S = sumN(x, N)

    % S را برای جمع آوری مقدار بازنشانی کنید
    S = 0;
    درصد تجمع مقدار در چرخه
    برای m = 1:1:N
    S = S + x.^m/factorial(m);
    پایان

    کاربر می تواند با تایپ help sumN در خط فرمان از کاربرد تابع sumN مطلع شود. سه خط اول با نظرات در پنجره فرمان نمایش داده می شود که با یک خط خالی از متن فایل تابع جدا شده است.

    توجه داشته باشید که متغیرهای تابع فایل جهانی نیستند (m در فایل تابع sumN است). تلاش برای مشاهده مقدار متغیر m از خط فرمان منجر به پیامی می شود که m تعریف نشده است. اگر یک متغیر سراسری با همین نام در محیط کاری وجود داشته باشد که از خط فرمان یا در یک برنامه فایل تعریف شده باشد، به هیچ وجه به یک متغیر محلی در تابع فایل مرتبط نیست. به عنوان یک قاعده، بهتر است الگوریتم های خود را در قالب توابع فایل بنویسید تا متغیرهای استفاده شده در الگوریتم، مقادیر متغیرهای محیط جهانی را با همین نام تغییر ندهند.

    حلقه‌های For را می‌توان درون یکدیگر قرار داد، اما متغیرهای حلقه‌های تودرتو باید متفاوت باشند.

    حلقه for برای انجام اقدامات مشابه مکرر زمانی که تعداد آنها از پیش تعیین شده باشد مفید است. یک حلقه while انعطاف پذیرتر به شما امکان می دهد این محدودیت را دور بزنید.

    6.2. بیانیه حلقه while

    مثالی را برای محاسبه مجموع در نظر بگیرید، مشابه مثال پاراگراف قبل. لازم است که مجموع یک سری برای یک داده مشخص شود ایکس(بسط به صورت سری):
    .

    تا زمانی که عبارت‌ها خیلی کوچک نباشند، می‌توان مجموع را جمع کرد. راه حل این است که از یک حلقه while استفاده کنید که تا زمانی که شرط حلقه درست باشد اجرا می شود:

    شرایط حلقه while
    دستورات MatLab
    پایان

    در این مثال، شرط حلقه فرض می کند که عبارت فعلی بزرگتر از . برای نوشتن این شرط از علامت بزرگتر از (>) استفاده می شود. متن تابع فایل mysin که مجموع یک سری را محاسبه می کند، در لیست زیر نشان داده شده است.

    فهرست کردن فایل تابع mysin، که سینوس را با بسط سری محاسبه می کند

    تابع S = mysin (x)
    % محاسبه سینوس با بسط سری
    % استفاده: y = mysin(x)، -pi

    S = 0;
    k = 0;
    while abs(x.^(2*k+1)/factorial(2*k+1))>1.0e-10
    S = S + (-1)^k*x.^(2*k+1)/factorial(2*k+1);
    k = k + 1;
    پایان

    لطفاً توجه داشته باشید که حلقه while بر خلاف for، متغیر حلقه ندارد، بنابراین باید قبل از شروع حلقه، صفر را به k اختصاص می‌دادیم و k را در داخل حلقه یک افزایش می‌دادیم.
    شرط حلقه while می تواند بیش از علامت > باشد. برای تنظیم شرایط برای اجرای چرخه، سایر عملیات رابطه ای نیز مجاز است، همانطور که در جدول نشان داده شده است. 1.

    جدول 1. عملیات رابطه

    شرایط پیچیده تر با استفاده از عملگرهای منطقی مشخص می شوند. به عنوان مثال، شرط عبارت است از تحقق همزمان دو نامساوی و، و با استفاده از عملگر منطقیو

    و (x >= -1، x< 2)

    یا معادل با &

    (x >= -1) و (x< 2)

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

    جدول 2. عملگرهای منطقی

    اپراتور

    نوشتن در MatLab

    نماد معادل

    منطق "و"

    و (x< 3, k == 4)

    (ایکس< 3) & (k == 4)

    منطقی "OR"

    یا (x==1، x==2)

    (x == 1) | (x==2)

    منفی "نه"

    هنگام محاسبه مجموع یک سری نامتناهی، محدود کردن تعداد عبارت ها منطقی است. اگر سری به دلیل این واقعیت که عبارت‌های آن به صفر تمایل ندارند، واگرا شود، ممکن است شرط مقدار کمی از عبارت فعلی هرگز برآورده نشود و برنامه حلقه شود. جمع بندی را با افزودن یک محدودیت به تعداد عبارت ها در شرط حلقه while فایل تابع mysin انجام دهید:

    while (abs(x.^(2*k+1)/factorial(2*k+1))>1.0e-10)&(k<=10000))

    یا به شکل معادل

    while and(abs(x.^(2*k+1)/factorial(2*k+1))>1.0e-10)، k<=10000)

    سازماندهی اقدامات تکراری در قالب چرخه ها، برنامه را ساده و قابل درک می کند، با این حال، اغلب نیاز به اجرای یک یا آن بلوک دستورات بسته به شرایط خاص، یعنی. از الگوریتم انشعاب استفاده کنید

    6.3. بیانیه if شرطی

    اپراتور مشروط اگربه شما امکان می دهد یک الگوریتم انشعاب برای اجرای دستورات ایجاد کنید، که در آن، تحت شرایط خاص، بلوک متناظر از دستورات یا دستورات MatLab کار می کند.

    دستور if را می توان به شکل ساده اش برای اجرای یک بلوک از دستورات در صورت برآورده شدن یک شرط یا در ساختار if-elseif-else برای نوشتن الگوریتم های انشعاب استفاده کرد.
    اجازه دهید برای ارزیابی عبارت مورد نیاز باشد. فرض کنید در حال انجام محاسبات با اعداد واقعی هستید و می‌خواهید یک هشدار نشان دهید که نتیجه یک عدد مختلط است. قبل از محاسبه تابع، باید مقدار آرگومان x را بررسی کنید و در صورتی که مدول x از یک تجاوز نکرد، یک هشدار در پنجره فرمان نمایش دهید. در اینجا لازم است از یک دستور شرطی if استفاده شود که کاربرد آن در ساده ترین حالت به این صورت است:

    اگر شرط
    دستورات MatLab
    پایان

    اگر شرط برآورده شود، دستورات MatLab که بین if و end قرار می‌گیرند اجرا می‌شوند و اگر شرط برآورده نشد، انتقال به دستورات بعد از پایان انجام می‌شود. هنگام ثبت یک شرط، از عملیات ارائه شده در جدول 1 استفاده می شود. 1.

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

    لیست تابع فایل Rfun که مقدار آرگومان را بررسی می کند

    تابع f = Rfun(x)
    % sqrt (x^2-1) را محاسبه می کند
    % در صورتی که نتیجه پیچیده باشد یک هشدار چاپ می کند
    % استفاده از y = Rfun(x)

    % بررسی آرگومان
    اگر شکم (x)<1
    هشدار ("نتیجه پیچیده")
    پایان
    % ارزیابی عملکرد
    f = sqrt(x^2-1);

    اکنون با فراخوانی Rfun با آرگومان کمتر از یک، یک هشدار در پنجره فرمان چاپ می شود:

    >> y = Rfun (0.2)
    نتیجه پیچیده است
    y=
    0 + 0.97979589711327i

    فایل تابع Rfun فقط هشدار می دهد که مقدار آن پیچیده است و تمام محاسبات با آن ادامه می یابد. اگر نتیجه پیچیده به معنای خطای محاسباتی باشد، اجرای تابع باید با استفاده از دستور خطا به جای هشدار خاتمه یابد.

    6.4. بیانیه شعبه if-elseif-else

    به طور کلی، کاربرد عملگر شاخه if-elseif-else به شکل زیر است:

    اگر شرط 1
    دستورات MatLab
    شرایط elseif 2
    دستورات MatLab
    شرط elseif 3
    دستورات MatLab
    . . . . . . . . . . .
    شرایط elseif N
    دستورات MatLab
    دیگر
    دستورات MatLab
    پایان

    بسته به عملکرد یکی یا دیگری ندر شرایط، شاخه مربوطه از برنامه کار می کند اگر هیچ یک از نشرایط، سپس دستورات MatLab که بعد از دیگری قرار داده شده اند پیاده سازی می شوند. پس از اجرای هر یک از شاخه ها، دستور خارج می شود. می تواند هر تعداد شاخه یا فقط دو شعبه وجود داشته باشد. در مورد دو شاخه، پایان دهنده else استفاده می شود و elseif حذف می شود. بیانیه همیشه باید به پایان ختم شود.
    نمونه ای از استفاده از دستور if-elseif-else در لیست زیر نشان داده شده است.

    تابع ifdem(a)
    ٪ مثال با استفاده از دستور if-elseif-else

    اگر (a == 0)
    هشدار ("a برابر با صفر")
    elseif a == 1
    هشدار ("و برابر است با یک")
    elseif a == 2
    هشدار ("برابر با دو")
    elseif a >= 3
    هشدار ("الف، بزرگتر یا مساوی سه")
    دیگر
    هشدار ("a کمتر از سه است و برابر با صفر، یک، دو نیست")
    پایان

    6.5. اپراتور شعبه تعویض

    دستور switch را می توان برای انجام چندین انتخاب یا انشعاب استفاده کرد. . این یک جایگزین برای عبارت if-elseif-else است. به طور کلی، کاربرد دستور شعبه سوئیچ به صورت زیر است:

    سوئیچ switch_expression
    مقدار مورد 1
    دستورات MatLab
    مقدار موردی 2
    دستورات MatLab
    . . . . . . . . . . .
    مقدار موردی N
    دستورات MatLab
    مورد (مقدار N+1، مقدار N+2، ...)
    دستورات MatLab
    . . . . . . . . . . . .
    مورد (مقدار NM+1، مقدار NM+2،…)
    در غیر این صورت
    دستورات MatLab
    پایان

    که در اپراتور داده شدهابتدا مقدار switch_expression ارزیابی می شود (می تواند یک مقدار عددی اسکالر یا یک رشته کاراکتر باشد). سپس این مقدار با مقادیر: مقدار 1، مقدار 2، ...، مقدار N، مقدار N+1، مقدار N+2، ...، مقدار NM+1، مقدار NM+2، ... مقایسه می شود. که می تواند عددی یا رشته ای نیز باشد) . اگر مطابقت یافت شود، دستورات MatLab به دنبال کلمه کلیدی case مربوطه اجرا می شوند. در غیر این صورت، دستورات MatLab بین کلیدواژه های other و end اجرا می شوند.

    ممکن است هر تعداد خط با حروف کلمه کلیدی وجود داشته باشد، اما باید یک خط با کلمه کلیدی در غیر این صورت وجود داشته باشد.

    پس از اجرای هر یک از شاخه ها، سوئیچ خارج می شود، در حالی که مقادیر مشخص شده در موارد دیگر بررسی نمی شود.

    استفاده از سوئیچ با مثال زیر نشان داده شده است:

    سوئیچ تابع (x)
    a = 10/5 + x
    سوئیچ a
    مورد 1
    هشدار ("a = -1")
    مورد 0
    هشدار ("a = 0")
    مورد 1
    هشدار ("a = 1")
    مورد (2، 3، 4)
    هشدار ("a 2 یا 3 یا 4 است")
    در غیر این صورت
    warning("a برابر نیست با -1، 0، 1، 2، 3، 4")
    پایان

    >>x=-4
    دیسوئیچ (x)
    a =
    1
    هشدار: a = 1
    >>x=1
    دیسوئیچ (x)
    a =
    6
    هشدار: a برابر با -1، 0، 1، 2، 3، 4 نیست

    6.6. بیانیه شکست حلقه زنگ تفريح

    هنگام سازماندهی محاسبات چرخه ای، باید مراقب بود که هیچ خطایی در داخل چرخه رخ ندهد. به عنوان مثال، فرض کنید یک آرایه x داده شده است، متشکل از اعداد صحیح، و لازم است یک آرایه جدید y طبق قانون y(i) = x(i+1)/x(i) تشکیل شود. بدیهی است که مشکل را می توان با یک حلقه for حل کرد. اما اگر یکی از عناصر آرایه اصلی برابر با صفر باشد، تقسیم به inf منجر می شود و محاسبات بعدی ممکن است بی فایده باشد. اگر مقدار فعلی x(i) صفر باشد، می توان با خروج از حلقه از این وضعیت جلوگیری کرد. قطعه برنامه زیر استفاده از دستور break برای شکستن یک حلقه را نشان می دهد:

    برای x = 1:20
    z=x-8;
    اگر z==0
    زنگ تفريح
    پایان
    y = x/z
    پایان

    به محض اینکه متغیر z 0 شد، حلقه خاتمه می یابد.

    دستور break به شما این امکان را می دهد که اجرای حلقه های for و while را پیش از موعد متوقف کنید. خارج از این حلقه ها، دستور break کار نمی کند.

    اگر دستور break در یک حلقه تودرتو استفاده شود، آنگاه فقط از حلقه داخلی خارج می شود.

    دستورالعمل

    در محیط متلب چندین حالت کار وجود دارد. ساده ترین کار این است که دستورات را مستقیماً در پنجره فرمان وارد کنید ( پنجره فرمان).
    اگر در رابط برنامه قابل مشاهده نیست، باید آن را باز کنید. شما می توانید پنجره فرمان را از طریق منو پیدا کنید دسکتاپ -> پنجره فرمان.
    به عنوان مثال، بیایید دستورات "x = ; y = sqrt(x); plot(y);" را یکی پس از دیگری وارد این پنجره کرده و کلید "Enter" را فشار دهیم ( وارد). برنامه فوراً متغیرهای X را ایجاد می کند، یک متغیر Y ایجاد می کند و مقادیر آن را برای یک تابع معین محاسبه می کند و سپس نمودار آن را می سازد.
    با استفاده از فلش های صفحه کلید "بالا" و "پایین" در پنجره فرمان می توانیم بین تمام دستورات وارد شده جابجا شده و در صورت لزوم بلافاصله آنها را تغییر داده و با فشردن مجدد Enter محیط متلب را برای اجرا ارسال کنیم.
    راحت؟ بی شک. و مهمتر از همه - خیلی سریع. همه این اقدامات چند ثانیه طول می کشد.
    اما اگر به سازماندهی پیچیده تری از تیم ها نیاز دارید چه؟ اگر به اجرای چرخه ای برخی از دستورات نیاز دارید؟ وارد کردن دستورات به صورت دستی در یک زمان و سپس جستجوی طولانی مدت آنها در تاریخ می تواند بسیار خسته کننده باشد.

    برای ساده کردن زندگی یک دانشمند، مهندس یا دانشجو، پنجره ویرایشگر ( ویرایشگر). بیایید پنجره ویرایشگر را از طریق منو باز کنیم دسکتاپ -> ویرایشگر.
    در اینجا می توانید متغیرهای جدید ایجاد کنید، نمودار بسازید، برنامه بنویسید (اسکریپت)، اجزایی برای تبادل با محیط های دیگر ایجاد کنید، برنامه های کاربردی را با رابط کاربری(GUI)، و همچنین موارد موجود را ویرایش کنید. اما ما در حال حاضر علاقه مند به نوشتن برنامه ای هستیم که حاوی توابعی برای استفاده مجدد در آینده باشد. پس بریم سراغ منو. فایلو انتخاب کنید جدید -> فایل M.

    در قسمت ویرایشگر، یک برنامه ساده می نویسیم، اما کمی آن را پیچیده می کنیم:

    تابع draw_plot(x)
    y = log(x); % اولین تابع را تنظیم کنید
    طرح فرعی (1، 2، 1)، نمودار (x، y); % ساختن اولین نمودار
    y = مربع (x); % تابع دوم را تنظیم کنید
    طرح فرعی (1، 2، 2)، نمودار (x، y); % نمودار دوم را می سازیم

    ما یک تابع دوم اضافه کرده ایم و دو نمودار را همزمان در کنار یکدیگر نمایش می دهیم. علامت درصد بیانگر نظرات در محیط متلب است.
    فراموش نکنید که برنامه را ذخیره کنید. پسوند استاندارد فایل با برنامه Matlab است *.m.
    حالا ویرایشگر و پنجره را با نموداری که قبلا ساختیم ببندید.

    بیایید به پنجره فرمان برگردیم.
    می توانید تاریخچه دستورات را پاک کنید تا اطلاعات غیر ضروری حواس ما را پرت نکند. برای این کار بر روی فیلد ورود دستور و در قسمت باز شده کلیک راست کنید منوی زمینهمورد را انتخاب کنید پنجره فرمان را پاک کنید.
    متغیر X بعد از آزمایش قبلی با ما باقی ماند، آن را تغییر ندادیم یا حذف نکردیم. بنابراین، در پنجره فرمان، بلافاصله می توانید وارد کنید:
    draw_plot(x);
    خواهید دید که متلب تابع ما را از روی فایل خوانده و اجرا می کند و نمودار را رسم می کند.