با پیچیدگی های کار در متلب آشنا شوید.
- عملگر نقطه ویرگول: اگر دستوری با ";" ختم شود، نتیجه این عملیات روی صفحه نمایش داده نمی شود. وقتی تعریف کوچکی وجود داشته باشد، به عنوان مثال، y = 1 این امر آشکار است. مشکل زمانی به وجود می آید که لازم باشد ماتریسی با ابعاد بزرگ ایجاد شود. وقتی خروجی برای کاربر ضروری است، مثلاً هنگام کار با گرافیک، علامت «;» لازم نیست.
- Cleanup Command: چندین دستور مفید وجود دارد که می توان آنها را از پنجره فرمان فراخوانی کرد. بعد از علامت ">>" عبارت "clear" را تایپ کنید. این کار همه متغیرهای فعلی را پاک می کند، که ممکن است در صورت مواجه شدن با یک نتیجه عجیب کمک کند. همچنین می توانید برای پاک کردن مقدار یک متغیر خاص، "clear" و نام متغیر را بنویسید.
- انواع متغیر: تنها نوع متغیر در متلب آرایه است. این بدان معناست که متغیرها به صورت فهرستی از مقادیر مرتب شده اند. ابتدایی ترین لیست مقادیر یک عدد است. در مورد متلب، هنگام ایجاد یک متغیر، نیازی به تعیین اندازه آرایه ندارید. برای اختصاص یک عدد به یک متغیر، برای مثال z = 1 را تایپ کنید. اگر میخواهید مقداری برای z اضافه کنید، به سادگی z = 3 را وارد کنید. میتوانید با نوشتن z [i] به هر مقداری در آرایه اشاره کنید، جایی که i عدد موقعیت در آرایه است. بنابراین، اگر باید مقدار 3 را از z دریافت کنید، فقط باید z را تایپ کنید.
- "حلقه": حلقه ها زمانی استفاده می شوند که یک عمل باید چندین بار انجام شود. دو نوع حلقه در متلب وجود دارد: حلقه for و حلقه while. هر دو ساختار قابل تعویض هستند، با این حال، ایجاد یک حلقه نامتناهی با ساختار "while" آسان تر از "for" است. نشانه یک حلقه بی نهایت این است که فقط داده هایی که در داخل حلقه هستند به خروجی ارسال می شوند.
- "For loops": حلقههای for در MATLAB به این صورت است: "for i = 1: n / do actions / end" (اسلش به معنای یک خط جدید است). این چرخه به معنای "انجام عمل" n بار است. بنابراین، اگر حلقه بگوید "print Hello" و تعداد تفسیرها 5 باشد، "Hello" 5 بار چاپ می شود.
- "حلقههای While": در متلب شبیه به: "در حالی که بیان درست است / انجام اقدامات / پایان است". این بدان معنی است که عمل تا زمانی انجام می شود که عبارت درست باشد. معمولاً بدنه حلقه حاوی عبارتی است که مقدار عبارت بولی را به "false" تغییر می دهد. برای ایجاد یک حلقه while از یک حلقه for، باید بنویسید "while i<=n / do действия / end".
- حلقه های تودرتو: یک حلقه تودرتو اگر داخل حلقه دیگری باشد. به نظر می رسد: "برای i = 1: 5 / برای j = 1: 5 / انجام اقدامات / پایان / پایان". عمل روی شمارنده j پنج بار انجام می شود، سپس مقدار i یک برابر افزایش می یابد، دوباره عمل روی شمارنده j 5 بار انجام می شود و به همین ترتیب.
- برای کسب اطلاعات بیشتر در مورد هر قسمت از این مقاله یا به طور کلی متلب به سایت مراجعه کنید
بیانیه if شرطی
در ساده ترین حالت، دستور دستور if به صورت زیر است:
اگر<выражение>
<операторы>
پایان
توجه شما را به این نکته جلب می کنم که برخلاف زبان های برنامه نویسی مدرن، از مفهومی به عنوان عملگر ترکیبی استفاده نمی شود. بلوک اپراتور شرطی باید با کلمه سرویس پایان خاتمه یابد.
در زیر مثالی از اجرای تابع علامت () آورده شده است که اگر عدد بزرگتر از صفر باشد +1، اگر عدد کمتر از صفر باشد -1 و اگر عدد صفر باشد 0 را برمی گرداند:
x = 5;
اگر x> 0
دیسپ (1)؛
پایان
اگر x< 0
دیسپ (-1)؛
پایان
اگر x == 0
دیسپ (0)؛
پایان
تجزیه و تحلیل مثال داده شده نشان می دهد که هر سه شرط متقابلاً ناسازگار هستند، یعنی. وقتی یکی از آنها فعال می شود، دیگر نیازی به بررسی نیست. اجرای درست چنین منطقی باعث افزایش سرعت اجرای برنامه می شود. این را می توان با استفاده از ساخت و ساز به دست آورد
اگر<выражение>
<операторы1>درصد برآورده می شوند اگر شرط درست باشد
دیگر
<операторы2>٪ در صورت نادرست بودن شرط برآورده می شوند
پایان
سپس مثال بالا را می توان به صورت زیر نوشت:
X = 5;
اگر x> 0
دیسپ (1)؛
دیگر
اگر x< 0
دیسپ (-1)؛
دیگر
دیسپ (0)؛
پایان
پایان
این برنامه ابتدا مثبت بودن متغیر x را بررسی می کند و در این صورت، مقدار 1 بر روی صفحه نمایش داده می شود و همه شرایط دیگر نادیده گرفته می شوند. اگر شرط اول نادرست بود، اجرای برنامه توسط else (در غیر این صورت) به شرط دوم ادامه مییابد، جایی که متغیر x از نظر منفی بودن آزمایش میشود و اگر شرط درست باشد، مقدار -1 نمایش داده میشود. صفحه نمایش اگر هر دو شرط نادرست باشند، مقدار 0 نمایش داده می شود.
مثال بالا را می توان با استفاده از یک ساختار دیگر از عملگر if زبان MatLab به شکل ساده تری نوشت:
اگر<выражение1>
<операторы1>% اجرا می شوند اگر عبارت 1 درست باشد
elseif<выражение2>
<операторы2>% اجرا می شوند اگر عبارت 2 درست باشد
...
elseif<выражениеN>
<операторыN>% اجرا می شوند اگر عبارت N درست باشد
پایان
و به صورت زیر نوشته می شود:
x = 5;
اگر x> 0
دیسپ (1)؛ % اجرا می شود اگر x> 0 باشد
elseif x< 0
دیسپ (-1)؛ % اجرا می شود اگر x< 0
دیگر
دیسپ (0)؛ % اجرا می شود اگر x = 0 باشد
پایان
با دستور شرطی if، می توانید شرایط پیچیده تر (ترکیبی) را آزمایش کنید. به عنوان مثال، باید تعیین کنید: آیا متغیر x در محدوده مقادیر 0 تا 2 قرار می گیرد؟ این را می توان با بررسی همزمان دو شرط به طور همزمان اجرا کرد: x> = 0 و x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.
برای پیاده سازی شرایط ترکیبی در MatLab از عملگرهای منطقی استفاده می شود:
& - منطقی و
| - یا منطقی
~ - منطقی نیست
بیایید به مثالی از استفاده از شرایط ترکیبی نگاه کنیم. فرض کنید باید بررسی شود که آیا متغیر x در محدوده 0 تا 2 قرار دارد یا خیر. برنامه به صورت زیر نوشته می شود:
x = 1;
اگر x> = 0 و x<= 2
دیگر
پایان
در مثال دوم، بررسی می کنیم که متغیر x به محدوده 0 تا 2 تعلق ندارد. این با ایجاد یکی از دو شرط به دست می آید: x.< 0 или x > 2:
x = 1;
اگر x< 0 | x > 2
disp ("x به محدوده 0 تا 2 تعلق ندارد")؛
دیگر
disp ("x متعلق به محدوده 0 تا 2 است")؛
پایان
با استفاده از عملگرهای منطقی AND، OR، NOT، می توانید شرایط ترکیبی مختلفی ایجاد کنید. به عنوان مثال، می توانید بررسی کنید که متغیر x در محدوده 5- تا 5 قرار می گیرد، اما به محدوده 0 تا 1 تعلق ندارد. بدیهی است که این می تواند به صورت زیر پیاده سازی شود:
x = 1;
اگر (x> = -5 و x<= 5) & (x < 0 | x > 1)
disp ("x متعلق به [-5، 5] است اما در آن گنجانده نشده است");
دیگر
disp ("x یا در [-5، 5] یا در گنجانده نشده است");
پایان
توجه داشته باشید که در شرایط مرکب پیچیده از پرانتز استفاده شده است. واقعیت این است که اولویت عملیات AND بالاتر از اولویت عملیات OR است و اگر پرانتز وجود نداشت، شرایط به این صورت بود: (x> = -5 و x<= 5 и x < 0) или x >1. بدیهی است که چنین چکی نتیجه ای متفاوت از آنچه مورد انتظار است به همراه خواهد داشت.
از پرانتز در برنامه نویسی برای تغییر تقدم عبارات استفاده می شود. مانند عملگرهای حسابی، عملگرهای منطقی نیز به میل برنامه نویس قابل تغییر هستند. با استفاده از پرانتز، بررسی ابتدا در داخل آنها و سپس خارج از آنها انجام می شود. به همین دلیل است که در مثال بالا ملزم به دستیابی به نتیجه مطلوب هستند.
اولویت عملیات منطقی به شرح زیر است:
NOT (~) بالاترین اولویت است.
و (&) - اولویت متوسط؛
OR (|) کمترین اولویت است.
بیانیه حلقه while
زبان برنامه نویسی MatLab دو عملگر حلقه دارد: while و for. با کمک آنها، به عنوان مثال، برنامه نویسی الگوریتم های تکراری، محاسبه مجموع یک سری، تکرار روی عناصر آرایه و بسیاری موارد دیگر انجام می شود.
در ساده ترین حالت، یک حلقه در یک برنامه با استفاده از دستور while سازماندهی می شود که دارای نحو زیر است:
در حالی که<условие>
<операторы>
پایان
اینجا<условие>به معنای یک عبارت شرطی مانند آنچه در دستور if استفاده می شود، و حلقه while تا زمانی اجرا می شود که شرط درست باشد.
لازم به ذکر است که اگر شرط قبل از شروع اجرای حلقه نادرست باشد، دستورات موجود در حلقه حتی یک بار هم اجرا نمی شوند.
در اینجا مثالی از نحوه عملکرد حلقه while برای محاسبه مجموع یک سری آورده شده است:
i = 1; ٪ مقدار شمارنده
در حالی که من<= 20 % цикл (работает пока i <= 20)
پایان% انتهای حلقه
دیسپ (S)؛ % نمایش مجموع 210 بر روی صفحه نمایش
حالا بیایید کار را پیچیده کنیم و مجموع سری را محاسبه کنیم. در اینجا، در عملگر حلقه، دو شرط به دست میآید: یا شمارنده i به 20 میرسد، یا مقدار مجموع S از 20 تجاوز میکند. این منطق را میتوان با استفاده از یک عبارت شرطی مرکب در عملگر حلقه while پیادهسازی کرد:
S = 0; ٪ ارزش اولیه مقدار
i = 1; ٪ مقدار شمارنده
در حالی که من<= 20 & S <= 20 % цикл (работает пока i<=10 и S<=20
S = S + i; ٪ مبلغ محاسبه می شود
i = i + 1; ٪ شمارنده 1 افزایش می یابد
پایان% انتهای حلقه
مثال داده شده امکان استفاده از شرایط ترکیبی را در یک حلقه while نشان می دهد. به طور کلی، همان شرایط را می توان به عنوان یک عبارت شرطی مانند یک عبارت شرطی if نوشت.
کار هر عملگر حلقه، از جمله while، می تواند به اجبار با استفاده از دستور break خاتمه یابد. به عنوان مثال، برنامه قبلی را می توان با استفاده از دستور break به صورت زیر بازنویسی کرد:
S = 0; ٪ ارزش اولیه مقدار
i = 1; ٪ مقدار شمارنده
در حالی که من<= 20 % цикл (работает пока i<=10
S = S + i; ٪ مبلغ محاسبه می شود
i = i + 1; ٪ شمارنده 1 افزایش می یابد
اگر S> 20٪ اگر S> 20،
زنگ تفريح؛ % سپس چرخه به پایان می رسد
پایان
پایان% انتهای حلقه
دیسپ (S)؛ % نمایش مجموع 21 بر روی صفحه نمایش
در این مثال، شرط دوم برای پایان حلقه، زمانی که S بزرگتر از 20 باشد، در خود حلقه نوشته شده است و با استفاده از دستور break، حلقه بلافاصله پس از حلقه while به تابع disp () خارج می شود.
عملگر کنترل اجرای حلقه دوم continue به شما این امکان را می دهد که از اجرای قطعه برنامه پس از آن صرفنظر کنید. به عنوان مثال، شما می خواهید مجموع عناصر یک آرایه را محاسبه کنید
a =;
به استثنای عنصر با شاخص 5. چنین برنامه ای را می توان به صورت زیر نوشت:
S = 0; ٪ ارزش اولیه مقدار
a =; ٪ آرایه
i = 0; شمارنده شاخص آرایه ٪
در حالی که من< length(a) % цикл (работает пока i меньше
% طول آرایه a)
i = i + 1; % شمارنده شاخص را 1 افزایش می دهد
اگر i == 5٪ اگر شاخص 5 باشد
ادامه هید؛ ٪ سپس ما آن را به حساب نمی آوریم
پایان
S = S + a (i)؛ % مجموع عناصر شمرده می شود
پایان% انتهای حلقه
دیسپ (S)؛ ٪ نمایش مقدار 40 بر روی صفحه نمایش
لازم به ذکر است که در این برنامه قبل از بررسی شرط، اندیس آرایه i افزایش می یابد. این کار به گونه ای انجام می شود که مقدار شاخص در هر تکرار حلقه 1 افزایش می یابد. اگر افزایش شمارنده i مانند مثال های قبلی نوشته شود، i.e. پس از محاسبه مجموع، به دلیل دستور continue مقدار آن در 5 متوقف می شود و حلقه while "برای همیشه" اجرا می شود.
برای عملگر حلقه
اغلب، هنگام سازماندهی یک حلقه، لازم است که در یک محدوده معین از مقادیر و با یک مرحله تغییر معین، بیش از مقدار شمارنده تکرار شود. به عنوان مثال، برای تکرار بر روی عناصر یک بردار (آرایه)، باید یک شمارنده از 1 به N با گام 1 سازماندهی کنید، که در آن N تعداد عناصر بردار است. برای محاسبه مجموع سری، شمارنده ای از a تا b نیز با گام مورد نیاز تنظیم می شود. و غیره. با توجه به اینکه اغلب در برنامه نویسی با چنین وظایفی مواجه می شویم، برای اجرای آنها عملگر حلقه for پیشنهاد شد که اجرای حلقه با شمارنده را آسانتر و بصری تر می کند.
نحو دستور حلقه for به صورت زیر است:
برای<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
پایان
بیایید عملکرد این چرخه را با استفاده از مثال اجرای الگوریتم برای یافتن حداکثر مقدار یک عنصر در یک بردار در نظر بگیریم:
a =;
m = a (1)؛ ٪ حداکثر مقدار فعلی
برای i = 1: طول (a)% حلقه از 1 تا انتهای بردار با
% در مراحل 1 (پیشفرض)
اگر m< a(i) % если a(i) >متر،
m = a (i)؛ % سپس m = a (i)
پایان
پایان% انتهای حلقه for
دیسپ (متر)؛
در این مثال، حلقه for شمارنده i را تنظیم می کند و مقدار آن را از 1 به 10 با افزایش 1 تغییر می دهد. توجه داشته باشید که اگر اندازه گام به صراحت مشخص نشده باشد، به طور پیش فرض 1 خواهد بود.
در مثال بعدی، اجرای الگوریتم انتقال عناصر یک بردار به راست را در نظر بگیرید. عنصر ماقبل آخر در جای آخرین قرار می گیرد، بعدی - در محل ماقبل آخر و غیره. تا عنصر اول:
a =;
دیسپ (الف)؛
برای i = طول (a): - 1: حلقه 2% از 10 تا 2 با افزایش 1-
a (i) = a (i-1); % جابجایی عناصر بردار a
پایان% انتهای حلقه for
دیسپ (الف)؛
نتیجه برنامه
3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1
مثال بالا نشان می دهد که برای پیاده سازی یک حلقه با شمارنده از یک مقدار بالاتر به یک پایین تر، باید به صراحت مرحله، در این مورد، -1 را مشخص کنید. اگر این کار انجام نشود، چرخه بلافاصله به کار خود پایان می دهد و برنامه به درستی کار نمی کند.
حل معادلات
© سایت 2015-2019
تمامی حقوق متعلق به نویسندگان آنها می باشد. این سایت ادعای نویسندگی ندارد، اما استفاده رایگان را فراهم می کند.
تاریخ ایجاد صفحه: 2017/12/12
3.4. عملگرهای سیستم متلب 5. ترکیب عملگرها در عبارات حسابی. توابع داخلی
اپراتورهای سیستم متلب به سه دسته تقسیم می شوند:
- عملگرهای حسابی به شما امکان می دهند عبارات حسابی بسازید و محاسبات عددی را انجام دهید.
- عملگرهای رابطه ای به شما امکان می دهند عملوندهای عددی را مقایسه کنید.
- عملگرهای منطقی به شما این امکان را می دهند که عبارات منطقی بسازید.
عملگرهای منطقی کمترین اولویت را نسبت به عملگرهای رابطه ای و حسابی دارند.
عملگرهای حسابیهنگام کار با آرایه ای از اعداد، سطوح اولویت زیر در بین عملیات حسابی تنظیم می شود:
سطح 1: | transposition-wise element (. "), element-wise exponentiation (. ^), transposition ماتریس مزدوج Hermitian ("), matrix exponentiation (^); |
سطح 2: | جمع یکنواخت (+)، تفریق یکنواخت (-); |
مرحله 3: | ضرب آرایه ها (. *)، تقسیم راست (./)، تقسیم چپ آرایه ها (. \)، ضرب ماتریس (*)، حل سیستم های معادلات خطی - عملیات (/)، عملیات (\); |
سطح 4: | جمع (+)، تفریق (-)؛ |
سطح 5: | عملگر تشکیل آرایه (:). |
در هر سطح، اپراتورها دارای اولویت برابر هستند و به ترتیب چپ به راست ارزیابی می شوند. ترتیب پیش فرض را می توان با استفاده از پرانتز تغییر داد.
مثال
بگذارید 2 بردار داده شود
A =
B =;
نتایج اپراتور
C = A./B. ^ 2
C = 0.7500 9.0000 0.2000
C = (A./B). ^ 2
C = 2.2500 81.0000 1.0000
کاملا متفاوت.
عملگرهای حسابی اجازه استفاده از عبارات شاخص را می دهند:
b = sqrt (A (2)) + 2 * B (1)
b = 7
عملگرهای حسابی سیستم متلب معمولاً با آرایه هایی هم اندازه کار می کنند. برای بردارها و آرایه های مستطیلی، هر دو عملوند باید یک اندازه باشند، مگر اینکه یکی از آنها اسکالر باشد. اگر یکی از عملوندها اسکالر باشد و دیگری نه، متلب فرض می کند که اسکالر به اندازه عملوند دوم گسترش یافته و عملیات مشخص شده برای هر عنصر اعمال می شود. این عملیات را گسترش اسکالر می نامند.
عملگرهای رابطه ای... متلب 6 عملگر رابطه ای زیر را تعریف می کند:
- < Меньше
- <= Меньше или равно
- > بیشتر
- > = بزرگتر یا مساوی
- == برابر با هویت
- ~ = برابر نیست
عملگرهای رابطه یک مقایسه عنصری بین دو آرایه با ابعاد مساوی انجام می دهند. برای بردارها و آرایه های مستطیلی، هر دو عملوند باید یک اندازه باشند، مگر اینکه یکی از آنها اسکالر باشد. در این مورد، متلب اسکالر را با هر عنصر عملوند دیگر مقایسه می کند. موقعیت هایی که این رابطه درست است، مقدار 1 را دریافت می کنند، در جایی که false - 0 است.
عملگرهای رابطه ای معمولاً برای تغییر ترتیب اجرای دستورات برنامه استفاده می شوند. بنابراین، آنها اغلب در بدنه دستورات switch if، for، while استفاده می شوند.
عملگرهای رابطه ای همیشه به صورت عنصری اجرا می شوند.
مثال.
بیایید دو آرایه را با استفاده از شرط A مقایسه کنیم A = ماتریس به دست آمده موقعیت هایی را نشان می دهد که عنصر A کمتر از عنصر مربوطه B است. هنگام ارزیابی عبارات حسابی، عملگرهای رابطه ای اولویت کمتری نسبت به حسابی، اما بالاتر از عملگرهای منطقی دارند. عملگرهای رابطه را می توان برای آرایه های چند بعدی که یکی از ابعاد آنها صفر است اعمال کرد، مشروط بر اینکه هر دو آرایه یک اندازه باشند یا یکی از آنها اسکالر باشد. با این حال، عباراتی مانند A == فقط برای آرایه هایی با اندازه 0x0 یا 1x1 اعمال می شود و در غیر این صورت یک خطا ایجاد می کند. بنابراین، همه کاره ترین راه برای بررسی خالی بودن یک آرایه، استفاده از تابع isempty (A) است. عملگرهای منطقی... عملگرهای منطقی سیستم متلب شامل عملگرهای زیر است: علاوه بر این عملگرها، دایرکتوری bitfun حاوی تعدادی توابع است که عملیات منطقی بیتی را انجام می دهند. عملگرهای منطقی مقایسه عنصری آرایه هایی با ابعاد یکسان را اجرا می کنند. برای بردارها و آرایه های مستطیلی، هر دو عملوند باید یک اندازه باشند مگر اینکه یکی از آنها اسکالر باشد. در مورد دوم، متلب اسکالر را با هر عنصر عملوند دیگر مقایسه می کند. موقعیت هایی که این رابطه درست است، مقدار 1 را دریافت می کنند، در جایی که false - 0 است. هر عملگر منطقی با مجموعه خاصی از شرایط مطابقت دارد که نتیجه یک عبارت منطقی را تعیین می کند: مثال مثال مثال توابع منطقی... علاوه بر عملگرهای منطقی، تعدادی توابع منطقی در سیستم متلب گنجانده شده است: مثال مثال u =; در این حالت هیچ پیامی ظاهر نمی شود، اما اگر به عنوان بردار u بردار را بگیریم u = سپس یک پیام ظاهر می شود ans = "همه عناصر کمتر از 3 هستند" در مورد آرایه ها، تابع all ستون ها را بررسی می کند، یعنی ستون محور است. مثال A = مثال لیست کاملی از توابع منطقی سیستم متلب در دایرکتوری ops موجود است. یافتن تابع... تابع find شاخص های عناصر آرایه ای را که شرایط بولی معین را برآورده می کنند، تعیین می کند. معمولاً برای ایجاد الگوهایی برای مقایسه و ایجاد آرایه های شاخص استفاده می شود. در رایج ترین شکل آن، تابع k = find (x<условие>) یک بردار از شاخص های آن عناصری را برمی گرداند که یک شرط معین را برآورده می کنند. الف = جادو (4) k = پیدا کردن (A> 8); تابعی مانند = find (x) به شما امکان می دهد شاخص های عناصر غیر صفر یک آرایه مستطیلی را بدست آورید. تابعی از فرم = find (x) نیز مقادیر خود را به عنوان بردار s برمی گرداند. ترکیب عملگرها در عبارات حسابی اکنون می توانید عباراتی بسازید که از هر ترکیبی از عملگرهای حسابی، منطقی و رابطه ای استفاده می کنند. مثال (الف * ب)< (c*d)
با استفاده از براکت ها می توانید دنباله عملیات را کنترل کنید (الف و ب) == (ج | د) کنترل توالی اجرای دستورات.چهار عملگر اصلی برای کنترل توالی اجرای دستورالعمل ها وجود دارد: نحو: شرح: دستور شرط if .... end برخی از عبارت های منطقی را ارزیابی می کند و بسته به مقدار این عبارت، گروه مربوطه از دستورات را اجرا می کند. اگر عبارت بولی درست باشد، متلب تمام دستورات بین if و end را اجرا می کند و سپس اجرای برنامه را در خط بعد از پایان ادامه می دهد. اگر شرط نادرست باشد، متلب تمام عبارات بین if و end را رد می کند و در خط بعد از پایان ادامه می دهد. مثال. اگر rem (a, 2) == 0 مثال. اگر X این عملگر معادل موارد زیر است: اگر همه (X (:)) دستورات if ... else ... end و if ... elseif ... انتهایی شاخه های اضافی در بدنه دستور if ایجاد می کنند: مثال. اگر n< 0
% Если n < 0,
вывести сообщение об ошибке. اگر عبارت شرطی در دستور if یک آرایه خالی باشد، این شرط نادرست است. یعنی یک عملگر شرط از فرم اگر یک دستورات S0 را فقط زمانی اجرا می کند که A یک آرایه خالی باشد. نحو: تعویض<بیان> دستور switch ... case 1 ... case k ... در غیر این صورت ... end بسته به مقادیر یک متغیر یا عبارت، شاخه ها را انجام می دهد. دستور switch شامل: دستور switch با مقایسه مقدار عبارت ارزیابی شده با مقادیر گروه های موردی کار می کند. برای عبارات عددی، دستور case اجرا می شود if<значение>== <выражение>... برای عبارتهای رشتهای، اگر strcmp (مقدار، عبارت) درست باشد، عبارت case به true ارزیابی میشود. مثال. سوئیچ input_num یک دستور switch میتواند از یک شرط چندگانه در یک گروه مورد استفاده کند، در صورتی که عبارت آن شرط به صورت آرایهای از سلولها نوشته شده باشد: سوئیچ var نحو: در حالی که اصطلاح شرح: عملگر حلقه end ... while با تعداد نامحدودی از عملیات، تا زمانی که عبارت کنترل درست باشد، به طور مکرر یک دستورالعمل یا گروهی از دستورالعمل ها را اجرا می کند. اگر عبارت از یک آرایه استفاده می کند، برای ادامه اجرا باید تمام عناصر آن درست باشند. برای تبدیل یک ماتریس به مقدار اسکالر، از توابع any و all استفاده کنید. مثال. n = 1; خروج از حلقه while را می توان با استفاده از دستور break پیاده سازی کرد. اگر در دستور while، شرط کنترل یک آرایه خالی باشد، چنین شرطی نادرست است، یعنی یک دستور شکل در حالی که A, S1, end هرگز دستورات S1 را اجرا نمی کند، اگر A یک آرایه خالی باشد. نحو: برای<متغیر حلقه> =<начальное значение>:
<приращение>:<конечное значение> شرح: عملگر حلقه انتهایی for .... یک دستورالعمل یا گروهی از دستورالعمل ها را چند بار از پیش تعیین شده اجرا می کند. به طور پیش فرض، افزایش 1 است. شما می توانید هر افزایشی، از جمله منفی را مشخص کنید. برای شاخصهای مثبت، زمانی اجرا پایان مییابد که مقدار شاخص از آن بیشتر شود<конечное
значение>; برای افزایش های منفی، اجرا زمانی خاتمه می یابد که شاخص کمتر شود<конечное значение>. مثال این چرخه پنج بار انجام می شود: استفاده از یک آرایه به عنوان متغیر حلقه... آرایه ها را می توان به عنوان یک متغیر در حلقه for استفاده کرد. مثال. برای i = A متغیر حلقه i را به عنوان بردار A (:، k) تعریف می کند. برای مرحله اول حلقه، k برابر 1 است. برای دوم، k برابر 2 است، و به همین ترتیب تا زمانی که k به n برسد. یعنی حلقه به تعداد ستون هایی که در ماتریس A وجود دارد اجرا می شود. برای هر مرحله i یک بردار حاوی یکی از ستون های آرایه A است. توابع داخلی با شروع در متلب 5، فایل های M می توانند حاوی کدهایی برای بیش از یک تابع باشند. اولین تابع در فایل، تابع اصلی است که با نام M-file خوانده می شود. سایر توابع درون یک فایل، توابع فرعی هستند که فقط برای تابع اصلی و سایر توابع فرعی همان فایل قابل مشاهده هستند. هر تابع فرعی عنوان خاص خود را دارد. توابع فرعی به طور پیوسته از یکدیگر پیروی می کنند. تابع های فرعی را می توان به هر ترتیبی فراخوانی کرد، در حالی که ابتدا تابع اصلی اجرا می شود. تابع فرعی میانگین و میانه میانگین و میانه لیست ورودی را محاسبه می کند. تابع اصلی newsstats طول لیست را تعیین میکند و تابعهای فرعی را که طول لیست n را به آنها ارسال میکنند فراخوانی میکند. توابع داخل یک فایل M نمی توانند به متغیرهای یکسان دسترسی داشته باشند اگر به عنوان متغیرهای سراسری در توابع مربوطه اعلان نشوند یا به عنوان پارامتر به آنها منتقل شوند. توجه داشته باشید که help فقط می تواند تابع اصلی را ببیند و توابع فرعی را نمی بیند. هنگامی که یک تابع از یک فایل M می آید، MATLAB ابتدا بررسی می کند که آیا این تابع یک تابع فرعی است یا خیر. از آنجایی که ابتدا وجود تابع های فرعی بررسی می شود، می توانید از نام توابع سیستم متلب به عنوان نام تابع فرعی استفاده کنید. دایرکتوری های خصوصی... آنها از نسخه 5.0 وارد متلب شدند. دایرکتوری های خصوصی یک زیر شاخه به نام private از دایرکتوری والد هستند. فایل های دایرکتوری خصوصی M فقط برای فایل های دایرکتوری والد M قابل دسترسی هستند. از آنجایی که فایلهای موجود در فهرست خصوصی خارج از دایرکتوری والد قابل مشاهده نیستند، ممکن است نام فایلهای موجود در فهرستهای دیگر در سیستم متلب را داشته باشند. این در مواردی مفید است که کاربر نسخههای خود از یک تابع را با ذخیره کردن نسخه اصلی در یک دایرکتوری دیگر ایجاد میکند. از آنجایی که متلب قبل از دایرکتوری های تابع استاندارد متلب، دایرکتوری خصوصی را جستجو می کند، ابتدا تابع را از دایرکتوری خصوصی پیدا می کند. کار آزمایشگاهی شماره 6 هدف درس:
با عملگرهای شرطی و حلقه آشنا شوید، در استفاده از آنها در محاسبات چرخه ای و شاخه ای مهارت کسب کنید. یک قدم مهم در ایجاد برنامه های تمام عیار در MatLab مطالعه عملگرهای شاخه و حلقه است. با کمک آنها می توانید منطق اجرای الگوریتم های ریاضی را پیاده سازی کنید و محاسبات تکراری (تکرار شونده، مکرر) ایجاد کنید. برای اینکه بتوان منطق را در برنامه پیاده سازی کرد از عملگرهای شرطی استفاده می شود. از نظر مفهومی، این عملگرها را می توان به عنوان نقاط گره ای نشان داد، که برنامه با رسیدن به آنها، انتخاب می کند که در کدام یک از جهت های ممکن حرکت کند. به عنوان مثال، باید تعیین کنید که آیا یک متغیر arg دارای عدد مثبت یا منفی است و پیام مربوطه را روی صفحه نمایش دهید. برای این کار می توانید از دستور if (if) استفاده کنید که بررسی های مشابهی را انجام می دهد. در ساده ترین حالت، دستور دستور if به صورت زیر است: اگر<выражение> <операторы> اگر مقدار پارامتر "expression" با مقدار "true" مطابقت داشته باشد، دستور اجرا می شود، در غیر این صورت توسط برنامه حذف می شود. لازم به ذکر است که "expression" یک عبارت شرطی است که در آن برخی از شرایط بررسی می شود. جدول 2.1 انواع عبارات منطقی ساده دستور if را ارائه می دهد. جدول 1. عبارات بولی ساده اگر a کوچکتر از b باشد صحیح و در غیر این صورت نادرست است. اگر a بزرگتر از b باشد صحیح و در غیر این صورت نادرست است. اگر a برابر با b باشد صحیح و در غیر این صورت نادرست است. اگر a کوچکتر یا مساوی b باشد صحیح و در غیر این صورت نادرست است. اگر متغیر a بزرگتر یا مساوی با متغیر b باشد صحیح و در غیر این صورت نادرست است. اگر a برابر با b نباشد صحیح و در غیر این صورت نادرست است. در زیر مثالی از اجرای تابع علامت () آورده شده است که اگر عدد بزرگتر از صفر باشد +1، اگر عدد کمتر از صفر باشد -1 و اگر عدد صفر باشد 0 را برمی گرداند: تابع my_sign x = 5; اگر x> 0 disp (1)؛ پایان اگر x< 0
disp(-1);
end
if
x == 0
disp(0);
end تجزیه و تحلیل مثال داده شده نشان می دهد که هر سه شرط متقابلاً ناسازگار هستند، یعنی. وقتی یکی از آنها فعال می شود، دیگر نیازی به بررسی نیست. اجرای درست چنین منطقی باعث افزایش سرعت اجرای برنامه می شود. این را می توان با استفاده از ساخت و ساز به دست آورد اگر<выражение>
<операторы1>% اجرا می شوند اگر شرط دیگری درست باشد<операторы2>اگر شرط پایان نادرست باشد، ٪ برآورده می شوند سپس مثال بالا را می توان به صورت زیر نوشت: تابع my_sign x = 5; اگر x> 0 disp (1)؛ اگر x< 0
disp(-1);
else
disp(0);
end
end این برنامه ابتدا مثبت بودن متغیر x را بررسی می کند و در این صورت، مقدار 1 بر روی صفحه نمایش داده می شود و همه شرایط دیگر نادیده گرفته می شوند. اگر شرط اول نادرست بود، اجرای برنامه توسط else (در غیر این صورت) به شرط دوم ادامه مییابد، جایی که متغیر x از نظر منفی بودن آزمایش میشود و اگر شرط درست باشد، مقدار -1 نمایش داده میشود. صفحه نمایش اگر هر دو شرط نادرست باشند، مقدار 0 نمایش داده می شود. مثال بالا را می توان با استفاده از یک ساختار دیگر از عملگر if زبان MatLab به شکل ساده تری نوشت: اگر<выражение1>
<операторы1>% اجرا می شوند اگر عبارت 1 true elseif باشد<выражение2>
<операторы2>% اجرا می شوند اگر عبارت 2 ... elseif<выражениеN>
<операторыN>% اجرا می شوند اگر عبارت N end درست باشد و به صورت زیر نوشته می شود: تابع my_sign x = 5; اگر x> 0 disp (1)؛ % اجرا می شود اگر x> 0 elseif x< 0
disp(-1); % выполняется,
если x < 0
else
disp(0); % выполняется,
если x = 0
end با دستور شرطی if، می توانید شرایط پیچیده تر (ترکیبی) را آزمایش کنید. به عنوان مثال، باید تعیین کنید: آیا متغیر x در محدوده مقادیر 0 تا 2 قرار می گیرد؟ این را می توان با بررسی همزمان دو شرط به طور همزمان اجرا کرد: x> = 0 و x<=2. Если эти оба условия истинны,
то x попадает в диапазон от 0 до 2. برای پیاده سازی شرایط ترکیبی در MatLab از عملگرهای منطقی استفاده می شود: & - منطقی و | - یا منطقی ~ - منطقی نیست بیایید به مثالی از استفاده از شرایط ترکیبی نگاه کنیم. فرض کنید باید بررسی شود که آیا متغیر x در محدوده 0 تا 2 قرار دارد یا خیر. برنامه به صورت زیر نوشته می شود: تابع my_if x = 1; اگر x> = 0 و x<= 2
disp("x принадлежит диапазону от 0 до 2");
else
disp("x не принадлежит диапазону от 0
до 2");
end در مثال دوم، بررسی می کنیم که متغیر x به محدوده 0 تا 2 تعلق ندارد. این با ایجاد یکی از دو شرط به دست می آید: x.< 0 или x > 2: تابع my_if x = 1; اگر x< 0 | x >2 disp ("x به محدوده 0 تا 2 تعلق ندارد")؛ else disp ("x متعلق به محدوده 0 تا 2 است")؛ پایان با استفاده از عملگرهای منطقی AND، OR، NOT، می توانید شرایط ترکیبی مختلفی ایجاد کنید. به عنوان مثال، می توانید بررسی کنید که متغیر x در محدوده 5- تا 5 قرار می گیرد، اما به محدوده 0 تا 1 تعلق ندارد. بدیهی است که این می تواند به صورت زیر پیاده سازی شود: تابع my_if x = 1; اگر (x> = -5 و x<= 5) & (x < 0 | x >1) disp ("x متعلق به [-5، 5] است، اما در آن گنجانده نشده است"); else disp ("x یا در [-5، 5] یا در گنجانده نشده است"); پایان توجه داشته باشید که در شرایط مرکب پیچیده از پرانتز استفاده شده است. واقعیت این است که اولویت عملیات AND بالاتر از اولویت عملیات OR است و اگر پرانتز وجود نداشت، شرایط به این صورت بود: (x> = -5 و x<= 5 и x < 0) или x >1. بدیهی است که چنین چکی نتیجه ای متفاوت از آنچه مورد انتظار است به همراه خواهد داشت. از پرانتز در برنامه نویسی برای تغییر تقدم عبارات استفاده می شود. مانند عملگرهای حسابی، عملگرهای منطقی نیز به میل برنامه نویس قابل تغییر هستند. با استفاده از پرانتز، بررسی ابتدا در داخل آنها و سپس خارج از آنها انجام می شود. به همین دلیل است که در مثال بالا ملزم به دستیابی به نتیجه مطلوب هستند. اولویت عملیات منطقی به شرح زیر است: NOT (~) بالاترین اولویت است. و (&) - اولویت متوسط؛ OR (|) کمترین اولویت است. Loops در matlab فرض می کند که یک دستور یا گروهی از دستورات باید ساده ترین راه برای ایجاد حلقه استفاده از آن است f = 1; f = یک حلقه متلب با یک دستور for شروع می شود و با یک دستور پایان به پایان می رسد. تیم در ماژول ویرایشگر، دستورات for و end به طور خودکار برجسته می شوند توجه: سه نوع حلقه در متلب وجود دارد که در زیر نشان داده شده است a = 0; a = 0; a = 10; ans = بنابراین، از موارد بالا، میتوان نتیجه گرفت که باید اطلاعات اضافی و جایگزینهای زیادی را مشاهده کنید!
B =;
آ< B
ans =1
0
0
0
1
1
1
0
1
&
و
|
یا
~
نه
بگذارید دو بردار عددی داده شود:
u =;
v =;
و یک عبارت بولی با عملگر AND (&):
U & V
ans =1
0
1
0
0
1
اگر عناصر عبارت منطقی اعداد باشند، اگر هر دو عملوند صفر باشند، عبارت نادرست است.
ما از بردارهای u و v تعریف شده در بالا استفاده می کنیم و یک عبارت بولی را با عملگر OR (|) اجرا می کنیم:
U | v
ans =1
1
1
1
0
1
ما از بردار u استفاده می کنیم و یک عبارت منطقی با عملگر NOT (~) می سازیم:
~ تو
ans =0
1
0
0
1
0
دو عملوند عددی a و b را در نظر بگیرید:
a = 1;
b = 1;
سپس عملیات xor نتیجه را می دهد:
Xor (a, b)
ans = 0
اجازه دهید یک بردار u داده شود و باید آن را برای شرط "آیا همه عناصر کمتر از 3 هستند؟" بررسی کنید. اگر این شرط برقرار باشد، پیام "همه عناصر کمتر از 3 هستند" نمایش داده می شود.
اگر همه (u< 3)
Disp ("همه موارد کمتر از 3 هستند")
پایان
همه (الف)
دو دو آرایه عددی A و B را در نظر بگیرید
A =
B =;
بیایید یک آرایه C تشکیل دهیم و از توابع بالا استفاده کنیم
C = A./B
C =NaN
Inf
0.3333
1.0000
NaN
NaN
بی نهایت (C)
اسنان (C)
isinf (C)
ans =
0 0 1
1 0 0
ans =
1 0 0
0 1 1
ans =
0 1 0
0 0 0
A =16
2
3
13
5
11
10
8
9
7
6
12
4
14
15
1
A (k) = 100
A =100
2
3
100
5
100
100
8
100
7
6
100
4
100
100
1
مثالی از عملگر مقایسه ای را در نظر بگیرید که نتایج دو عبارت را با هم مقایسه می کند
disp ("a زوج است")
b = a / 2;
پایان
اگر شرط بولی شامل متغیری باشد که اسکالر نیست، اگر همه عناصر غیر صفر باشند، این ادعا درست خواهد بود.
اجازه دهید ماتریس X داده شود. عبارت شرط زیر را بنویسید:
دستورالعمل ها
پایان
دستورالعمل ها
پایان
بیایید به قطعه برنامه نگاهی بیندازیم:
disp ("عدد وارد شده باید مثبت باشد")؛
elseif rem (n، 2) == 0% اگر n مثبت و زوج باشد، بر 2 تقسیم کنید.
a = n / 2;
دیگر
a = (n + 1) / 2; % اگر n> 0 و فرد باشد، بر 1 افزایش داده و تقسیم کنید.
پایان
S1
دیگر
S0
پایان
عبارت % لزوماً یک اسکالر یا رشته است
مورد<ارزش 1>
دستورالعمل ها
% اجرا می شوند اگر< выражение> =< значение1>
مورد <значение2>
دستورالعمل ها
% اجرا می شوند اگر<выражение> = <
значение2>
...
در غیر این صورت
دستورالعمل ها
% اجرا می شوند اگر<выражение>با هیچ کدام مطابقت نداشت
٪ ارزش های
پایان
یک عبارت switch را با شرایط زیر در نظر بگیرید: متغیر input_num را بررسی می کند. اگر input_num -1، 0 یا 1 باشد، عبارات case پیام مناسب را نمایش می دهند. اگر مقدار عبارت input_num با هیچ یک از این مقادیر برابر نباشد، اجرا به عبارت other میپرد.
مورد 1
disp ("منهای یک")
مورد 0
disp ("تهی")
مورد 1
disp ("به علاوه یک")
در غیر این صورت
disp ("مقدار دیگر")
پایان
مورد 1
دیسپ ("1")
مورد (2،3،4)
disp ("2 یا 3 یا 4")
مورد 5
disp ("5")
در غیر این صورت
disp ("چیز دیگری")
پایان
دستورالعمل ها
پایان
این حلقه با تعداد نامشخصی از عملیات، اولین عدد صحیح n را پیدا می کند که برای آن n! - به صورت عددی حاوی 100 کاراکتر نوشته می شود:
در حالی که پرود (1: n)< 1e100
n = n + 1;
پایان
دستورالعمل ها
پایان
برای i = 2: 6
x (i) = 2 * x (i-1);
پایان
حلقه های تو در تو از نوع مجاز هستند:
برای i = 1: m
برای j = 1: n
A (i، j) = 1 / (i + j - 1)؛
پایان
پایان
آرایه mхn A را در نظر بگیرید. عملگر حلقه
دستورالعمل ها
پایانعملگرها و حلقه های شرطی در MatLab
بیانیه if شرطی
چندین بار تکرار کنید
بیان برای. در زیر یک مثال ساده است که در آن 10 محاسبه و نمایش داده می شود! = 10 * 9 * 8 ... * 2 * 1.
برای n = 2: 10
f = f * n;
پایان
3628800
بین این عبارات در مجموع نه بار، یک بار برای هر یک انجام می شود
مقادیر n از 2 تا 10. برای قطع کردن خروجی میانی در داخل حلقه، ما
از نقطه ویرگول استفاده کرد برای دیدن نتیجه نهایی، شما نیاز دارید
f را بعد از پایان حلقه وارد کنید. اگر از نقطه ویرگول استفاده نمی کنید، برنامه
MATLAB هر مقدار میانی 2 !، 3 ! و غیره را نمایش می دهد.
به رنگ آبی اگر بین آن قرار دهید خوانایی بهتری می دهد
آنها دستور می دهند (چگونه این کار را انجام دادیم). ماژول ویرایشگر این کار را انجام می دهد
بطور خودکار. اگر برای را در پنجره فرمان تایپ کنید،
MATLAB تا زمانی که شما خط فرمان جدید >> را صادر نمی کند
دستور end را وارد کنید که باعث می شود برنامه متلب یک حلقه کامل کند و
یک خط فرمان جدید نمایش می دهد.1. حلقه for در متلب
برای i = 1:10
a = a + 1;
پایان 2. حلقه while در متلب
در حالی که الف<10
a = a + 1;
پایان 3. حلقه اگر در Matlab
اگر a == 10
"مورد اول"
دیگر
"مورد دوم"
پایان
مورد اول← قبلی مشاهده نتایج Matlab