



آموزش برنامه نویسی متلب
موضوع:ساختارها(structures) در متلب
جلسه: چهاردهم
مدرس : مدرسین جاوا پرو
متلب را ساده،آسان و شیرین بنوشید!!!
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه [اینجا کـــــلیک کــــنید]
ساختارها یا structها آرایه هایی هستند که برای ذخیره یک گروه داده های مرتبط به کارمی وند. ساختارها همانند آرایه سلول ها می توانند انواع مختلفی را در خود ذخیره کنند، اما برای دسترسی به محتویات یک ساختار مانند زیر عمل می کنیم:
| structname.fieldname |
سمت چپ "." نام داده و سمت راست آن فیلد مربوط قرار می گیرد. فیلدها نام محل ذخیره داده های یک ساختار هستند. همانند بالا از نقطه برای ایجاد، تخصیص و دسترسی به محتویات فیلد استفاده می شود.
- مثال:
فرض کنیم قصد داریم اطلاعات یک دانشجو که شامل نام و معدل و ماتریس نمرات می باشد را در یک متغیر student ذخیره کنیم،یک داده از نوع struct تعریف می کنیم که شامل فیلدهای name، average و grades می باشد:
| >>student.name = 'Ali'; >>student.average = 19; >>student.grades = [18 19;20 20;19.5 18]; |
برای دسترسی به مقادیر ذخیره شده در فیلدها، پس از ذکرنام متغیر و نقطه، نام فیلد مورد نظر را می نویسیم:
| >>student.name ans = Ali |
حال فرض کنیم اطلاعات دانشجویان دیگر را نیز به همین ترتیب وارد کنیم، یک راه تعریف یک به یک متغیرهای جدید و راه بهتر بسط و گسترش ساختار فوق به یک آرایه ساختار است. به این شکل عمل می-کنیم:
| >>student(2).name = 'hasan'; >>student(2).average = 18; >>student(2).grades = [16 18;19 19]; |
اندیس 2 بیانگر این است که یک آرایه داریم، اما آرایه ای از نوع struct:
| >>student student = 1x2 struct array with fields: name average grades |
به همین ترتیب می توان دانشجویان بیشتری تعریف کرد.
برای دسترسی به دانشجوی دوم باید از اندیس 2 استفاده کرد اما دانشجوی اول:
| >>student.name ans = Ali ans = hasan |
می بینیم که دستور فوق کل اطلاعات ذخیره شده در فیلد name را برمی گرداند.پس از تعریف آرایه ساختار، برای دسترسی به اطلاعات فیلد دانشجوی اول از اندیس 1 استفاده باید کرد:
| >>student(1).name ans = Ali |
اگر برای دانشجوی سومی فقط یک فیلد مثلا average را وارد کنیم:
| >>student(3).average = 20 student = 1x3 struct array with fields: name average grades |
مشاهده شد که فیلدهای دیگر نیز برای این دانشجو تعریف شده ولی مقدار پیش فرض آن ماتریس تهی “[]” می باشد:
| >>student(3).name ans = [] |
- بنابراین در یک آرایه ساختار همه ساختارها از تعداد برابری فیلد برخوردارند.
- اسامی این فیلدها نیز یکسان است.
- اما فیلدهای یکسانِ ساختارهای مختلف، می توانند نوع داده متفاوتی بگیرند:
| >>student(3).name = 100; >>student.name ans = Ali ans = hasan ans = 100 |
- struct:
راه دیگر تعریف یک ساختار، استفاده از دستور فوق است:
| >>s = struct S = struct with no fields |
فیلدها و مقادیر در ساختار فوق خالی بوده و مشابه قبل می توان آن ها را تعریف نمود. راه دیگر استفاده از شکل کاملتر این دستور:
| >>struct(field,value) |
- مثال:
| >>s = struct('name','Ali'); |
یک آرایه ساختاری به شکل زیر تعریف می شود:
| >>struct(field,cell_array) |
به جای cell array یک آرایه سلولی تعریف می کنیم، مثال:
| >>s = struct('name',{'Ali','Hasan'}) s = struct array with fields: name >>s.name ans = Ali ans = Hasan |
- نکته: اگر به جای cell array، از {} استفاده کنیم، یک ساختار خالی 0در0 خواهیم داشت.
ایجاد فیلدها و مقادیر مختلف با دستور struct:
| >>struct(field1,value1,field2,value2,…) |
-مثال:
| >>s = struct('name',{'Ali','Hasan'},'age',{23 25}) s = struct array with fields: name age |
- نکته: فیلدها از نوع رشته و مقادیر آن ها از نوع سلول بوده، و درنتیجه می توان این گونه نیز آن ها را تعریف نمود:
| >>field1 = 'name'; value1 = {'Ali' 'Reza'}; >>field2 = 'age'; value2 = {20 22}; >>field3 = 'height'; value3 = {180 178}; >>field4 = 'weight'; value4 = {80 65}; >>struct(field1,value1,field2,value2,field3,value3,field4,value4); ans = 1x2 struct array with fields: name age height weight |
فیلدها میتوانند حاوی مقادیر آرایه سلولی باشند:
| >>field = 'colors'; >>value = {{'Red' 'Yello' 'green'}}; >>struct(field,value) ans = colors: {'Red' 'Yello' 'green' |
- دستور fieldnames(s):
ورودی آن یک structure است که در خروجی نام فیلدها را برمی گرداند:
| >>fieldnames(s) ans = 'name' 'age' |
- دستور isstruct(s) :
اگر ورودی آن یک structure باشد، مقدار 1 و در غیر این صورت صفر برمی گرداند:
| >>A = cell(3,2); >>s = struct; isstruct(A) ans = 0 |
- دستور isfield(s,’fieldname’):
بررسی می کند که فیلد fieldname جزو فیلدهای ساختار s می باشد یا خیر:
| >>s.temperature = [15 12 25]; >>s.humidity = [.2 .35 .11 .14 .17]; >>isfield(s,'temperature') ans = 1 >>isfield(s,'height') ans = 0 |
می توان یک آرایه سلولی از فیلدهای مختلف تشکیل داد و این آرایه را به عنوان ورودی دستور داد:
| >>field = {'temperature' 'humidity' 'age' 'height'}; >>isfield(s,field) ans = 1 1 0 0 |
در خروجی یک آرایه برمی گرداند که حاوی صفر و یک هایی است که مربوط به فیلدهای موجود در s می باشد.
- دستور rmfield(s,field):
فیلد field را از s حذف می کند. مثلا:
| >>s.name = 'Ali'; >>s.age = 20; >>s.grades = [19 14 17]; >>rmfield(s,'age') ans = name: 'Ali' grades: [19 14 17] |
می توان مشابه دستور isfield یک آرایه سلولی از فیلدها را یک جا حذف نمود:
| >>fields = {'name' 'age'}; >>rmfield(s,fields) ans = grades: [19 14 17] |
- دستور orderfields(s):
فیلدهای ساختار s را به ترتیب حروف الفبا مرتب می کند:
| s.c = []; s.b = []; s.e = []; s.a = []; s.d = []; fieldnames(s) ans = 'c' 'b' 'e' 'a' 'd' orderfields(s) ans = a: [] b: [] c: [] d: [] e: [] |
پیروز و موفق باشید
جلسه چهاردهم | ساختارها(structures) در متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 10 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی می باشد
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690




![مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو [کلیک کنید]](https://dl.javapro.ir/image/marketing/banerday1403springboot.png)
























.png)
-min.png)
-min.png)
-min.png)


-min.png)









-min.png)

.jpg)


