آموزش متلب

ساخت آرایه های ساختاری

ساخت آرایه ساختاری (Structure Array)، با دستور struct ، در متلب (MATLAB)

در پست قبلی آرایه های ساختاری (Structure Array) در متلب (MATLAB) را معرفی کردیم و روشی را برای ساخت آرایه های ساختاری (Structure Array) به کار بردیم که در آن، از هیچ دستور از قبل تعریف شده ای، استفاده نمی شد. اما دستور struct در متلب (MATLAB) نیز می تواند برای ساخت آرایه های ساختاری (Structure Array) به کار رود.

دستور struct به شکل کلی زیر به کار می رود :

S = struct(field1,value1,field2,value2,…,fieldN,valueN)

که در آن، فیلد (Field) اول دارای نام field1 و مقدار value1 و فیلد دوم دارای نام field2 و مقدار value2 و … و فیلد N ام دارای نام fieldN و مقدار valueN می باشد (البته قبل از استفاده، به نکات بعدی توجه شود) .

عبارت بالا را به صورت کلی نوشتیم و اینکه آرایه ساختاری (Structure Array) چگونه باشد، دارای نکاتی است که آنها را در ادامه شرح می دهیم :

نکته

فرض کنید که دستور struct را به صورت زیر به کار ببریم (تنها دارای یک فیلد (Field) و مقدار (Value) متناظر با آن) :

S = struct(field1,value1)

اکنون بر اساس اینکه value1 از چه نوعی (Type) باشد، حالت های زیر را برای S داریم :

1- value1 ، یک آرایه سلولی (Cell Array) نیست :

S یک ساختار اسکالر (Scalar Structure) خواهد بود

2- value1 ، یک آرایه سلولی (Cell Array) می باشد :

S یک آرایه ساختاری (Structure Array) خواهد بود

3- value1 ، یک آرایه سلولی خالی (Empty Cell Array) (یعنی {}) می باشد :

S یک ساختار خالی (Empty Structure) خواهد بود

نکته

حالت کلی استفاده از دستور struct را در نظر بگیرید :

S = struct(field1,value1,field2,value2,…,fieldN,valueN)

اکنون بر اساس اینکه مقدارهای value1 و value2 و … و valueN ، از چه نوعی (Type) باشند، حالت های زیر را برای S داریم :

1- هیچکدام از مقدارهای value1 و value2 و … و valueN ، آرایه سلولی (Cell Array) نیستند و یا اینکه همگی آرایه سلولی اسکالر (Scalar Cell Array) هستند :

S یک ساختار اسکالر (Scalar Structure) خواهد بود

2- حداقل یکی از مقدارهای value1 و value2 و … و valueN ، یک آرایه سلولی غیراسکالر (Nonscalar Cell Array) می باشد :

S دارای ابعادی (Dimension) برابر ابعاد همان آرایه سلولی غیراسکالر (Nonscalar Cell Array) خواهد بود. برای سایر مقدارهای (Value) تعیین شده (یعنی بقیه از مقدارهای value1 و value2 و … و valueN) که آرایه سلولی اسکالر (Scalar Cell Array) یا آرایه ای (Array) از انواع دیگر (Data Type) هستند، دستور struct ، برای همه عنصرهای S ، محتوای آن مقدار (Value) را در فیلدهای (Field) مرتبط قرار می دهد.

3- حداقل یکی از مقدارهای value1 و value2 و … و valueN ، یک آرایه سلولی خالی (Empty Cell Array) (یعنی {}) می باشد :

S یک ساختار خالی (Empty Structure) خواهد بود

به مثال زیر توجه کنید :

مثال
clear all
close all
clcfield1 = ‘f’;
value1 = {‘kelidestan.com’};
S = struct(field1,value1)S.f

3 خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.

نتیجه :

S =

    f: ‘kelidestan.com’

ans =

kelidestan.com

مثال
clear all
close all
clcfield1 = ‘f’;
value1 = {‘kelidestan.com 1’,
          ‘kelidestan.com 2’,
          ‘kelidestan.com 3’};
S = struct(field1,value1)S.f

نتیجه :

S =

3×1 struct array with fields:

    f

ans =

kelidestan.com 1

ans =

kelidestan.com 2

ans =

kelidestan.com 3

همان کدهای متلب (MATLAB) قبلی را با کمی تغییر، اجرا می نماییم :

clear all
close all
clcfield1 = ‘f’;
value1 = {‘kelidestan.com 1’,
          ‘kelidestan.com 2’,
          ‘kelidestan.com 3’};
S = struct(field1,value1)A = S(1).f
B = S(2).f
C = S(3).f

نتیجه :

S =

3×1 struct array with fields:

    f

A =

kelidestan.com 1

B =

kelidestan.com 2

C =

kelidestan.com 3

مثال
clear all
close all
clcfield1 = ‘f1’;
value1 = [10 20 30 40 50];
 
field2 = ‘f2’;
value2 = {‘a’, ‘b’};field3 = ‘f3’;
value3 = {‘kelidestan.com’};S = struct(field1,value1, field2,value2, field3,value3)

A = S(1)
B = S(2)

نتیجه :

S =

1×2 struct array with fields:

    f1
    f2
    f3

A =

    f1: [10 20 30 40 50]
    f2: ‘a’
    f3: ‘kelidestan.com’

B =

    f1: [10 20 30 40 50]
    f2: ‘b’
    f3: ‘kelidestan.com’

مثال
clear all
close all
clcfield1 = ‘f’;
value1 = {{‘a’,’b’,’c’}};
S_1 = struct(field1,value1)field2 = ‘f’;
value2 = {‘a’,’b’,’c’};
S_2 = struct(field2,value2)

نتیجه :

S_1 =

    f: {‘a’  ‘b’  ‘c’}

S_2 =

1×3 struct array with fields:

    f

مثال
clear all
close all
clcfield1 = ‘f1’;
value1 = {};field2 = ‘f2’;
value2 = {};S = struct(field1,value1, field2,value2)

نتیجه :

S =

0x0 struct array with fields:

    f1
    f2

مثال
clear all
close all
clcfield1 = ‘f1’;
value1 = ‘kelidestan.com’;field2 = ‘f2’;
value2 = {};S = struct(field1,value1, field2,value2)

نتیجه :

S =

0x0 struct array with fields:

    f1
    f2

مثال
clear all
close all
clcfield1 = ‘f1’;
value1 = {};field2 = ‘f2’;
value2 = {};S = struct(field1,value1, field2,value2)

S(1).f1 = ‘kelidestan.com 1’
S(2).f1 = ‘kelidestan.com 2’

A = S(1).f1
B = S(2).f1

نتیجه :

S =

0x0 struct array with fields:

    f1
    f2

S =

    f1: ‘kelidestan.com 1’
    f2: []

S =

1×2 struct array with fields:

    f1
    f2

A =

kelidestan.com 1

B =

kelidestan.com 2

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *