آموزش برنامه نویسی متلب
موضوع:آرایه سلول ها در متلب
جلسه: دهم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!
در این جلسه میخواهیم با دو مورد دیگر از انواع داده ها در متلب یعنی آرایه سلول-ها،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' [] |
پیروز و موفق باشید
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه
جلسه ده | آرایه سلولی در برنامه نویسی متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |