آرایه سلولی در متلب چیست؟
متلب به عنوان یکی از نرمافزارهای محبوب برنامهنویسی، امکانات فراوانی برای محاسبات فنی و برنامهنویسی ارائه میدهد. یکی از ویژگیهای مهم این نرمافزار، قابلیت استفاده از آرایهها است. آرایهها برای ذخیره دادهها در برنامهنویسی بسیار مهم هستند و در متلب نیز استفاده از آنها بسیار رایج است. آرایه سلولی یکی از انواع داده در متلب است که به کاربر این امکان را میدهد تا دادههای گوناگون را در خانههای ایندکس شده نگهداری کند. این نوع آرایه میتواند شامل فهرستها، متن، اعداد یا آرایههای عددی با اندازههای مختلف باشد. از طریق آرایه سلولی، کاربران میتوانند به راحتی با دادههای مختلف در متلب کار کنند و از امکانات برنامه بهرهمند شوند.
انواع دادههای موجود در متلب
نرمافزار متلب، یک محیط برنامهنویسی قدرتمند است که انواع دادههای گوناگونی را پشتیبانی میکند. از جمله این انواع میتوان به انواع عددی، آرایههای کاراکتری و رشتهای، تاریخ و زمان، جداول زمانی، ساختارها، مدیریت توابع، دیکشنریها، سریهای زمانی، شناسایی نوع داده، تبدیل نوع داده و آرایههای سلولی اشاره کرد. به این ترتیب، متلب به عنوان یک ابزار کامل برای پردازش و تحلیل داده شناخته میشود.
مفهوم آرایههای سلولی در متلب
آرایههای سلولی، یکی از ویژگیهای جذاب نسخه ۵٫۰ متلب هستند که به ما این امکان را میدهند تا آرایههای چندبعدی با اندازه و انواع متنوعی بسازیم. این آرایهها، در قالب یک مستطیل قرار میگیرند و هر عنصر آنها به عنوان یک سلول در نظر گرفته میشود. از آنجایی که هر سلول میتواند حاوی هر نوع دادهای از انواع متلب باشد، امکانات بیشتری برای ما فراهم شده است.
از جمله کاربردهای این آرایهها، میتوان به ذخیره رشتههایی با طولهای متفاوت اشاره کرد. به عنوان مثال، اگر نیاز داشته باشیم که یک لیست از نامهای دانشآموزان را ذخیره کنیم که طول نامها متفاوت باشد، میتوانیم از یک آرایه سلولی استفاده کنیم.
این آرایهها برای ذخیره آرایههای عددی با اندازههای مختلف نیز مناسب هستند. به عنوان مثال، میتوان از آرایه سلولی برای ذخیره و مدیریت «مربعهای جادویی» استفاده کرد که در آن اعداد در هر سطر، ستون و قطر اصلی با هم برابر باشند. در نتیجه، آرایههای سلولی ابزاری بسیار کارآمد و چندمنظوره در برنامهنویسی هستند.
آرایههای سلولی در متلب، میتوانند شامل فهرستهای متنی، ترکیبی از اعداد و متن یا آرایههای عددی با ابعاد مختلف باشند. برای ارجاع به یک گروه از سلولها، میتوانیم اندیس آنها را بین «پرانتز» استفاده کنیم. همچنین برای دسترسی به محتویات سلولها، اندیس آنها را درون «آکولاد» نوشته و استفاده میکنیم.
مطلب پیشنهادی: آرایه در متلب
ایجاد آرایه سلولی در متلب چگونه است؟
برای نگهداری اطلاعات درون یک “آرایه سلولی”، باید ابتدا با استفاده از “عملگر ساخت آرایه سلولی” یعنی ، آرایه سلولی را ایجاد کنیم. اگر لازم باشد، میتوانیم یک آرایه سلولی خالی را با استفاده از {یجاد کنیم.
تابع cell مربوط به آرایه سلولی در متلب
تابع cell در متلب یک ابزار قدرتمند است که به کاربر این امکان را میدهد تا آرایه سلولی را با اندازه دلخواه ایجاد کند و دادهها را درون آن ذخیره کند. با استفاده از تابع cell، میتوانیم ساختارهای دادهای مختلفی را شبیهسازی کنیم و آنها را به صورت مرتب و منظم در آرایه سلولی ذخیره کنیم.
cell قادر است ساختارهای دادهای خاص را از زبانهای جاوا، داتنت و پایتون به عنوان آرایههای سلولی متلب تبدیل کند. در ادامه این متن، ما برخی از نمونهها و روشهای استفاده از تابع cell را بررسی خواهیم کرد.
برای خلق یک آرایه سلولی خالی، میتوان از این دستور استفاده کرد:
C = cell(n)
تابع n، یک عدد صحیح را به عنوان ورودی میگیرد و اندازه یک آرایه مربعی (تعداد سلولها در هر ردیف و ستون) را مشخص میکند. این تابع یک آرایه خالی با ابعاد n * n را برمیگرداند. به عنوان مثال، تابع زیر یک آرایه مربعی خالی با ابعاد ۳ * ۳ ایجاد میکند:
(3)C = cell
با توجه به مقدار n، باید به نکات زیر توجه کنیم.
- اگر n برابر با صفر باشد، C آرایه سلولی خالی را بر میگرداند.
- اگر n منفی باشد، به طور پیشفرض، صفر در نظر گرفته میشود.
- این دستور از انواع دادههای uint32، uint16، uint8، int64، int32، int16، int8، single، double و uint64 پشتیبانی میکند.
نتیجه اجرای این دستور به شرح زیر است:
C=3×3 cell array
{0x0 double} {0x0 double} {0x0 double}
{0x0 double} {0x0 double} {0x0 double}
{0x0 double} {0x0 double} {0x0 double}
مطلب پیشنهادی: الگوریتم بهینهسازی فاخته چیست؟
ایجاد آرایه سلولی با ابعاد دلخواه در متلب
برای ساختن یک آرایه سلولی خالی با ابعاد sz1 * … * szN، کافی است از دستور زیر استفاده کنیم که اندازه هر بُعد را نشان میدهد:
(2,3)C = cell
با اجرای این دستور، یک آرایه سلولی با ابعاد ۲ در ۳ ایجاد میشود. باید توجه داشت که ابعاد این آرایه با استفاده از اعداد صحیح مشخص میشود.
- اگر اندازه هر یک از ابعاد صفر باشد، آرایه سلولی خالی برگردانده میشود.
- اگر اندازه هر یک از ابعاد منفی باشد، به طور پیشفرض صفر در نظر گرفته میشود.
- ابعادی که اندازهای برابر با یک دارند، نادیده گرفته میشوند. بهعنوان مثال، دستور cell(۳,۱,۱,۱) یک آرایه سلولی خالی با ابعاد ۳ در ۱ ایجاد میکند.
- این دستور از دادههای uint32، uint16، uint8، int64، int32، int16، int8، single، double و uint64 پشتیبانی میکند.
به عنوان نمونه، اگر بخواهیم یک آرایه سهبعدی با ابعاد ۳ * ۴ * ۲ بسازیم، از دستور زیر استفاده میکنیم:
; (3,4,2) C = cell
size(C)
پس از اجرای دستور، نتیجه آن را در ادامه مشاهده خواهیم کرد:
ans = 1×3
۲ ۴ ۳
ایجاد آرایه سلولی با ابعاد برداری در متلب
برای ساختن یک آرایه سلولی خالی با ابعاد بردار موردنظر، باید تابع cell را به شیوهای که در ادامه ذکر شده است، استفاده کنیم.
C = cell(sz)
اندازه C از طریق بردار اندازه sz مشخص میشود. بهعنوان مثال، دستور cell([۲ 3]) آرایه سلولی با ابعاد ۲ * ۳ را برمیگرداند. بردار اندازه یا sz، یک بردار سطری از اعداد صحیح است که هر عنصر آن اندازه بُعد متناظر با جایگاهش را نشان میدهد.
- اگر اندازه هر یک از ابعاد برابر با صفر باشد، آنگاه nC آرایه سلولی خالی را برمیگرداند.
- اگر اندازه هر کدام از ابعاد منفی باشد، به طور پیشفرض صفر در نظر گرفته میشود.
- از بُعد دوم به بعد، ابعادی که اندازهای برابر با یک داشته باشند، نادیده گرفته میشوند. بهعنوان مثال، دستور cell(۳,۱,۱,۱) آرایه سلولی خالی با ابعاد ۳ * ۱ را تولید میکند.
- این دستورات از نوع دادههای uint32، uint16، uint8، int64، int32، int16، int8، single، double و uint64 پشتیبانی میکنند.
به عنوان مثال، اگر بردار اندازه برابر با sz = [۲ 3 4] باشد، آنگاه آرایه سلولی خالی با ابعاد ۲ * ۳ * ۴ ایجاد میشود. توجه داشته باشید که خروجی این دستورات بهصورت آرایهای سلولی برگردانده میشود.
نحوه تبدیل ساختار دادههای زبانهای دیگر به آرایه سلولی متلب
برای تبدیل آرایههای جاوا، داتنت یا توالیهای موجود در زبان پایتون به آرایه سلولی متلب، از تابع cell به شیوهای که در ادامه ذکر شده، استفاده مینماییم:
D = cell(obj)
obj به عنوان ورودی این دستور میتواند یکی از انواع زیر باشد:
- شی یا آرایه در جاوا
- آرایه داتنت از نوع String یا System.Object
- انواع توالی در زبان پایتون
توجه داشته باشید که خروجی این دستور نیز در نهایت یک آرایه سلولی خواهد بود.
مطلب پیشنهادی: الگوریتم گله اسب چیست؟
انواع توابع مرتبط با cell
در این بخش، تعدادی از توابع مرتبط با آرایه سلولی را بررسی خواهیم کرد. عناوین این توابع را در یک جدول در ادامه ذکر کردهایم.
تابع | عملکرد |
cell2mat | برای تبدیل آرایه سلولی به آرایهای معمولی به کار میرود. |
cell2struct | آرایه سلولی را به آرایه ساختاری تبدیل میکند. |
cell2table | برای تبدیل آرایه سلولی به جدول، مورد استفاده قرار میگیرد. |
mat2cell | آرایه معمولی را به آرایه سلولی (که سلولهای آن حاوی زیر آرایه هستند) تبدیل میکند. |
struct2cell | ساختاری را میگیرد و سپس آن را به آرایه سلولی تبدیل میکند. |
table2cell | جدولی را دریافت و آن را به آرایه سلولی تبدیل میکند. |
iscell | تعیین میکند که آیا ورودی، آرایهای سلولی است یا خیر. |
num2cell | آرایه معمولی را به آرایه سلولی تبدیل میکند. |
عملکرد تابع cell2mat
برای تبدیل یک آرایه سلولی به یک آرایه عادی، از تابع cell2mat به این صورت استفاده میشود.
A = cell2mat(C)
آرگومان C یک آرایه سلولی است که ما قصد داریم آن را به یک آرایه معمولی تبدیل کنیم. باید توجه داشت که تمام عناصر موجود در آرایه سلولی باید از یک نوع داده باشند و آرایه نهایی یعنی A نیز از همین نوع داده خواهد بود. یک نکته دیگر که باید توجه داشت، این است که محتویات آرایه سلولی C باید توانایی ادغام در یک فضای چندبعدی N را داشته باشند. در غیر این صورت، نتایج مطلوب به دست نخواهد آمد.
عملکرد تابع cell2struct
در اینجا نحوه استفاده از تابع cell2struct بیان شده است:
structArray = cell2struct(cellArray, fields, dim)
این قطعه کد با استفاده از اطلاعات موجود در آرایه سلولی cellArray، یک ساختار آرایه به نام structArray ایجاد میکند. پارامتر fields نام فیلدها را برای ساختار آرایه مشخص میکند. این پارامتر میتواند یک آرایه کاراکتری، یک آرایه سلولی از بردارهای کاراکتری یا یک آرایه رشتهای باشد. همچنین پارامتر dim نیز مشخص میکند که کدام محور از آرایه سلولی برای ساخت ساختار آرایه استفاده شود. برای تعیین dim باید از عددی اعشاری استفاده شود.
برای ایجاد یک آرایه ساختاری با فیلدهای مشتق شده از N سطر آرایه سلولی، ابتدا N نام فیلد را در fields و عدد ۱ را در dim مشخص میکنیم. همچنین، برای ساخت یک آرایه ساختاری با فیلدهای گرفته شده از M ستون آرایه سلولی، M نام فیلد را در fields و عدد ۲ را در dim تعیین میکنیم. خروجی structArray شامل N فیلد و تعداد فیلدها در ساختار باید با تعداد سلولها در راستای بُعد dim برابر باشد که قصد تبدیل آن را داریم.
عملکرد تابع cell2table
T = cell2table(C)
T = cell2table(C,Name,Value)
تابع cell2table به شما این امکان را میدهد که محتویات یک آرایه سلولی را به یک جدول تبدیل کنید. این تابع اطلاعات را به صورت ستونی در جدول قرار میدهد و به هر ستون نامی از آرایه ورودی اختصاص میدهد. اگر آرایه ورودی نامی نداشته باشد، متغیرها به ترتیب به عنوان Var1، Var2 و… نامگذاری میشوند. همچنین، با استفاده از آرگومانهای Name و Value میتوانید نامهای سطر یا متغیرها را در جدول مشخص کنید.
عملکرد تابع mat2cell
میتوان از این تابع به شکل زیر استفاده کرد:
C = mat2cell(A,dim1Dist,…,dimNDist)
C = mat2cell(A,rowDist)
تابع mat2cell یک آرایه را به زیرآرایههای کوچکتر تقسیم میکند و یک آرایه سلولی بر میگرداند. این تقسیمبندی بر اساس بردارهای dim1Dist،…، dimNDist انجام میشود و زیر آرایهها میتوانند اندازههای مختلفی داشته باشند. آرایه موردنظر میتواند حاوی هر نوع دادهای باشد.
عملکرد تابع struct2cell
جهت تبدیل یک ساختار به یک آرایه سلولی، میتوان از تابع struct2cell به شیوهای که در زیر آمده است، استفاده نمود:
C = struct2cell(S)
در آرایه سلولی C، اطلاعاتی از فیلدهای S کپی شدهاند. برای دریافت نام فیلدها در آرایه سلولی، باید از تابع fieldnames استفاده کنیم؛ زیرا تابع struct2cell نام فیلدها را برنمیگرداند.
عملکرد تابع table2cell
برای تبدیل یک جدول یا جدول زمانی به یک آرایه سلولی C، از این تابع استفاده میشود. روش استفاده از آن در ادامه توضیح داده شده است.
C = table2cell(T)
هر متغیری که در جدول T وجود داشته باشد، به یک ستون از سلولها در آرایه سلولی C تبدیل میشود. در نظر داشته باشید که C ویژگیهای جدول در T.Properties را شامل نمیشود.
- در صورتی که T یک جدول با نامهای سطر باشد، C نامهای مربوط به سطرها را در بر نمیگیرد.
- در صورتی که T یک جدول زمانی باشد، C زمانهای سطر را شامل نمیشود.
عملکرد تابع iscell
برای تشخیص اینکه ورودی ما یک آرایه سلولی است یا خیر، از تابع iscell به صورت زیر استفاده میکنیم.
tf = iscell(A)
باورنکردنی است که آرایه ورودی، به هر شکلی که فکر کنید، میتواند باشد. اگر آرایه از نوع سلولی باشد، در صورتی که مقدار ۱ یا true باشد، tf را برمیگرداند؛ در غیر این صورت، مقدار ۰ یا false خواهد بود.
عملکرد تابع num2cell
با تابع num2cell، میتوانید آرایه A را به یک آرایه سلولی C تبدیل کنید. این عمل با قرار دادن هر عنصر از آرایه A درون یک سلول جداگانه از آرایه سلولی C انجام میشود. این تابع قادر است هر نوع آرایهای (حتی غیرعددی) را تبدیل کند. دستور num2cell به شکل زیر است:
C = num2cell(A)
C = num2cell(A,dim)
فرمت num2cell(A,dim) محتوای آرایه A را به صورت سلولهای جداگانه در C قرار میدهد. dim مشخص میکند که کدام بُعد از A در هر سلول نگهداری شود و میتواند یک مقدار عددی یا برداری از ابعاد باشد. به عنوان مثال، اگر A شامل ۲ سطر و ۳ ستون باشد، میتوانیم موارد زیر را در نظر بگیریم:
- num2cell(A,1) آرایه سلولی C با ابعاد ۱ * ۳ ایجاد میکند که هر سلول حاوی یک ستون ۲ * 1 از A است.
- num2cell(A,2) آرایه سلولی C با ابعاد ۲ * ۱ ایجاد میکند که هر سلول حاوی یک سطر ۱ * ۳ از A است.
- num2cell(A, [۱ 2]) آرایه سلولی C با ابعاد ۱ * ۱ ایجاد میکند که این سلول حاوی کل آرایه A است.
مطلب پیشنهادی: داده باز چیست؟
جمعبندی
آرایه سلولی در متلب یک ابزار بسیار کارآمد برای نگهداری انواع مختلف دادهها است. از جمله دادههای متغیر، رشته، عدد صحیح یا اعشاری، ماتریس، تصویر و حتی توابع. با استفاده از آرایه سلولی، میتوان دادههای غیر جدولی را در یک ساختار آرایهای ذخیره کرد و با استفاده از شاخص (Index) به آنها دسترسی پیدا کرد. این ابزار به برنامهنویسان امکان میدهد تا دادهها را به صورت مرتب و منظم ذخیره کنند و به راحتی با آنها کار کنند. در مجموع، آرایه سلولی یک ابزار بسیار قدرتمند و کارآمد برای کار با دادههای مختلف در محیط متلب محسوب میشود.
دیدگاه شما