آموزش برنامه نویسی متلب
موضوع:آرایه سلول ها در متلب
جلسه: دهم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!
در این جلسه میخواهیم با دو مورد دیگر از انواع داده ها در متلب یعنی آرایه سلول-ها،cells، و ساختارها،structures، آشناشویم. ابتدا با آرایه سلول ها آغاز میکنیم.
آرایه سلول ها همان طور که از نام آن برمی آید یک آرایه متلب از داده هایی به نام سلول است. یک سلول خود حاوی اطلاعات مختلفی ازجمله متغیرها، آرایه ها و حتی سلول-های دیگر باشد. برای مثال یک آرایه سلول میتواند شامل یک ماتریس 3در3، یک ماتریس رشته، یک بردار و یک آرایه سلول به شکل زیر باشد:
cell(1,2)
| cell(1,1)
| ||||
cell(2,2)
| cell(2,1) [1 2 3 4 5 6 7 8] |
دیاگرام فوق برای درک بهتر عملکرد آرایه سلولی و همچنین چگونگی اندیسهای یک آرایه سلول کمک میکند. این داده برای ذخیره دادههای یک موجود با انواع مختلف داده مثلا مشخصات یک دانشجو مناسب است. آرایه سلول ها مانند ماتریس ها با هر اندازه مستطیلی دلخواه قابل تعریف میباشند. البته میتوان ماتریس یا آرایه سلول ها را با ابعاد بیشتر نیز مثلا آرایههای 3 بعدی تعریف نمود.
جهت تعریف یک آرایه سلول به یکی از دو طریق زیر میتوان اقدام کرد:
• با استفاده از عملگر تخصیص (=)
• پیش اختصاص دهی با تابع cell و سپس تخصیص داده ها
-روش اول:
آرایه سلولی با نام A را درنظر بگیرید. میتوان با اختصاص دادههای دلخواه به تک تک عناصر آرایه، که به طور مناسب اندیس گذاری شده اند آرایه سلول را ایجاد نمود:
>>A(1,1) = {[1 2 3;4 5 6;7 8 9]}; >>A(1,2) = {['Ali ';'Sajedi';'987654']}; >>A(2,1) = {1:8}; >>A(2,2) = { {} }; |
از {} برای ایجاد یک سلول به کار میرود. در هر یک از سلولهای آرایه یک نوع داده ذخیره-شده است. هنگامی که خط اول برنامه را وارد کنید، متلب به طور خودکار یک آرایه سلول 1در1 ایجاد کرده و داده ها را به آن اختصاص میدهد. سپس در خط دوم با اختصاص داده ها به سلول بعدی، آرایه A به یک آرایه 1در2 گسترش مییابد. سپس با تکرار این عمل در خط سوم متلب به طور خودکار یک آرایه 2در2 را ایجاد میکند و مقدار سلول آخر یعنی چهارم را برابر با یک سلول تهی "{}" قرار میدهد. بنابراین اگر از آخر به اول دستورات فوق را وارد کنید ابتدا متلب یک آرایه 2در2 با سلولهای تهی ایجاد نموده و سپس مقدار سلول چهارم را اختصاص میدهد. پس گسترش یک آرایه حتی بعد از تعریف آن، ممکن خواهدبود.
روش زیر نیز برای تعریف آرایه فوق معتبر است:
>>A{1,1} = [1 2 3;4 5 6;7 8 9]; >>A{1,2} = ['Ali ';'Sajedi';'987654']; >>A{2,1} = 1:8; >>A{2,2} = {}; |
دقت شود که در روش اول اندیسهای A داخل پرانتز وارد شده و برای تعریف سلول دادههای مربوطه را در داخل {} قرار دادیم اما در روش دوم عکس این عمل انجام شد. هر دو تعریف نتیجه یکسانی خواهند داشت و میتوان در هرزمان از روشهای فوق به-جای یکدیگر استفاده نمود.
- نکته: یک تفاوت اصلی آرایه سلول با آرایه ها و ماتریس ها در این است که چنان چه یک ماتریس یا آرایه ای که تعریف کرده ایم را دوباره با نام قبلی ولی با مقادیر جدید تعریف کنیم، متلب به طور خودکار ابتدا داده قبلی را پاک نموده و ماتریس یا آرایه جدید را با ابعاد تازه به متغیر با نام قبلی اختصاص میدهد. اما در مورد سلول ها این گونه نیست. برای مثال، در مثال قبلی با تعریف مجدد A این بار با استفاده از اندیس گذاری با {}، اگر به متغیرهای فضای کاری دقت کنید، آرایه قبلی پاک نمیشود، بلکه تنها سلولهای جدید جایگزین سلولهای متناظر قبلی میشوند. بنابراین اگر میخواهیم مواردی چون مثال قبل را در یک آرایه جدید وارد کنیم بهتر است با دستور clear ابتدا آرایه را پاک نماییم.
- روش دوم:
با تابع cell(m,n) میتوان یک سلول m در n با عناصر سلول تهی ایجاد نموده وسپس به شکل قبل داده ها را به سلول ها تخصیص داد:
>>B = cell(2,3) B = [] [] [] [] [] [] >>B(2,2) = {[1 2;3 4]} B = [] [] [] [] [2x2 double] [] |
- دستور whos :
این دستور را برای A به کار برید و نتیجه را تحلیل کنید:
>>whos A A 2x2 620 cell |
برای مشاهده محتویات A، نام داده را وارد میکنیم:
>>A A = [3x3 double] [3x6 char] [1x8 double] {} |
دیدیم که مانند ماتریس ها محتویات را نمایش نمیدهد و فقط اندازه و نوع داده ها را در چاپ میکند. برای مشاهده محتویات از celldisp() استفاده میشود:
>>celldisp(A) A{1,1} = 1 2 3 4 5 6 7 8 9 A{2,1} = 1 2 3 4 5 6 7 8 A{1,2} = Ali Sajedi 987654 A{2,2} = {} |
برای نمایش یک یا چند تا سلول دلخواه همانند ماتریس ها به دوشکل میتوان اندیس گذاری نمود:
1. به روش شماره سلول:
>>A{1,2} ans = Ali Sajedi 987654 |
- دستور cellplot(A) :
این دستور را وارد کرده تا پنجره ای گرافیکی بازشود:
>>cellplot(A) |
پنجره زیر به شکل گرافیکی نمودار محتویات آرایه سلول را نشان میدهد.
- برای تخصیص همزمان به یک سلول آرایه نمیتوان از دستوراتی مثل … = c{1,:} استفاده نمود. اما به جای آن از طریق تعریف سلول با استفاده از پرانتز،c()={…} ،مانند مثالهای زیر میتوان عمل نمود:
>>c(1,[1 3]) = { {[1 2]}, {'Hi'} } c = {1x1 cell} [] {1x1 cell} |
دسترسی به زیر آرایه سلولهای یک آرایه سلولی مانند زیر امکان پذیر است:
>>C = cell(3,3); >>C(2:3,2:3) = { {[1 2]} {'Hi'}; {} {[1 2;3 4]} }; >>A = C(1:2,1:2) >>celldisp(A) A{1,1} = [] A{2,1} = [] A{1,2} = [] |
در مثال فوق زیر آرایه سلول A که خود یک آرایه سلول است از آرایه سلول C استخراج گردید.
دسترسی به محتویات سلول ها نیز از طریق اندیس گذاری مناسب امکان پذیر است. برای مثال آرایه سلول C در مثال قبل را درنظر بگیرید. فرض کنیم که درایه دوم بردار تعریف شده در سلول C(2,2) یا حرف آخر رشته ی ذخیره شده در سلول C(2,3) را بخواهیم استخراج کنیم. باترکیب اندیس گذاریهای آرایه سلول ها و آرایه ها میتوان بدین منظور دست یافت:
>>C C = [] [] [] [] {1x1 cell} {1x1 cell} [] {} {1x1 cell} >>C{2,2}{1,1} ans = 1 2 >>C{2,2}{1,1}(1,2) ans = 2 >>C{2,3}{1,1}(1,end) ans = i |
- حذف سلولهای یک آرایه سلول:
با تخصیص ماتریس تهی، []، به خانههای سلول، میتوان محتویات آنها را پاک کرد، مثال زیر به پاک کردن سطرها و ستونهای اول آرایه C میپردازد:
>>C(3,1:3) = {[] [] []} C = [] [] [] [] {1x1 cell} {1x1 cell} [] [] [] >>C(1:2,3) = {[] []} C = [] [] [] [] {1x1 cell} [] [] [] [] |
- دستور reshape(A,m,n) :
می توان آرایه سلولی را نیز مانند آرایههای دیگر تغییر اندازه داد. به کارگیری این دستور مشابه آرایه ها بوده و باید تعداد سلول ها (یعنی حاصل m*n)پس از تغییر اندازه همچنان ثابت بماند. این دستور فقط برای تغییر اندازه آرایه بوده و نمیتوان از آن جهت حذف یا گسترش آرایه استفاده نمود:
>>A = cell(3,4); >>A(1,4) = {'A'}; >>reshape(A,2,6) ans = [] [] [] [] [] [] [] [] [] [] 'A' [] |
پیروز و موفق باشید
ادامه حیات سایت جاواپرو به حمایت مالی (دونیت) از طرف شما کاربر عزیز بستگی دارد.... |
جلسه ده | آرایه سلولی در برنامه نویسی متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
سایت جاواپرو با هدف تولید محتوای آموزشی با کیفیت رایگان در زمینه برنامه نویسی جاوا و اندروید فعالیت خود را در سال 1395 شروع کرد.امیدواریم بتوانیم دامنه گسترده تری از موضوعات پر نیاز در زمینه برنامه نویسی جاوا و اندروید را البته با حمایت شما پوشش دهیم.
تلفن تماس: 09301904690