به آموزشگاه بیاموز خوش آمدید!

سبد خرید (0)

آرایه های سلولی و ساختارها

ماتریس های که تا حالا ایجاد کرده ایم، همه دارای نوع داده ی double یا uint8 بوده اند. هر ماتریسی که شما ایجاد کنید، همین نوع داده را خواهد داشت. زیرا شما نمی توانید نوع داده ها را در یک ماتریس با یکدیگر ترکیب کنید.

دو مفهوم دیگر نیز برای ذخیره ی داده ها وجود دارند:

1. آرایه ی سلولی: که مانند یک صفحه ی گسترده عمل می کند. 

2. ساختار: که مانند یک رکورد در یک دیتابیس عمل می کند. 

این دو مفهوم ذکر شده به شما کمک می کنند تا دیگر انواع داده ها را ذخیره کنید و یا آنها را با یکدیگر ترکیب کنید. به طور تئوری، شما می توانید از آنها برای ایجاد دیتابیس های کوچک بدون رجوع به یک اپلیکیشن دیگر، استفاده کنید. اگر شما یک کاربر معمولی هستید، ممکن است نیازی نداشته باشید تا از این ساختارها استفاده کنید. اما دانستن اینکه آنها چگونه کار می کنند ایده ی خوبی است. در بخش های زیر یک مقدمه را مشاهده خواهید کرد.


درک آرایه های سلولی

آرایه های سلولی مانند صفحه های گسترده هستند زیرا یک سلول در یک آرایه ی سلولی مانند یک سلول در یک صفحه ی گسترده( مانند Excel) می باشد. در حقیقت هنگامی که شما یک صفحه ی گسترده را در متلب Import می کنید، هر سلول صفحه ی گسترده به یک سلول از آرایه ی سلولی متلب تبدیل می شود. چون که صفحه های گسترده خیلی محبوب هستند، شما احتمالا به یک صفحه ی گسترده برخورد می کنید تا یک ساختار. 

برای ایجاد یک آرایه ی سلولی، لازم است از تابع ()cell استفاده کنید. بعنوان مثال برای ایجاد یک آرایه ی سلولی 2x2x2،

عبارت (an = cell(2, 2, 2 را در متلب وارد کنید و کلید Enter را فشار دهید. نتیجه ی زیر حاصل خواهد شد:

 

همان طور که مشاهده می کنید سلول ها خالی هستند. برای دستیابی به عناصر آرایه های سلولی، باید از آکولادها ({}) استفاده کنید. برای اینکه آرایه ی سلولی an قابل استفاده باشد، کدهای زیر را وارد کنید و پس از هر خط، کلید Enter را فشار دهید:

به دلیل اینکه در انتهای همه ی خط ها، به جز خط آخر، یک سمی کالن قرار دارد، هیچ خروجی را مشاهده نمی کنید. اما وقتی که خط آخر را تایپ می کنید و کلید Enter را فشار می دهید، خروجی زیر ظاهر خواهد شد:

همان طور که مشاهده می کنید، خروجی مانند دیگر ماتریس های چند بعدی است. و شما همانند ماتریس ها می توانید به عناصر آنها دسترسی داشته باشید، البته با این تفاوت که از آکولادها باید استفاده کنید. بعنوان مثال عبارت {an{1, :, 2 را در متلب تایپ کنید و کلید Enter را فشار دهید تا اولین سطر از لایه 2 را در خروجی مشاهده کنید:

مطلب برای مشخص کردن true و false از 0 و 1 استفاده می کند. برای اینکه این موضوع را برای خودتان امتحان کنید، عبارت true را در متلب تایپ کنید و کلید Enter را فشار دهید. خواهید دید که عدد 1 بعنوان خروجی برگردانده می شود. حالا عبارت false را تایپ کنید و کلید Enter را فشار دهید، خواهید دید که عدد 0 بعنوان خروجی برگردانده می شود. 

نکته: شما می توانید با استفاده از آیکن های مورد استفاده قرار گرفته در پنجره ی workspace، آرایه های سلولی و ماتریس ها را از یکدیگر تشخیص دهید. آیکن یک آرایه ی سلولی دارای یک جفت آکولاد است و به کلی متفاوت با آرایه ی ماتریس که است که به شکل جدول کوچک است. 


درک ساختارها

 ساختارها بیشتر شبیه به جدول های دیتابیس SQL هستند. هر ورودی از آن، شامل یک جفت از نام و مقدار می باشد. نام فیلدها به طور کلی رشته های توصیفی هستند اما مقادیر می توانند هر چیز مرتبط با نام فیلد باشند. برای اینکه مشاهده کنید که یک ساختار چگونه کار می کند، عبارت:

MyStruct =struct('FirstName', 'Amy', 'LastName', 'Jones', 'Age', 32, 'Married', false)

را در متلب تایپ کنید و کلید Enter را فشار دهید. نتیجه ی زیر ظاهر خواهد شد:

 توجه کنید که چطور نام فیلد ها با مقادیر مربوطه یک جفت را تشکیل داده اند. یک ساختار، درست مانند یک دیتابیس، برای نگهداری داده ها در حافظه طراحی شده است. در حال حاضر، ساختار MyStruct در داخل خود دارای یک رکورد می باشد. برای دستیابی به این رکورد، می توانید عبارت (MyStruct(1 را تایپ کنید و کلید Enter را فشار دهید. نتیجه ی زیر حاصل خواهد شد:

این امکان وجود دارد که شما نخواهید تمامی رکورد را برگردانید. پس برای دسترسی به یک فیلد خاص، ابتدا یک نقطه قرار دهید و سپس نام فیلد را وارد کنید. بعنوان مثال عبارت MyStruct(1).LastName را تایپ کنید و کلید Enter را فشار دهید تا به فیلد LastName دسترسی پیدا کنید. نتیجه به صورت زیر خواهد بود:

یک رکورد تنها، خیلی کاربردی نیست. ممکن است شما بخواید رکورد های زیادی را در یک ساختار وارد کنید. برای اضافه کردن یک رکورد دیگر به MyStruct، عبارت:

 MyStruct(2) =struct('FirstName', 'Harry', 'LastName', 'Smith', 'Age', 35, 'Married', true)

را تایپ کنید و کلید Enter را فشار دهید. نتیجه ی زیر حاصل خواهد شد:

 در خروجی بالا، تعداد رکورد ها نشان داده شده است. حالا برای بررسی کردن دومین رکورد، عبارت (MyStruct(2 را تایپ کنید و کلید Enter را فشار دهید. نتیجه به صورت زیر خواهد بود:

ورودی های ساختار بالا به داده های معمولی محدود نمی شوند. ساختارها می توانند شامل ماتریس ها و حتی ماتریس های چند بعدی باشند. علاوه بر آن، ساختارها و آرایه های سلولی می توانند شامل یکدیگر باشند. یک عنصر درون یک ساختار می تواند یک آرایه ی سلولی باشد و یک سلول در یک آرایه ی سلولی می تواند یک ساختار باشد. نکته این است که اینها راه های انعطاف پذیری برای ذخیره ی داده ها هستند هنگامی که شما به آنها نیاز دارید. اما شما نباید چیزها را هنگامی که به آنها نیاز ندارید، بیش از حد پیچیده کنید. 

دیدگاه‌ها  

0 # اhani 1396-03-01 20:08
سلام.میشه بگین این برنامه چجوری تعدادعناصرارایه رومیده
function my_numel(A)
n=0;
for i=1:numel(A)
if iscell(A{i})
n=n+my_numel(A{ i});
else
n=n+numel(A{i});
end
end
end
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1396-03-01 22:34
سلام. ابتدا به الگوریتم زیر که برای شما تهیه کرده ام با دقت نگاه کنید:

لینک برای دیدن تصویر بزرگ:
beyamooz.com/images/matlab/morphology/113.png

ابتدا آرگومان تابع گرفته می شود. سپس مقادیر اولیه به متغیرها داده می شوند. سپس بررسی میشود که آیا عنصر مورد نظر یک آرایه است یا نه. اگر آرایه بود که دوباره تابع اجرا می شود تا تعداد عناصرش را بدست بیاورد. اگر آرایه نبود، تعداد عناصر کلی را جمع کرده و به ما می دهد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # faezeh 1395-12-24 22:49
من میخوام از متلب در هوش مصنوعی و برای پیاده سازی و طراحی متن کاوی استفاده کنم
بنظرم مجبورم از sql استفاده کنم
ولی هرچی سرچ کردم چیز به درد بخوری پیدا نکردم
سایت شما کامل توضیح داده که از روش حساب کنم بتونم تا بعد عید یکم مسلط شدم پروژمو شروع کنم؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # احسان عباسی 1395-12-25 08:37
با سلام.
کتاب متلب به زبان ساده( برای احمق ها) تا 90% کامل هست و می تونید اون رو مطالعه کنید. همچنین کتاب برنامه نویسی در متلب هم در آدرس زیر قرار داره و دو فصلش آماده شده:
www.beyamooz.com/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%D8%AA%D9%84%D8%A8
برای مبحث پردازش تصویر هم مطالبی رو آماده کردیم که از منوی سمت چپ قابل دسترسی هست. در زمینه ی SQL هم در سایت بیاموز مفصل توضیح داده شده است. امیدوارم موفق باشید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # faezeh 1395-12-24 22:42
سلام
من اصلا با متلب کار نکردم نمیدونم از کجا و چجوری شروع کنم
لطفن راهنماییم کنید
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # احسان عباسی 1395-12-25 08:32
سلام. برای شروع کار با نرم افزار متلب، می تونید کتاب متلب به زبان ساده( برای احمق ها) رو از منوی سمت چپ از ابتدا مورد مطالعه قرار بدید. این کتاب تا حد زیادی نیاز شما رو به آموزش های مقدماتی متلب برطرف می کنه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن