آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

اجرای دستورات شرطی با دستور if در متلب

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

مثال

A=5
if A>=0
    B=A
end
if A<=0
    B=-A
end

نتیجه :


A =
 
     5
 
 
B =
 
     5

همان طور که مشاهده می کنید، از دو دستور if استفاده کرده ایم. هدف این است که مقدار B برابر قدرمطلق A باشد، بنابراین اگر A مساوی یا بزرگتر از صفر باشد، باید B را برابر A قرار دهیم و اگر A مساوی یا کوچکتر از صفر باشد، باید B را برابر A– قرار دهیم.

دقت کنید که در پایان دستور if ، حتما باید end نوشته شود تا نرم افزار متلب بداند که دستور if پایان یافته است.

دستور if به همراه else :

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

مثال

در مثال قبلی، از دو دستور if استفاده کردیم، اما این بار همان مثال را تنها با یک دستور if می نویسیم :


A=5
if A>=0
    B=A
else
    B=-A
end

نتیجه :


A =
 
     5
 
 
B =
 
     5

هدف این بوده است که B برابر قدرمطلق A باشد، ابتدا متلب چک می کند که A مساوی یا بزرگتر از صفر هست یا نه، اگر باشد، آنگاه B را برابر A قرار می دهد و چون شرط برآورده شده است، دستورات نوشته شده برای else را نادیده می گیرد. اما اگر A مساوی یا بزرگتر از صفر نباشد، آنگاه متلب، تنها دستورات مربوط به else را اجرا می کند.

دستور if به همراه elseif :

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

مثال

همان مثال قبل را این بار با استفاده از elseif می نویسیم. تنها تفاوت این است که حالت خاص A=0 را جداگانه بررسی کرده ایم :


A=5
if A>0
    B=A
elseif A==0
    B=0
else
    B=-A
end

نتیجه :


A =
 
     5
 
 
B =
 
     5

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

نویسنده علیرضا گلمکانی
شماره کلید 47
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 24 22 2
احمد
۱۳۹۵/۰۸/۰۹
۱۶:۰۲

سلام دوستان یک سوال داشتم
آیا کسی هست کمک کنه
برنامه ای در متلب که 4 مقدار گرفته و مقایسه کند و اعداد را از بزرگ به کوچک مرتب کند

admin
۱۳۹۶/۱۰/۱۳
۲۱:۴۸

سلام.
از دستور sort در متلب (MATLAB) استفاده کنید :



میر ابوالفضل میر ابراهیمی
۱۳۹۶/۱۰/۰۹
۱۰:۱۰

سلام و خسته نباشد
خواستم بدونم چطوری میشه به عدد شرط گذاشت
مثلا از 20 تا 100 عدد وارد کنیم اگه مثلا پایین 20 بود ارور بده بالای 100 هم بود ارور بده

admin
۱۳۹۶/۱۰/۱۳
۲۱:۴۴

سلام.
کد متلب (MATLAB) زیر را می نویسیم :


سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
دستور input برای دریافت ورودی از کاربر است ().
دستور error برای نمایش یک پیام در خروجی، به همان شکل متداول برای نمایش خطاها در نرم افزار متلب (MATLAB) به کار می رود ().
پس از اجرای کدها، یک عدد را وارد کرده و کلید enter از کیبورد را بزنید. اگر عدد از 100 بزرگتر و یا از 20 کوچکتر باشد، یک پیام خطا در خروجی نمایش داده می شود.

sanaz.hz
۱۳۹۶/۱۱/۱۷
۱۱:۰۳

با سلام و ممنون از سایت خوبتون
من یک شرطی در محدودیت های مدلم دارم که نمیدونم چطور باید وارد کنم: ماتریس دو بعدی فاصله را به صورت d(i,j) تعریف کردم و یک مقدار حداکثر در نظر گرفتم به صورت dm=35 تعریف شده،حالا میخوام بگم که اگر که هر کدوم از درایه های ماتریس فاصله ی d(i,j) مقدارش از اون 35 بیشتر باشه، متغیر تصمیم مسئلم که سه بعدیه و دو بعدش همون i وj هستش x(i,j,r)  برابر با صفر بشه.
مثلا اگر درایه  d(2,3) مقدارش از 35 بیشتر هستش متغیر تصمیم x(2,3,r) برابر با صفر بشه یعنی متغیر تصمیم به ازای سطر2 و ستون 3 و همه ی r ها، صفر بشه
ممنون میشم راهنماییم کنید

Reza
۱۳۹۷/۰۴/۱۰
۱۶:۱۱

سلام 
ممنون مطالب خوبتون
ی سوال داشتم میخاستم بدونم چ جوری میتونم انتگرال یگانه رو بدون استفاده از دستور آماده در مطلب اجرا کنم مثلا با دستور if،while،for
ممنون میشم کمک کنین

حمید
۱۳۹۷/۰۹/۰۳
۱۹:۰۴

سلام کمک کنید لطفا ی برنامه میخواسم ک ۵ حالته باشه مثلا بین ۱۵ تا ۲۵ نرماله و بین ۲۵ تا ۳۰ چاق و بزرگتر از ۳۰ خیلی چاق و اونور بین ۱۵ تا ۱۰ لاغر و کوچکتر از ۱۰ خبلی لاغر که ۵ حالته میشه با  if else else if باشه لطفا پاسخگو باشین ممنون میشم

رضا
۱۳۹۷/۰۹/۰۷
۱۱:۱۷

سلام.ببخشید من در برنامم دستور if  دارم که وقتی شرط if  برقرار میشه دستورات داخل if انجام نمیشه!!!!!!نمیدونم مشکلش چیه؟//ممنون میشم راهنماییم کنید.

admin
۱۳۹۷/۰۹/۰۷
۱۲:۴۵

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



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

Sepideh
۱۳۹۷/۰۹/۱۵
۱۸:۵۸

سلام.من میخوام یه کدی رو بزنم و درانتهای کد با بدست آوردن خطا شرط خطا رو اعمال کنم و درصورت نیاز به اول کد برگردم .اینطور که معلومه متلب دستور do/while رو نداره .دراین صورت چطور میتونم برگردم اول کد؟

admin
۱۳۹۷/۰۹/۱۶
۱۳:۰۹

سلام.
برای ساخت حلقه، با استفاده از دستور while در متلب (MATLAB)، کلید زیر را بخوانید :



مژگان عارفی
۱۳۹۸/۰۹/۰۹
۲۰:۰۸

سلام.من یک بردار دارم.میخوام داخل این بردار درایه هایی که مقدارشون صفر هست را پیدا کنم و حذفشون کنم و یک برداری داشته باشم بدون مقادیر صفر.با دستورwhileرفتم اما ارور میده.کسی میتونه کمکم کنه؟؟فووورییییی بی زحمت

admin
۱۳۹۸/۰۹/۱۰
۱۰:۰۴

سلام.
از کد متلب (MATLAB) زیر استفاده نمایید :



نتیجه اجرای کد متلب (MATLAB) بالا :



محمد
۱۳۹۸/۰۹/۲۶
۱۲:۲۵

با سلام
مجموعه ای از داده ها دارم که بعد از مرتب کردن با استفاده از دستور sort می خوام داده های مرتب شده را به 3 قسمت براساس میانگین تفکیک کند(30 درصد داده ها بیش از میانگین، 40 درصد وسط و 30 درصد پایین تر از میانگین)

firm                           price
 1200                           A
2000                            B
5000                            C
3500                            D
9000                             E
7000                             F
6300                             G
5400                              H
1700                               I
8900                              J


با تشکر

mahdi
۱۳۹۹/۰۳/۲۵
۱۲:۴۷

سلام آقا من چطور کد بنویسم که از تمام درایه های ماتریس فاکتوریل بگیره؟

admin
۱۳۹۹/۰۳/۲۷
۱۳:۵۷

سلام.
کد متلب (MATLAB) :



نتیجه اجرای کد متلب (MATLAB) بالا :



سارا
۱۳۹۹/۰۵/۱۱
۱۲:۱۴

سلام خسته نباشید.. میخوام یه انتگرال به روش  metropolice حل کنم چطوری میشه

shadi
۱۳۹۹/۰۷/۰۷
۰۱:۴۴

سلام خسته نباشید 
از چه دستوری استفاده کنم که مثلا در صورت وجود یک شرط خاص  20 خط بعدی را نخوان ولی خط مثلا 21 را بخوان

مینا
۱۳۹۹/۱۰/۰۳
۰۸:۵۷

سلام ببخشید چجوری میشه با 3 عدد یک مثلث ساخت با دستور if

Zarrin
۱۳۹۹/۱۰/۰۵
۱۹:۳۲

سلام دوستان. میشه لطف کنید بگید مشکل کد زیر چیه؟



('Type=('Choise yarn Type: (1)A  (2)B  (3)C
 (YarnType=inputdlg(Type
 if YarnType==1
'FolderType=' C:\Users\User\Documents\MATLAB\Type1        
'FolderType=' C:\Users\User\Documents\MATLAB\Type2          
elseif YarnType==3
'FolderType=' C:\Users\User\Documents\MATLAB\Type3         
end


ارور زیر رو میدهد:

Undefined function 'eq' for input arguments of type 'cell'.

محمدحسین
۱۳۹۹/۱۰/۰۷
۲۰:۴۹

سلام دوستان شبتون بخیر 
دوستان میخوام یه ارایه از کاربر بگیرم (مثلا نمره) بعد اعداد بین 5تا 8 رو به 9 تبدیل کنه؟ این چجوری میشه؟

محمد رضا طالاری
۱۴۰۰/۰۷/۱۸
۱۲:۴۸

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

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)