دستور for در متلب
حلقهها ابزارهای اساسی هستند که برای تکرار، بهینهسازی و اهداف مختلفی استفاده میشوند. در برنامهنویسی متلب، دستور for امکان اجرای یک بلوک یا بخش از کد را بارها و بارها فراهم میکند. در متلب، یکی از پرکاربردترین حلقهها، حلقه for است که به دلیل سادگی و قدرت آن، یکی از ابزارهای کلیدی در توسعه برنامهها و تحلیل دادههاست. با استفاده صحیح و بهینه از آن میتوان کدهای پیچیده را سادهتر نوشت و عملکرد برنامهها را بهبود بخشید. دستور for در متلب قابلیتهای گستردهای را دارد که شامل استفاده در حلقههای تو در تو برای دادههای چندبعدی تا بهینهسازی عملکرد با عملیات ماتریسی میشود.
انجام پروژه متلب نیز در پروژستان توسط کارشناسان حرفه ای در کمترین زمان با خدمات ویژه انجام میشود و از تمامی این الگوریتم ها و دستورات برای پیش بردن اهداف دانشجویی استفاده می شود.
کاربردهای دستور for می تواند شامل موارد زیر باشد:
الف- تکرار بر روی بردارها: یکی از رایجترین کاربردهای دستورfor تکرار بر روی عناصر یک بردار است.
ب- تکرار بر روی ماتریسها: برای جستجو عناصر یک ماتریس، میتوان از دو حلقه تو در تو استفاده کرد.
ج- تکرار بر روی مقادیر دنباله: تکرار بر روی مقادیر دنبالهای با گامهای مختلف استفاده کرد.
از کاربردهای بیشتر دستور for میتوان در موارد زیر بهره برد:
الف- استفاده از حلقههای تو در تو برای کار با دادههای چند بعدی
ب- استفاده از دستورات break و continue برای کنترل جریان حلقهها
ج- بهینهسازی عملکرد با استفاده از عملیات ماتریسی به جای حلقههای تو در تو جهت بهبود عملکرد فرآیند
1- ساختار اصلی دستور for
ساختار اصلی این دستور به صورت زیر است:
% بلوک کد
for index = values
دستورات و محاسبات
end
– بلوک کد درون حلقه در هر تکرار اجرا میشود که شامل دستورات و محاسبات میباشد.
– index متغیری است که در هر تکرار مقدار جدیدی از values میگیرد.
– values میتواند یک بردار، ماتریس یا حتی یک محدوده از اعداد باشد.
مثال1: نمایش اعداد از 1 تا 8
clc; clear; close all;
for i = 1:8
disp(i)
end
خروجی برنامه:
1
2
…
6
7
8
توضیح: متغیرi از 1 تا 8 تغییر میکند و در هر تکرار مقدار آن نمایش داده میشود.
مثال 2: جمع کردن اعداد
clc; clear; close all;
sum = 0;
for i = 1:5
sum = sum + i;
end
disp(sum)
خروجی برنامه:
15
توضیح: متغیرsum به تدریج با اعداد از 1 تا 5 جمع میشود و نتیجه نهایی نمایش داده میشود.
2- استفاده از دستور for با چندین متغیر
میتوان از چندین متغیر در درون حلقه استفاده کرد، به شرطی که ساختار مناسب تکرار ایحاد شده باشد.
مثال 3: جستجو در ماتریس دو بعدی
clc; clear; close all;
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
[row, col] = size(A);
for i = 1:row
for j = 1:col
fprintf(‘A(%d, %d) = %d\n’, i, j, A(i, j))
end
end
خروجی برنامه:
A(1, 1) = 1
A(1, 2) = 2
A(1, 3) = 3
A(2, 1) = 4
A(2, 2) = 5
A(2, 3) = 6
A(3, 1) = 7
A(3, 2) = 8
A(3, 3) = 9
توضیح: در این مثال از دو حلقه تو در تو برای جستجوی عناصر ماتریسA و چاپ مقادیر آن استفاده شده است.
3- استفاده از حلقههای تو در تو: این کار برای کار با دادههای چند بعدی مفید است.
مثال 4: جستجوی ماتریس 3 بعدی
clc; clear; close all;
A = rand(3, 4, 2); % ماتریس 3 بعدی با مقادیر تصادفی
for k = 1:size(A, 3)
fprintf(‘Page %d\n’, k);
for i = 1:size(A, 1)
for j = 1:size(A, 2)
fprintf(‘A(%d, %d, %d) = %.2f\n’, i, j, k, A(i, j, k));
end
end
end
خروجی برنامه:
Page 2 A(1, 1, 2) = 0.86 A(1, 2, 2) = 0.73 A(1, 3, 2) = 0.99 A(1, 4, 2) = 0.11 A(2, 1, 2) = 0.56 A(2, 2, 2) = 0.90 A(2, 3, 2) = 0.63 A(2, 4, 2) = 0.31 A(3, 1, 2) = 0.63 A(3, 2, 2) = 0.73 A(3, 3, 2) = 0.93 A(3, 4, 2) = 0.96 | Page 1 A(1, 1, 1) = 0.26 A(1, 2, 1) = 0.10 A(1, 3, 1) = 0.86 A(1, 4, 1) = 0.10 A(2, 1, 1) = 0.20 A(2, 2, 1) = 0.54 A(2, 3, 1) = 0.35 A(2, 4, 1) = 0.20 A(3, 1, 1) = 0.65 A(3, 2, 1) = 0.99 A(3, 3, 1) = 0.35 A(3, 4, 1) = 0.60 |
توضیح: از سه حلقه تو در تو برای جستجو ماتریس 3 بعدی استفاده شده و مقادیر هر عنصر درون حلقهها چاپ میشود. باید توجه نمود که ممکن است که مقادیر برنامه شما با مقادیر فوق متفاوت باشد زیرا از تابع رندوم در مثال فوق استفاده شده است.
4- دستور توقف و ادامه تکرار ( استفاده از break و continue)
مثال 5: استفاده از دستور break
دستورbreak برای خروج از حلقه شامل دستور for و نادیده گرفتن باقیمانده تکرار استفاده میشود.
clc; clear; close all;
for i = 1:20
if i == 15
break;
end
disp(i)
end
خروجی برنامه:
1
2
…
13
14
توضیح: اعداد 1 تا 14 چاپ میشوند با رسیدن به عدد 15، دستورbreak باعث خروج از حلقه میشود.
مثال 6: استفاده از دستور continue
در درون حلقه شامل for، دستورcontinue برای نادیده گرفتن یک تکرار درون حلقه و ادامهی آن از مقدار باقیمانده استفاده میشود.
clc; clear; close all;
for i = 1:11
if mod(i, 2) == 0
continue;
end
disp(i)
end
خروجی برنامه:
1
3
5
7
9
11
توضیح: با استفاده از دستورcontinue تنها اعداد فرد چاپ میشوند و اعداد زوج نادیده گرفته میشوند.
5- تنظیم حلقههای for برای عملکرد بهینه
دستور for میتواند برای عملیاتهایی جهت بهینهسازی عملکرد تنظیم شود. در برخی برنامهها، میتوان با استفاده از ماتریسها به جای حلقههای تو در تو، عملکرد برنامه را بهبود و سرعت اجرای برنامه را افزایش دهد.مثال 7: بهینهسازی با ماتریسها
clc; clear; close all;
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
B = ones(3);
% با استفاده از حلقه
for i = 1:n
for j = 1:n
C(i, j) = A(i, j)^2+B(i,j);
end
end
C
خروجی برنامه:
C =
2 5 10
17 26 37
50 65 82
توضیح: می توان بجای برنامه پیچیده فوق، از عملیات ماتریسی بهینهتر با ماتریسهای زیر به جای حلقههای تو در تو استفاده کرد تا باعث بهبود قابل توجهی در عملکرد برنامه شود.
مثال8- برنامه بهینه سازی شده با عملیات ماتریسی
clc; clear; close all;
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
B = ones(3);
C = A.^2+B
خروجی برنامه:
C =
2 5 10
17 26 37
50 65 82
6- استفاده از توابع درون حلقه: میتوانید توابع را درون حلقهها فراخوانی کنید تا عملیاتهای پیچیدهتری انجام دهید.
مثال 9: فراخوانی تابع درون حلقه
clc; clear; close all;
for i = 1:6
disp(Square(i))
end
function result = Square(x)
result = x^2;
end
خروجی برنامه:
1
4
9
16
25
36
توضیح: تابع Square برای محاسبه مربع هر عدد از 1 تا 6 استفاده میشود و نتایج آن چاپ میشود.
7- بررسی عملکرد و بهینهسازی
برای بررسی عملکرد کدهای حاوی حلقههای for و بهینهسازی آنها، میتوانید از ابزارهای مختلفی مانندtic و toc در متلب استفاده کنید.
مثال 10: بررسی زمان اجرای کد
clc; clear; close all;
tic
for i = 1:10000
% Other Program and Function
end
toc
خروجی برنامه:
Elapsed time is 0.030562 seconds.
توضیح: از tic وtoc برای اندازهگیری زمان اجرای بلوک کد استفاده میشود.


