جستجو برای:
  • دوره‌های آموزشی
  • وبلاگ
  • آموزش‌های رایگان
    • آموزش پایتون رایگان
    • آموزش یادگیری ماشین رایگان
    • آموزش یادگیری عمیق رایگان
    • آموزش pytorch رایگان
    • آموزش رایگان matplotlib
    • آموزش گوگل کولب
  • نقشه راه AI
  • کلاس خصوصی
  • همکاری با ما💚
  • حساب کاربری
  • اساتید
  • درباره ما
     
    • 0902-546-9248
    • howsam.mail@gmail.com
    آکادمی هوش مصنوعی هوسم
    • دوره‌های آموزشی
    • آموزش‌های رایگان
      • آموزش پایتون
      • آموزش یادگیری ماشین رایگان
      • آموزش یادگیری عمیق رایگان
      • آموزش pytorch رایگان
      • آموزش گوگل کولب
    • نقشه راه AI
    • وبلاگ
    • درباره ما
      • اساتید
      • پشتیبانی
    0
    ورود / عضویت

    بلاگ

    آکادمی هوش مصنوعی هوسم وبلاگ متلب structure در متلب

    structure در متلب

    2021/01/05
    ارسال شده توسط الهام پیلوا
    متلب
    4.49k بازدید

    در جلسه بیستم از آموزش متلب رایگان هوسم، می‌خواهیم structure در متلب را معرفی کنیم. structure-ها نیز مانند سلول یک data type در متلب هستند. یک structure از مجموعه‌ای از field-ها تشکیل شده است. این فیلدها می‌توانند داده‌هایی از انواع مختلف را در خود ذخیره کنند. در این جلسه می‌خواهیم نحوه تعریف structure، اضافه یا حذف کردن اطلاعات به structure و اندیس‌دهی به آن را آموزش دهیم. با هوسم همراه باشید.

    فهرست مطالب نمایش
    1. معرفی آرایه ساختاری در متلب
    2. تعریف structure در متلب
    2.1. استفاده از DOT برای تعریف structure در متلب
    2.2. استفاده از دستور struct در متلب
    3. دسترسی به داده های داخل structure در متلب
    3.1. اضافه کردن مقدار به structure با استفاده از اندیس دهی
    4. حذف field از آرایه های ساختاری در متلب
    5. دسترسی به کل مقادیر یک field در structure
    6. دریافت PDF جلسه structure در متلب
    7. جمع‌بندی جلسه structure در متلب

    معرفی آرایه ساختاری در متلب

    آرایه ساختاری در متلب (structure array)، یک نوعِ داده (data type) است که می‌توان داده‌ها را به صورت گروهی در آن ذخیره کرد. هر گروه از داده‌ها، در کانتینرهایی (container) با نام مشخص ذخیره می‌شوند. به هر کدام از این کانتینرها یک Field گفته می‌شود. درون یک فیلد می‌توان هر نوع داده‌ای ذخیره کرد و این داده‌ها می‌توانند از نوع متفاوتی باشند.

    شکل 1: structure به زبان عامیانه!

    شکل بالا یک بیان عامیانه از structure در متلب است. در این شکل شما یک بخش از سوپرمارکت را مشاهده می‌کنید. نام این بخش حراج است. این درواقع همان structure ما است. این بخش به سه قسمت تقسیم شده و بالای هر قسمت عناوین «شیرینی»، «شوینده» و «نوشیدنی» نوشته شده است. این‌ها درواقع همان فیلدها هستند. داخل هر فیلد، یکسری کالا وجود دارند. این کالاها همان مقادیری هستند که در فیلد ذخیره می‌شوند! که این کالاها می‌توانند انواع متفاوتی داشته باشند. مثلا شیرینی‌ها می‌توانند کیک، ویفر یا بیسکوئیت باشند. یعنی از یک نوع نباشند. همچنین تعداد شیرینی‌ها در هر بسته‌بندی می‌تواند متفاوت باشد. همین مسئله در مورد نوشیدنی‌ها و مواد شوینده هم وجود دارد.

    در اینجا ما به بیان ساده یک آرایه ساختاری را به شما معرفی کردیم. در بخش بعدی با نحوه تعریف یک structure در متلب آشنا خواهید شد. برویم سراغ بخش بعدی..

    تعریف structure در متلب

    برای تعریف یک structure در متلب دو راه وجود دارد. راه اول، استفاده از نقطه (دات “.”) است. در این روش ابتدا نام آرایه را نوشته و بعد یک دات می‌گذاریم و نام field را می‌نویسیم. سپس با استفاده از عملگر تخصیص می‌توانیم مقداری را در field موردنظر ذخیره کنیم. روش دوم استفاده از دستور struct در متلب است. به این منظور کافی است که جلوی دستور struct، یک پرانتز باز کرده و نام field‌ها و مقادیرشان را به ترتیب بنویسیم. در ادامه، هردو روش، تشریح شده‌اند.

    استفاده از DOT برای تعریف structure در متلب

    در بخش قبل گفتیم که یکی از راه‌های تعریف آرایه ساختاری در متلب، استفاده از دات است! در این بخش می‌خواهیم نحوه انجام این کار را بگوییم. تا به حال از دات برای تعریف متغیر استفاده نکرده بودیم که کردیم! ابتدا نیاز است در ذهن خود یک آرایه ساختاری تصور کنید. نام این آرایه را students در نظر بگیرید. شما باید در این متغیر، نامِ یکسری دانش‌آموز، سن دانش‌آموزان و نمره‌های سه درس آن‌ها را ذخیره کنید.

    شکل 2: نام، سن و نمرات دانش‌آموزان

    پس نام آرایه ساختاری، students است. در این structure، سه Field باید وجود داشته باشد. نام دانش‌آموز، سن و نمره‌هایش. به ترتیب نام این سه Field را age ،name و grade بگذارید. خب، آرایه ساختاری ما، باید به شکل زیر باشد:

    شکل 3: استراکچری که می‌خواهیم بسازیم این‌شکلی است!

    حالا که می‌دانیم قضیه از چه قرار است و چه می‌خواهیم بسازیم، دست به کیبورد می‌شویم و شروع می‌کنیم به کدنویسی. بنویسید:

    >> students.name = 'sara'

    در همین یک خط با استفاده از علامت dot، ما یک آرایه ساختاری تعریف کردیم که یک field به نام name دارد. در این فیلد یک مقدار وجود دارد (sara). کد بالا را اجرا کنید و ببینید:

    students =
      struct with fields:
          name: 'sara'

    پس توانستیم Field اول را بسازیم و یک مقدار هم در آن ذخیره کنیم. برویم فیلدهای دیگر را هم اضافه کنیم:

    >> students.age = 15;
    >> students.grades = [32, 75, 61];
    >> students
    students =
      struct with fields:
          name: 'sara'
           age: 15
        grades: [32 75 61]

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

    استفاده از دستور struct در متلب

    برای تعریف یک آرایه ساختاری در متلب می‌توان از دستور struct در متلب نیز استفاده کرد. همان‌طور که قبلا هم گفتیم برای تعریف ساختار با دستور struct، کافی است که جلوی دستور یک پرانتز باز کنیم و فیلدها و مقادیر متناظرشان را به ترتیب بنویسیم. برای مثال نمراتی که در شکل 2 گذاشتیم را این‌بار می‌خواهیم با استفاده از دستور struct در متغیری به نام students_2 ذخیره کنیم. برای این کار کافی است بنویسید:

    >> students_2 = struct('name', 'sara', 'age', 15, 'grades', [32 75 61])
    students_2 =
      struct with fields:
          name: 'sara'
           age: 15
        grades: [32 75 61]

    مشاهده می‌کنید که به راحتی توانستیم یک آرایه ساختاری با نام students_2 بسازیم. این آرایه مشابه بخش قبل، سه فیلد دارد و ما یک مقدار به هر فیلد اضافه کردیم. ساده بود نه؟ برای اضافه کردن بقیه مقادیر نیز نیاز هست که نحوه اندیس‌دهی را بدانیم؟ خیر! در این روش اگر بخواهید بیش از یک مقدار به هر فیلد اضافه شود، کافی است از علامت آکولاد استفاده کنید. این بار سعی می‌کنیم نمرات sara و john را با هم در students_2 وارد کنیم:

    >> students_2 = struct('name', {'sara', 'john'}, 'age', {15, 17}, 'grades', {[32 75 61], [80 69 94]})

    دستور بالا را اگر اجرا کنید خواهید داشت:

    students_2 =
        1×2 struct array with fields:
            name
            age
            grades

    قبلا مقادیر داخل structure هم نمایش داده می‌شد. اما این بار چون تعداد مقادیری که ذخیره شده است زیاد شده، فقط فیلدها را نمایش می‌دهد. برای اینکه مقادیر ذخیره شده را هم ببینید روی students_2 در پنجره Workspace دابل-کلیک کنید:

    شکل 4: متغیر students_2 بعد از وارد کردن نمرات John

    مشاهده می‌کنید که مقادیر همانطور که تعریف کردیم در این متغیر ذخیره شده‌اند. چرا نمره‌های Alex را وارد نکردیم؟ این دیگر کار شماست.

    تمرین 1: یک متغیر جدید تعریف کنید و همه اطلاعات موجود در شکل 2 را در این متغیر جدید به صورت structure ذخیره کنید.
    جواب در متن!

    دسترسی به داده های داخل structure در متلب

    در آرایه‌ها دیدید که اگر جلوی نام آرایه یک پرانتز باز کرده و اندیسِ داده موردنظرتان را بنویسید، می‌توانید به مقدار آن داده دسترسی پیدا کنید. در آرایه ساختاری هم همینطور است. اما علاوه‌بر نام اندیس، باید نام فیلد را هم مشخص کنیم. مثلا فرض کنید بخواهیم نمره سارا را در students_2، استخراج کنیم. برای این کار کافی است بنویسیم:

    >> students_2(1).grades

    یعنی اولین المان از فیلد grades را بردار و به من نشان بده:

    ans =
    
         32   75   61

    حالا از همین تکنیک می‌توانیم استفاده کنیم و یکسری مقادیر جدید به هر فیلد اضافه کنیم.

    تمرین 2: از متغیری که در تمرین 1 تعریف کردید، نمرات Alex را استخراج کنید.
    >> your_var(3).grades

    اضافه کردن مقدار به structure با استفاده از اندیس دهی

    در بخش « استفاده از DOT برای تعریف structure در متلب » گفتیم که برای اضافه کردن مقدار به یک structure نیاز است که با اندیس‌دهی آشنا باشید. حالا که اندیس‌دهی را آموختید می‌خواهیم برگردیم و آن بخش را کامل کنیم. برای اضافه کردن یک مقدار جدید به یک فیلد، کافی است از اندیس‌دهی استفاده کنیم. اگر یادتان باشد ما در متغیر students، فقط اطلاعات Sara را وارد کردیم. حالا می‌خواهیم نمرات John را نیز وارد کنیم. برای این کار کافی است بنویسید:

    >> students(2).name = 'john'

    بعد از اجرای کد بالا، متغیر students را از پنجره Workspace باز کنید:

    شکل 5: متغیر students پس از وارد کردن نام John

    مشاهده می‌کنید که نام John به فیلد names اضافه شده است. نکته دیگری توجهتان را جلب نکرد؟ اگر دقت کنید می‌بینید که به صورت اتوماتیک در اندیس دوم و فیلدهای age و grades مقدار [ ] قرار داده شده است. یعنی اندیسِ 2 برای فیلدهای age و grades به صورت اتوماتیک ایجاد شده و مقدارش تهی است! یعنی این خانه‌ها صاحب دارند ولی صاحبخانه فعلا خانه نیست! مشاهده می‌کنید که ابعاد structure هم برابر با 2×1 شده است. به همین ترتیب می‌توانیم سن و نمرات John را نیز یکی یکی وارد کنید:

    >> students(2).age = 17
    
    >> students(2).grades = [80 69 94]

    دوباره به Workspace سر بزنید و ببینید که اطلاعات John هم کامل شده است. حالا اگر بدانیم که حذف داده‌ها چطور هست دیگر معرکه می‌شود. برویم سراغ بخش بعدی…

    حذف field از آرایه های ساختاری در متلب

    برای حذف کامل یک فیلد از آرایه ساختاری در متلب، از دستور rmfield استفاده می‌شود. این عبارت مخفف عبارت remove field است. برای حذف یک فیلد کافی است نام متغیر و نام فیلد موردنظر را به دستور rmfield بدهید. مثلا اگر بخواهیم فیلد age را از متغیر students پاک کنیم، کافی است بنویسیم:

    >> rmfield(students, 'age')
    ans = 
      1×2 struct array with fields:
        name
        grades

    مشاهده می‌کنید که فیلد موردنظرمان حذف شده است.

    تمرین 3: از متغیری که در تمرین 1 تعریف کردید، فیلد grades را پاک کنید.
    >> rmfield(your_var, 'grades')

    دسترسی به کل مقادیر یک field در structure

    برای دسترسی به کل مقادیر یک فیلد کافی است از dot استفاده کنید. مثلا اگر بخواهیم تمامی مقادیر ذخیره شده در فیلد name از متغیر students را استخراج کنیم، کافی است بنویسید:

    >> students.name
    ans =
        'sara'
    
    ans =
    
        'john'

    مشاهده می‌کنید که تمامی عناصر موجود در فیلد names را توانستیم با یک علامت dot استخراج کنیم!

    تمرین 4: از متغیری که در تمرین 1 تعریف کردید، تمامی اطلاعات موجود در فیلد age را استخراج کنید.
    >> your_var.age

    دریافت PDF جلسه structure در متلب

    برای دریافت pdf این جلسه، لطفا ایمیل خود را در باکس زیر وارد کرده و روی دکمه «دریافت pdf» کلیک کنید.

    دریافت PDF

    جمع‌بندی جلسه structure در متلب

    در این جلسه با نوع جدیدی از آرایه‌ها، یعنی آرایه ساختاری در متلب، آشنا شدیم. گفتیم یک آرایه ساختاری یک data-type در متلب است که از المان‌هایی به نام Field تشکیل شده است. در هرکدام از این فیلدها می‌توان متغیرهایی با Data-type مختلف ذخیره کرد. این جلسه هم به پایان رسید. نظرتان در مورد این جلسه چیست؟ برایمان کامنت کنید…

    اشتراک گذاری:
    درباره الهام پیلوا

    دانش‌آموخته مهندسی‌پزشکی دانشگاه علم و صنعت

    نوشته های بیشتر از الهام پیلوا

    مطالب زیر را حتما مطالعه کنید

    تعریف متغیر در متلب
    در این پست می‌خواهیم نحوه تعریف متغیر در متلب یا مقدار دهی به متغیر در...
    آموزش متلب رایگان
    به‌نام خدا، سلام... با آموزش متلب رایگان در خدمت شما هستیم. آموزش رایگان متلب هوسم،...
    دستور max در متلب
    در این پست از آموزش‌های متلب، می‌خواهیم دستور max در متلب را معرفی کنیم. همان‌طور...
    دستور محاسبه انتگرال در متلب
    در این پست از آموزش رایگان متلب می‌خواهیم دستور محاسبه انتگرال در متلب را معرفی...
    دستور input در متلب
    در این پست از آموزش متلب رایگان، می‌خواهیم نحوه دریافت ورودی از کاربر در متلب...
    دستور ezplot در متلب
    برای رسم یک تابع سمبولیک از دستور ezplot در متلب استفاده می‌شود. در این پست...

    9 دیدگاه

    به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

    • samin گفت:
      2022/11/08 در 1:29 ب.ظ

      سلام
      من structure تمرين رو ساختم ولي وقتي با rmfield فيلد Grades رو پاک ميکنم> بعدش که توي workspace روش دبل کليک ميکنم، هنوز فيلد grades رو داره
      چرا اينجوري ميشه؟

      پاسخ
    • حمید گفت:
      2022/01/12 در 10:20 ق.ظ

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

      پاسخ
      • تیم هوسم گفت:
        2022/02/23 در 8:51 ب.ظ

        سلام حمید عزیز،
        ممنون از پیام پرمهرتون 🌹😊

        پاسخ
    • محمدی گفت:
      2022/01/06 در 9:55 ب.ظ

      خیلی عالی بودممنون از لطفتان
      من میخواهم چند تا دستور و یا تابع را که نوشتم در قالب یک برنامه بنویسم چطوری این m فایلها را ترکیب کنم؟
      لطفا راهنمایی بفرمایید

      پاسخ
      • تیم هوسم گفت:
        2022/02/23 در 8:52 ب.ظ

        سپاس 🙏🌹
        می‌خواید از چند تابع در یک m-file استفاده کنید؟

        پاسخ
    • آتنا کاملی گفت:
      2021/07/03 در 3:54 ب.ظ

      سلام. خیلی جالب بود. در یادگیری بهم کمک کرده. سپاس گزارم.

      پاسخ
      • تیم هوسم گفت:
        2021/07/04 در 10:50 ق.ظ

        سلام
        سپاس
        موفق باشید

        پاسخ
    • بهار گفت:
      2021/02/03 در 12:08 ب.ظ

      سلام .واقعااز مطالبی که گذاشتین تشکر میکنم .خیلی سلیس و قابل فهم بود.برای یک مبتدی عالی هست

      پاسخ
      • تیم هوسم گفت:
        2021/02/03 در 2:10 ب.ظ

        سلام
        سپاس 🌹🙏

        پاسخ

    دیدگاهتان را بنویسید لغو پاسخ

    جستجو برای:
    فهرست مطالب دوره
    • معرفی دوره آموزش متلب رایگان
    • جلسه 01: متلب چیست؟
    • جلسه 02: آشنایی با محیط متلب
    • جلسه 03: ایجاد متغیر در متلب
    • جلسه 04: ترفندهای متلب 1
    • جلسه 05: ایجاد آرایه در متلب
    • جلسه 06: ماتریس‌های خاص در متلب
    • جلسه 07: اندیس‌گذاری در متلب
    • جلسه 08: عملیات روی آرایه‌ها در متلب
    • جلسه 9: آشنایی با محیط متلب 2
    • جلسه 10: ماتریس‌های تصادفی در متلب
    • جلسه 11: ترفندهای متلب 2
    • جلسه 12: توابع آماری در متلب
    • جلسه 13: رشته در متلب
    • جلسه 14: رسم نمودار در متلب
    • جلسه 15: عملگرهای مقایسه در متلب
    • جلسه 16: دستور if در متلب
    • جلسه 17: حلقه های for و while در متلب
    • جلسه 18: تعریف تابع در متلب
    • جلسه 19: آرایه سلولی در متلب
    • جلسه 20: structure در متلب
    • جلسه 21: دستور input در متلب
    • جلسه 22: محاسبه انتگرال در متلب
    دوره‌های جامع هوسم
    • مسابقه Kaggle: تحلیل و پیش‌بینی رفتار با داده‌های چندحسگری سری زمانی
    • پیاده‌سازی ChatGPT از صفر با پایتورچ
    • آموزش OpenCV: از پردازش تا بینایی
    • دیپ کاتالیست: دوره افزایش مهارت
    • پایتون برای هوش مصنوعی 🤖
    • یادگیری ماشین جامع: از مفاهیم تا پیاده‌سازی🔥
    • یادگیری عمیق جامع: از مفاهیم تا پیاده‌سازی
    درباره هوسم

    آکادمی هوش مصنوعی هوسم با آموزش‌های تخصصی در حوزه هوش مصنوعی در خدمت شماست. روی کمک هوسم حساب کنید…

    • گیلان- شهرستان رودسر- شهرک انصاری- کوچه لاله 9
    • 09025469248
    • howsam.mail@gmail.com
    دسترسی سریع
    • صفحه اصلی
    • وبلاگ
    • حساب کاربری
    • سبد خرید
    شبکه‌های اجتماعی

     

    logo-samandehi
    تمامی حقوق برای آکادمی هوسم محفوظ است.
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      ورود
      استفاده از موبایل
      استفاده از آدرس ایمیل
      آیا هنوز عضو نیستید؟ اکنون عضو شوید
      بازنشانی رمز عبور
      استفاده از موبایل
      استفاده از آدرس ایمیل
      عضویت
      استفاده از موبایل
      استفاده از ایمیل
      قبلا عضو شدید؟ اکنون وارد شوید

      ورود

      رمز عبور را فراموش کرده اید؟

      هنوز عضو نشده اید؟ عضویت در سایت