%45 تخفیف، با کد Tabestan روی تمام آموزش ها، بمناسبت جشنواره تابستانه بیاموز ...!
زمان باقی مانده (آخرین فرصت)
سبد (0)

تبلیغات

استفاده از آرایه سلولی در ساختارها

برای ایجاد یک ساختار(struct) در متلب می توانیم به صورت های زیر عمل کنیم:

مثال

s = struct
s = struct(field,value)
s = struct(field1,value1,...,fieldN,valueN)
s = struct([])
s = struct(obj)

توضیح:

عبارت s = struct یک ساختار اسکالر(یعنی 1 در 1 ) ایجاد می کند که هیچ فیلدی ندارد.


عبارت s = struct(field,value) یک ساختار ایجاد می کند که یک فیلد و یک مقدار دارد. آرگومان value می تواند هرنوع داده ای باشد.مثلا می تواند به صورت عددی، یا منطقی یا کاراکتر یا آرایه باشد.

  •  اگر value یک آرایه ی سلولی نباشد، ساختار s یک مقدار اسکالر(1 در 1 یا یک بعدی) محسوب می شود، به طوری که داریم: s.(field) = value
  • اگر value یک آرایه ی سلولی باشد، s یک نوع ساختار آرایه ای محسوب می شود که ابعاد این آرایه با ابعاد آرایه ی سلولی(value) یکسان است. هر عنصری از s(همان آرایه) که به آن اشاره کنیم، دقیقا به عنصری مشابه از value اشاره می کند.  به عنوان مثال اگر عبارت s = struct('f',{'a','b'}) را در متلب وارد کنیم، خواهیم دید که  s(1).f برابر با a می شود و s(2).f برابر با b می شود. به مثال زیر توجه کنید:

مثال

>> s = struct('f',{'a','b'})

s = 

  1×2 struct array with fields:

    f

>> s(1).f

ans =

a

>> s(2).f

ans =

b

 

  •  اگر value یک آرایه ی سلولی خالی، یعنی {} باشد، آنگاه s یک ساختار خالی(0 در 0) خواهد بود.

 عبارت s = struct(field1,value1,...,fieldN,valueN) یک ساختار آرایه ای ایجاد می کند که چند فیلد دارد. هر مقدار غیر اسکالر(غیر یک بعدی) که در داخل value1 و ... و valueN قرار گیرد، باید ابعاد یکسانی داشته باشد.  این یعنی اگر دو فیلد در متغیری وجود داشته باشد، که هرکدام از آنها حاوی یک آرایه ی سلولی غیر خالی باشند، آنگاه این دو آرایه ی سلولی باید ابعاد یکسانی داشته باشند. به مثال زیر توجه کنید:

مثال

>> x1 = struct('f1',{1,2,3})

x1 = 

  1×3 struct array with fields:

    f1

>> x2 = struct('f1',{1,2,3},'f2',{4,5,6})

x2 = 

  1×3 struct array with fields:

    f1
    f2

>> x3 = struct('f1',{1,2,3},'f2',{4,5,6,7})
Error using struct
Array dimensions of input '4' must match those of input '2', or be scalar.
 
>> 

 تشریح مثال بالا:

در دستورات بالا، در خط شماره 1، یک ساختار ایجاد کردیم و در فیلد f1، یک آرایه ی سلولی با سه مقدار تعریف کردیم. در خط شماره 9، یک ساختار دیگر ایجاد کردیم و علاوه بر فیلد f1، یک فیلد به نام f2 تعریف کردیم و برای آن یک آرایه ی سلولی دیگر با سه مقدار، یعنی با ابعاد یکسان تعریف کردیم. که اینجا هیچ مشکلی به وجود نیامد. اما در خط 18، همان طور که مشاهده می کنید، برای آرایه ی سلولی فیلد f2، یک مقدار اضافی(یعنی عدد 7) را تعریف کرده ایم. این یعنی ابعاد دو آرایه ی سلولی با یکدیگر برابر نیستند و خطا ایجاد شد.


 نکته1: در عبارت s = struct(field1,value1,...,fieldN,valueN) ، اگر هیچ یک از value ها، آرایه ی سلولی نباشند آنگاه ساختار s یک ساختار اسکالر محسوب می شود. و یا اگر تمام valueها آرایه ی سلولی یک بعدی(اسکالر) باشند، آنگاه s نیز یک ساختار اسکالر محسوب می شود.

نکته 2: اگر حداقل یکی از valueها، یک آرایه ی سلولی غیر اسکالر(غیر یک بعدی یا یک عنصری) باشد، آنگاه ابعاد s برابر با ابعاد آن آرایه ی سلولی خواهد بود. به مثال زیر توجه کنید:

مثال

>> x1 = struct('f1',{1,2,3},'f2','m')

x1 = 

  1×3 struct array with fields:

    f1
    f2
  •  همان طور که در خط 5 مشاهده می کنید، ابعاد ساختار، 1 در 3 است، یعنی برابر با ابعاد آرایه ی سلولی.


  • نکته3: اگر یکی از valueها برابر با یک آرایه ی سلولی خالی، یعنی {} باشد، آنگاه s نیز یک ساختار خالی(0 در 0) در نظر گرفته می شود. بنابراین اگر می خواهید در ساختار خود، از یک مقدار خالی برای یک فیلد استفاده کنید، و می خواهید دیگر فیلدها نیز آسیب نبینند، می توانید از یک [] بعنوان مقدار آن فیلد استفاده کنید.

نکته 4: اگر عبارت s = struct([]) را در متلب وارد کنیم، یک ساختار خالی(0در0) بدون هیچ فیلدی ایجاد می شود.


 نکته 5: عبارت s = struct(obj) یک ساختار ایجاد می کند که فیلدها و مقادیر آن با متغیرها(یعنی پروپرتی ها) و مقادیر آنها در شیء obj تطابق دارند و برابر هستند. 


چند مثال در مورد ساختارها در متلب

 

 

 

 

 

 

 

 

 

 

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی