در بخش سوم آموزش نرمافزار متلب درباره ایندکس کردن آرایه صحبت میکنیم. سپس درباره متغیرهای فضای کار نیز بحث میشود.
ایندکس کردن آرایه
هر متغیری در MATLAB یک آرایه است که میتواند اعداد زیادی دربر داشته باشد. هنگامیکه میخواهید به اعضای انتخابشده یک آرایه دسترسی داشته باشید، از ایندکس کردن استفاده کنید.
بهعنوانمثال، مربع جادویی چهار در چهار A را در نظر بگیرید:
(A = magic(4
A=4×4
13 | 3 | 2 | 16 |
8 | 10 | 11 | 5 |
12 | 6 | 7 | 9 |
1 | 15 | 14 | 1 |
دو راه برای اشاره به یک عضو خاص در آرایه وجود دارد. رایجترین روش این است که زیرنویس ردیف و ستون را مشخص کنید، مانند
(A(4,2
ans = 14
به استفاده از یک زیرنویس تنها برای ارجاع به یک عضو خاص در یک آرایه، ایندکس کردن خطی میگویند.
خطای ایندکس کردن آرایه
اگر سعی کنید به اعضای خارج از آرایه در سمت راست یک جمله تخصیص، ارجاع دهید، MATLAB خطا میدهد.
(test = A(4,5
Index exceeds matrix dimensions.
بااینحال، در سمت چپ جمله تخصیص، شما میتوانید اعضای خارج از ابعاد فعلی را مشخص کنید. اندازه آرایه برای جا دادن تازهواردان افزایش مییابد.
A(4,5) = 17
A = 4×5
0 | 13 | 3 | 2 | 16 |
0 | 8 | 10 | 11 | 5 |
0 | 12 | 6 | 7 | 9 |
17 | 1 | 15 | 14 | 4 |
برای مراجعه به اعضای چندگانه یک آرایه، از عملگر کلون استفاده کنید. با این کار میتوانید طیفی از فرم start:end را مشخص کنید. برای مثال، اعضا در سه ردیف اول و ستون دوم A را فهرست کنید:
(A(1:3,2
ans = 3×1
2 |
11 |
7 |
کلون بهتنهایی، بدون مقدار شروع یا پایان، همه اعضا را در آن بُعد مشخص میکند. برای مثال، تمام ستونهای ردیف سوم A را انتخاب کنید:
(:,A(3
ans = 1×5
0 | 12 | 6 | 7 | 9 |
عملگر کلون این امکان را میدهد تا یک بردار از مقادیر که فاصله مساوی از یکدیگر دارند را با استفاده از شکل عمومیتر start:step:end ایجاد کنید.
B = 0:10:100
B = 1×11
100 | 90 | 80 | 70 | 60 | 50 | 40 | 30 | 20 | 10 | 0 |
اگر مرحله میانی را حذف کنید، بهصورت start:end ، متلب از مقدار مرحله پیشفرض 1 استفاده میکند.
متغیرهای فضای کار
فضای کاری حاوی متغیرهایی است که شما در متلب ایجاد میکنید یا آن را از فایل داده یا سایر برنامهها وارد نرمافزار میکنید. بهعنوانمثال، این جملات متغیرهای A و B را در فضای کاری ایجاد میکند.
;(A = magic(4
;(B = rand(3,5,2
شما میتوانید محتویات فضای کاری را با استفاده از whos مشاهده کنید.
whos
Name Size Bytes Class Attributes
128 double | 4× 4 |
A |
240 double | 352 | B |
متغیرها نیز در قسمت Workspace روی دسکتاپ ظاهر میشوند.
ذخیره سازی
متغیرهای فضای کار پس از خروج از MATLAB باقی نمیماند. دادههای خود را برای استفادههای بعدی با دستور save ذخیره کنید
save myfile.mat
ذخیرهسازی، محیط کار را در پوشه کاری فعلی در یک فایل فشرده با پسوند .mat حفظ میکند و MAT-file نامیده میشود.
برای پاک کردن تمام متغیرها از فضای کاری، از دستور clear
استفاده کنید.
با استفاده از دستور load،دادهها را از فایل MAT به فضای کاری بازگردانید.
load myfile.mat
پرسش و پاسخ درباره آموزش نرمافزار متلب: ایندکس کردن آرایه – قسمت سوم
1. ایندکس کردن آرایه در متلب چیست؟
ایندکس کردن آرایه در متلب به معنای دسترسی به مقادیر خاص در یک آرایه یا ماتریس با استفاده از اندیسهای ردیف و ستون است. در متلب، هر آرایه یا ماتریس دارای ایندکسهایی است که میتوانید از آنها برای استخراج یا تغییر مقادیر استفاده کنید.
2. چگونه میتوان به یک عنصر خاص از یک آرایه دسترسی پیدا کرد؟
برای دسترسی به یک عنصر خاص در آرایه، میتوانید از اندیسهای عددی استفاده کنید. برای مثال:
A = [1, 2, 3, 4, 5];
element = A(3); % دسترسی به عنصر سوم
این دستور، مقدار ۳ را از آرایه A
برمیگرداند.
3. چگونه میتوان به بخشهایی از آرایه دسترسی پیدا کرد؟
برای دسترسی به یک بخش خاص از آرایه، میتوان از بازهها (range) یا آرایههای ایندکس استفاده کرد:
- برای انتخاب یک ردیف یا ستون خاص:
row = A(2,:); % تمام ستونهای ردیف دوم column = A(:,3); % تمام ردیفهای ستون سوم
- برای انتخاب یک زیرمجموعه از آرایه:
subArray = A(2:4); % انتخاب از ردیف ۲ تا ۴
4. آیا میتوان از چندین ایندکس برای انتخاب از یک آرایه استفاده کرد؟
بله، شما میتوانید از چندین ایندکس برای انتخاب مقادیر از آرایههای چندبعدی استفاده کنید:
B = [1, 2, 3; 4, 5, 6; 7, 8, 9];
value = B(2, 3); % انتخاب عنصر در ردیف دوم، ستون سوم
5. چگونه میتوان از آرایههای منطقی برای ایندکس کردن استفاده کرد؟
در متلب، میتوان از آرایههای منطقی برای ایندکس کردن استفاده کرد تا مقادیر خاصی را بر اساس یک شرط انتخاب کنید:
A = [1, 2, 3, 4, 5];
logicalIndex = A > 3; % ایجاد یک آرایه منطقی بر اساس شرط
selectedValues = A(logicalIndex); % انتخاب مقادیر بزرگتر از ۳
6. آیا میتوان ایندکسهای منفی را برای انتخاب مقادیر از آرایه استفاده کرد؟
در متلب، ایندکسهای منفی برای حذف عناصر از انتهای آرایه استفاده میشوند. برای مثال:
A = [1, 2, 3, 4, 5];
B = A(2:end); % انتخاب تمام مقادیر از دومین عنصر تا انتها
در اینجا end
به معنای آخرین عنصر آرایه است.
7. چگونه میتوان چندین ایندکس را به صورت همزمان استفاده کرد؟
برای استفاده از چندین ایندکس به صورت همزمان، میتوانید از کاما برای جدا کردن ایندکسهای ردیف و ستون استفاده کنید:
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
selectedElements = A([1,3], [2,3]); % انتخاب مقادیر از ردیفهای ۱ و ۳ و ستونهای ۲ و ۳
8. چگونه میتوان ایندکسگذاری آرایهها را در متلب به صورت ماتریسی انجام داد؟
در متلب، ایندکسگذاری ماتریسی به شما امکان میدهد از ایندکسهای آرایههای دوبعدی به طور همزمان استفاده کنید. برای این کار میتوانید از ترکیب ردیفها و ستونها استفاده کنید:
rows = [1, 3];
cols = [2, 3];
subArray = A(rows, cols); % انتخاب مقادیر از ردیفهای ۱ و ۳ و ستونهای ۲ و ۳
9. آیا میتوان از تابع find
برای ایندکس کردن در متلب استفاده کرد؟
بله، تابع find
در متلب برای پیدا کردن اندیسهای یک آرایه بر اساس یک شرط خاص استفاده میشود:
A = [1, 2, 3, 4, 5];
indices = find(A > 3); % پیدا کردن ایندکسهای مقادیر بزرگتر از ۳
این دستور ایندکسهای مقادیری که بزرگتر از ۳ هستند را برمیگرداند.
10. چگونه میتوان از ایندکسها برای تغییر مقادیر یک آرایه استفاده کرد؟
برای تغییر مقادیر آرایهها، میتوانید به ایندکسها دسترسی پیدا کرده و مقادیر جدید را اختصاص دهید:
A = [1, 2, 3, 4, 5];
A(2) = 10; % تغییر مقدار دومین عنصر به ۱۰
11. چگونه میتوان ایندکسگذاری پیشرفته را در متلب انجام داد؟
در متلب، شما میتوانید از تکنیکهای پیشرفتهای مانند استفاده از ایندکسهای رشتهای یا استفاده از ایندکسهای چندبعدی برای آرایهها استفاده کنید. به عنوان مثال:
A = {1, 2, 3; 'hello', 'world', 4; 5, 6, 7};
value = A{2,1}; % دسترسی به عنصر رشتهای در ردیف ۲ و ستون ۱
12. آیا میتوان ایندکسهای غیرمستقیم را در متلب استفاده کرد؟
بله، شما میتوانید ایندکسهای غیرمستقیم (ایندکسهای متغیر) در متلب استفاده کنید. برای مثال:
A = [1, 2, 3, 4, 5];
index = 3;
value = A(index); % دسترسی به عنصر سوم
13. چگونه میتوان از ایندکسهای متغیر در آرایهها استفاده کرد؟
برای استفاده از ایندکسهای متغیر در آرایهها، میتوانید ایندکسها را بهصورت متغیر ذخیره کرده و از آنها استفاده کنید:
A = [10, 20, 30, 40, 50];
i = 4;
value = A(i); % دسترسی به عنصر چهارم
14. آیا میتوان ایندکسهای آرایههای چندبعدی را به صورت جداگانه مشخص کرد؟
بله، در متلب شما میتوانید ایندکسهای آرایههای چندبعدی را به صورت جداگانه برای هر بعد مشخص کنید:
A = rand(3,3,3);
value = A(2, 3, 1); % انتخاب عنصر در ردیف ۲، ستون ۳ و لایه ۱
15. چگونه میتوان ایندکسگذاری در آرایهها را به صورت پویا انجام داد؟
برای ایندکسگذاری پویا در متلب، شما میتوانید از حلقهها یا دستورات شرطی برای تعیین ایندکسها استفاده کنید:
A = [1, 2, 3, 4, 5];
for i = 1:length(A)
if A(i) > 3
disp(A(i)); % نمایش مقادیر بزرگتر از ۳
end
end
این روش به شما امکان میدهد مقادیر را به صورت پویا بر اساس شرطها ایندکس کنید.