آرایه سلولی در متلب
به نام خدا و سلام.
به جلسه پانزدهم از سری جلسات آموزش متلب خوش آمدید. آموزش نرم افزار متلب رایگان از وبسایت متلبپلاس ارائه میشود. در این جلسه به آرایه سلولی در متلب میپردازیم. آرایه سلولی برای کنارهم قرار دادن انواع مختلف داده (عدد، بردار، ماتریس، رشته و…) در متلب استفاده میشود. تعریف سلول، نحوه ایجاد آرایه سلولی، اندیس گذاری سلول و… از مباحث این جلسه هستند.
با متلب پلاس همراه باشید.
مقدمهای بر سلول در متلب
در این جلسه از آموزش برنامه نویسی متلب رایگان، با آرایه سلولی (Cell Array) در متلب آشنا میشویم. آرایه سلولی برای کنارهم قرار دادن انواع مختلف داده با ابعاد متفاوت استفاده میشود. این دو عامل (دادههای متنوع با ابعاد مختلف) میتواند بسیار مفید باشد. در واقع برخلاف آنچه در ماتریس و بردار داشتیم، در یک سلول میتوانیم عدد، بردار، ماتریس، رشته متنی و حتی یک سلول دیگر را با هر ابعادی که باشند کنار هم قرار دهیم. مثلا میتوانیم یک سلول ایجاد کنیم که درایه اول آن ماتریس 4×4 و درایه دومش یک عدد اسکالر باشد. و یا میتوان یک آرایه سلولی ایجاد کرد که ترکیب متن و عدد و ماتریس باشد. کاربرد مهم آرایه سلولی در متلب، این است که امکانات اکسل را به ما میدهد. مثلا برای ایجاد لیستی از اسامی دانشجویان که هر کدام دارای معدل، سن و شماره دانشجویی باشد، از سلول کمک میگیریم. پس از اینکه روش ایجاد سلول در متلب گفته شد، مثالهای مختلف حل میکنیم.
لطفا نرم افزار متلب را باز کنید و تمام مثالهایی که در ادامه میآیند را شما هم بنویسید!
ایجاد آرایههای سلولی در متلب
برای ایجاد آرایه سلولی در متلب از آکولاد { } استفاده میکنیم. کافیست محتویات موردنظر خود را درون این آکولادها قرار دهیم. مشابه با ماتریسها، برای رفتن به درایه بعدی از کاما , یا فاصله استفاده میکنیم. برای رفتن به سطر بعد هم از نقطه ویرگول ; یا Enter استفاده میشود. به مثال زیر دقت کنید.
a = {[1 2 3], 'matlabplus'; 98, ones(4)}
a =
[1x3 double] 'matlabplus'
[ 98] [4x4 double]
در آرایه سلولی a، یک بردار 3×1، یک رشته متنی (‘matlabplus’)، یک عدد اسکالر (98) و یک ماتریس واحد 4×4 داریم. حال یک آرایه سلولی جدید به نام b ایجاد میکنیم که سلول a نیز در آن قرار داشته باشد.
b = {a, 'hello'}
b =
{2x2 cell} 'hello'
پس آرایه سلولی در متلب قدرت زیادی به ما میدهد که توانایی کنار هم قرار دادن هر دادهای را داشته باشیم. برای مشاهده محتویات یک سلول به طور کامل در متلب، از دستور celldisp استفاده میشود. مثلا برای مشاهده محتویات سلول a داریم:
celldisp(a)
a{1,1} =
1 2 3
a{2,1} =
98
a{1,2} =
matlabplus
a{2,2} =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
برای دسترسی به محتویات یک آرایه سلولی به اندیس گذاری آرایه سلولی نیاز داریم.
اندیس دهی آرایههای سلولی در متلب
منظور از اندیس دهی آرایه سلولی در متلب، دسترسی به دادههای درون یک سلول است. این دسترسی میتواند صرفا مشاهده باشد و یا تغییر و حذف درایه. برای فراخوانی یک درایه از یک سلول، به آدرس یا شماره شاخص آن درایه در سلول نیاز داریم. درباره آدرس و شماره شاخص در جلسه اندیس گذاری آرایهها در متلب به طور کامل صحبت کردیم. درصورت نیاز بر روی لینک قبل کلیک کنید و مطالب را مشاهده کنید. آدرس به معنای مکان قرار گیری درایه میباشد. مثلا سطر اول و ستون دوم. اما شماره شاخص (Index) از 1 تا شماره تعداد درایهها میباشد. این شمارش از روی ستون اول شروع شده و پس از اتمام آن به ستون دوم و… میرود.
برای فراخوانی درایههای یک سلول باید آدرس یا شماره شاخص موردنظر را درون پرانتز ( ) یا آکولاد { } قرار داد. فراخوانی با استفاده از پرانتز، محتویات آن درایه را در قالب سلول میدهد. فراخوانی با استفاده از آکولاد، محتویات آن درایه را در قالب خود آن محتوا میدهد.
به کدهای زیر توجه کنید.
A = {[1 2 3], 'matlabplus'; 98, ones(4)};
A{1,1}
ans =
1 2 3
A = {[1 2 3], 'matlabplus'; 98, ones(4)};
A(1,1)
ans =
[1x3 double]
همانطور که مشاهده میکنید، اندیس دهی آرایه سلولی در متلب، مشابه ماتریسها است. تنها تفاوتی که وجود دارد، استفاده از پرانتز یا آکولاد است. اندیس دهی با پرانتز، محتوا را به صورت سلول و اندیس دهی با آکولاد، خودِ محتوا را به ما میدهد.
افزودن سلول به آرایه سلولی در متلب
برای افزودن سلول به آرایه سلولی کافیست آدرسی خارج از ابعاد آرایهی سلولی درنظر گرفته و محتوای موردنظر را به آن اختصاص دهیم. مثلا اگر c یک آرایه سلولی 3×1 باشد و بخواهیم آن را به 4×1 تبدیل کنیم. داریم:
c = {1, 2, 3};
c{1,4} = {'new'}
c =
[1] [2] [3] {1x1 cell}
حذف داده از آرایه سلولی در متلب
برای حذف یک یا چند درایه از آرایه سلولی کافیست با استفاده از اندیس دهی و اختصاص دادن تهی [ ] آنها را حذف کنیم. این فرآیند کاملا شبیه حذف درایه از آرایه عددی (بردار و ماتریس) است. برای درک بهتر 2 مثال ارائه میکنیم. در مثال اول یک درایه از آرایه سلولی و در مثال دوم بخشی از آن را حذف میکنیم.
حذف یک سلول از آرایه سلولی در متلب
برای حذف یک عضو از یک آرایه سلولی از آکولاد استفاده میکنیم. آدرس این عضو درون آکولاد قرار گرفته و آن را مساوی با تهی قرار میدهیم. مثلا آرایه سلولی a که دارای 4 درایه است را درنظر گرفته و درایه 2,2 آن را حذف میکنیم.
a = {[1 2 3], 'matlabplus'; 98, ones(4)}
a =
[1x3 double] 'matlabplus'
[ 98] [4x4 double]
a{2,2} = []
a =
[1x3 double] 'matlabplus'
[ 98] []
حذف بخشی از یک آرایه سلولی در متلب
برای حذف بخشی از یک آرایه سلولی از پرانتز استفاده میکنیم. آدرس این بخش درون پرانتز قرار گرفته و برابر با تهی قرار میدهیم. مثلا آرایه سلولی a که دارای 4 درایه است را درنظر گرفته و سطر دوم آن را حذف میکنیم.
a = {[1 2 3], 'matlabplus'; 98, ones(4)}
a =
[1x3 double] 'matlabplus'
[ 98] [4x4 double]
a(2,:) = []
a =
[1x3 double] 'matlabplus'
ایجاد جدول با آرایه سلولی در متلب
با توجه به اینکه آرایه سلولی دارای قابلیتهای اکسل است، شاید ساخت جدول با عناصر سلول مفید باشد. برای ساخت جدول با محتویات آرایه سلولی در متلب، از دستور cell2table استفاده میکنیم. اسم آرایه سلولی و نام ستونهای جدول را در این دستور وارد میکنیم. قبل از ایجاد جدول، یک مثال از آرایه سلولی در متلب میزنیم که کامل باشد. در این مثال 4 دانشجو داریم که مشخصات نام، نام خانوادگی، معدل و شماره دانشجویی آنها در یک آرایه سلولی وارد میشود. این آرایه سلولی مشابه با زیر است:
st = {'Ali', 'Alavi', 18.45, 98140; 'Saba', 'Seyedi', 19.2, 98141;...
'Mehdi', 'Hashemian', 18.76, 98142; 'Ziba', 'Mehri', 17.95, 98143}
st =
'Ali' 'Alavi' [18.4500] [98140]
'Saba' 'Seyedi' [19.2000] [98141]
'Mehdi' 'Hashemian' [18.7600] [98142]
'Ziba' 'Mehri' [17.9500] [98143]
حال این آرایه سلولی را با دستور cell2table به جدول تبدیل میکنیم. نام ستون اول را Name، ستون دوم LastName، ستون سوم GPA و ستون چهارم را St_Number درنظر میگیریم. این نامها در دستور cell2table تعریف میشوند.
cell2table(st, 'VariableNames',{'Name', 'LastName', 'GPA', 'St_Number'})
ans =
Name LastName GPA St_Number
_______ ___________ _____ _________
'Ali' 'Alavi' 18.45 98140
'Saba' 'Seyedi' 19.2 98141
'Mehdi' 'Hashemian' 18.76 98142
'Ziba' 'Mehri' 17.95 98143
همانطور که مشاهده میشود، جدول میتواند به درک بهتر دادههای ما کمک کند.
تمرینات این جلسه
در انتهای این جلسه 3 تمرین متلب مربوط به مباحث این جلسه ارائه شده است. لطفا این تمرینها را حل کرده و با پاسخ آن مقایسه کنید. پاسخ تمرینات متلب این جلسه در کانال تلگرام متلب پلاس منتشر میشود. از آیکونهای سمت راست صفحه میتوانید در این کانال عضو شوید.
تمرین اول) یک آرایه سلولی 4×2 (2 سطر و 4 ستون) با دادههای زیر ایجاد کنید.
- درایههای سطر اول به ترتیب از چپ به راست: Spring، 28، 3 و 6
- درایههای سطر دوم به ترتیب از چپ به راست: Summer، 39، 17 و 1
تمرین دوم) به آرایه سلولی تمرین قبل، سطر سوم و چهارم را با دادههای زیر اضافه کنید.
- درایههای سطر سوم به ترتیب از چپ به راست: Autumn، 21، -1 و 4
- درایههای سطر چهارم به ترتیب از چپ به راست: Winter، 10، -9 و 7
تمرین سوم) آرایه سلولی تمرین قبل را به جدول تبدیل کنید. نام ستونهای این جدول عبارتند از Season، Max_Temp، Min_Temp و Rainy_Days
جمعبندی
خب، جلسه پانزدهم از سری جلسات آموزش متلب به پایان رسید. این جلسه درباره آرایه سلولی در متلب صحبت کردیم. آرایه سلولی در متلب، به ما امکان کنارهم قرار دادن هر نوع دادهای با هر ابعادی را میدهد. نحوه ایجاد یک آرایه سلولی، فراخوانی بخشی از آرایه سلولی، حذف یا اضافه کردن داده به آرایه سلولی و… از مباحث این جلسه بود. سعی ما انتقال مفاهیم به زبانی ساده و ارائه مثالهای متنوع بود. در انتها چند تمرین برای یادگیری بیشتر به شما واگذار کردیم که پاسخ آنها در کانال تلگرامی متلب پلاس وجود دارد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
توصیه میشود که حتما تمرینات این جلسه را انجام بدید و اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
4 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام وقتتون بخیر
کاربرد ‘VariableNames’ در ایجاد جدول رو متوجه نمیشم… ممکن بجای این string ، از string دیگه ای هم استفاده کرد؟
سلام و عرض ادب
خیر باید دقیقا عبارت VariableNames رو در دستور cell2table بکار ببرید. این عبارت مربوط به سینکس متلب هست. بنابراین نمیتونیم تغییرش بدیم.
موفق باشید!
چیزی که جالبه اینه که میشه به جای عبارت VariableNames از هر یک از حالت های کوتاه شده ش استفاده کرد. مثلا V, Var, Variable, VariableName و یا می تونیم V و N رو با حرف کوچک بنویسیم.
سلام
کدنویسی با متلب :نمودار بهینه سازی پارامترهای گلخانه ریزشبکه برحسب تابعی از زمان در متلب
ممنون