نویسنده علیرضا گلمکانی
شماره کلید 47
اجرای دستورات شرطی با دستور 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
دقت شود که برای چک کردن شرط تساوی، حتما باید از دو علامت تساوی به صورت == استفاده شود، زیرا علامت = در متلب، برای نسبت دادن مقدار به متغیرها در نظر گرفته شده است و بنابراین برای چک کردن شرط تساوی، مجبوریم از علامت == استفاده کنیم.
کپی برداری از محتوای سایت کلیدستان، ممنوع بوده و پیگرد قانونی دارد. (تنها استفاده شخصی کاربر، مجاز است) (کپی برداری توسط سایر وب سایت ها = حرام) (بیشتر بدانید)
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 22 21 1
احمد
سلام دوستان یک سوال داشتم
آیا کسی هست کمک کنه
برنامه ای در متلب که 4 مقدار گرفته و مقایسه کند و اعداد را از بزرگ به کوچک مرتب کند
admin
میر ابوالفضل میر ابراهیمی
سلام و خسته نباشد
خواستم بدونم چطوری میشه به عدد شرط گذاشت
مثلا از 20 تا 100 عدد وارد کنیم اگه مثلا پایین 20 بود ارور بده بالای 100 هم بود ارور بده
admin
سلام.
کد متلب (MATLAB) زیر را می نویسیم :
کد پیاچپی:
clear all
close all
clc
A
= input('please enter your number : ')
if A>100
error('please choose another number for A');
elseif A<20
error('please choose another number for A');
end
سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
دستور input برای دریافت ورودی از کاربر است (کلید شماره 88).
دستور error برای نمایش یک پیام در خروجی، به همان شکل متداول برای نمایش خطاها در نرم افزار متلب (MATLAB) به کار می رود (کلید شماره 165).
پس از اجرای کدها، یک عدد را وارد کرده و کلید 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) زیر استفاده نمایید :
کد پیاچپی:
clear all
close all
clc
A
= [3 0 2; 0 6 0]
A(A==0) = []
نتیجه اجرای کد متلب (MATLAB) بالا :
کد پیاچپی:
A = 3 0 2
0 6 0
A
= 3 6 2
محمد
با سلام
مجموعه ای از داده ها دارم که بعد از مرتب کردن با استفاده از دستور 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
کد پیاچپی:
clear all
close all
clc
A
= [2 4; 5 7]
kelidestan = factorial(A)
نتیجه اجرای کد متلب (MATLAB) بالا :
کد پیاچپی:
A = 2 4
5 7
kelidestan
= 2 24
120 5040
سارا
سلام خسته نباشید.. میخوام یه انتگرال به روش 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
Undefined function 'eq' for input arguments of type 'cell'.
محمدحسین
سلام دوستان شبتون بخیر
دوستان میخوام یه ارایه از کاربر بگیرم (مثلا نمره) بعد اعداد بین 5تا 8 رو به 9 تبدیل کنه؟ این چجوری میشه؟