Մաթլաբ

Մաթլաբ (), ՄաթՎորքսի կողմից մշակված թվային հաշվողական միջավայր և ծրագրավորման լեզու։ Մաթլաբը թույլ է տալիս իրականացնել մատրիցային մանիպուլյացիաներ, ֆունկցիաների և տվյալների գրաֆիկների կառուցում, ալգորիթմների իրականացում, օգտատերերի անհատական ինտերֆեյսների ստեղծում և այլ լեզուներով գրված ծրագրերի փոխազդեցություն։

Չնայած Մաթլաբը հիմնականում նախատեսված է թվային հաշվարկների համար, սակայն լրացուցիչ գործիքների հավաքածուն  օգտագործում է ՄաՓադ շարժիչ, որը թույլ է տալիս օգտագործել սիմվոլիկ հաշվողական նոր ունակություններ։ Սիմուլինկի լրացուցիչ փաթեթը դինամիկ և ներդրված համակարգերի համար ավելացնում է գրաֆիկական բազմաբնույթ տիրույթների մոդելավորում, ինչպես նաև այդ մոդելի վրա հիմնված դիզայն։

2020 թվականի դրությամբ, Մաթլաբն ունի ավելի քան 4 միլիոն օգտագործող ամբողջ աշխարհում։ Մաթլաբի հիմնական օգտագործողներ են համարվում ճարտարագիտության, գիտության և տնտեսագիտության ոլորտի ներկայացուցիչները։

Պատմություն 
Նյու Մեքսիկոյի համալսարանի համակարգչային գիտությունների ամբիոնի վարիչ Քլիվ Մոլերը սկսեց զարգացնել Մաթլաբը 1970-ականների վերջին։ Նա մշակեց այն, որպեսզի ուսանողներին հնարավորություն ընձեռի օգտվել Լինփաքից և Էիսփաքից` առանց Ֆորտրան սովորելու։ Շուտով այն տարածվեց նաև այլ համալսարաններում և ուժեղ լսարան գտավ  կիրառական մաթեմատիկայի համայնքում։ Ինժեներ Ջեք Լիթլը, առաջին անգամ բախվել է Մաթլաբի հետ 1983 թվականին Սթենֆորդի համալսարանում Մոլերի հետ այցի ժամանակ։ Գիտակցելով նրա կոմերցիոն ներուժը ՝ նա միավորվեց Մոլերի և Սթիվ Բանգերտի հետ։ Նրանք վերաշարադրել են Մաթլաբը C-ում և 1984-ին հիմնել ՄաթՎորքսը `շարունակելու դրա զարգացումը։  2000 թ.-ին Մաթլաբը վերագրվեց`գրադարանների նոր հավաքածու օգտագործելու համար` մատրիցային մանիպուլյացիաների համար։

Մաթլաբն առաջին անգամ ընդունվել է հետազոտողների և մասնագետների կողմից՝ ինժեներության մեջ, բայց արագորեն տարածվել է շատ այլ ոլորտներում։ Ներկայումս այն նաև օգտագործվում է կրթության մեջ, մասնավորապես գծային հանրահաշվի ուսուցման և թվային վերլուծության մեջ և հանրաճանաչ է պատկերների մշակմամբ զբաղվող գիտնականների շրջանում։

Շարահյուսություն 
Մաթլաբ հավելվածը գրված է Մաթլաբ ծրագրավորման լեզվով։ Մաթլաբ հավելվածի ընդհանուր օգտագործումը ներառում է «հրամանի պատուհան»-ի օգտագործում որպես ինտերակտիվ մաթեմատիկական վահանակ կամ Մաթլաբի ծածկագիր պարունակող տեքստային ֆայլերի իրականացում։

Փոփոխականներ 
Փոփոխականները սահմանվում են հավասարման օպերատորի միջոցով՝ =։ Մաթլաբը թույլ տիպացված ծրագրավորման լեզու է, քանի որ տիպերը անուղղակիորեն փոխակերպվում են։ Սա ենթադրում է թույլ տիպացված լեզու, քանի որ փոփոխականները կարող են նշանակվել`առանց դրանց տիպը հայտարարելու, բացառությամբ այն դեպքերի, երբ դրանք պետք է դիտվեն որպես սիմվոլիկ օբյեկտներ, և որ նրանց տեսակը կարող է փոխվել։ Արժեքները կարող են առաջանալ կոնստանտներից, այլ փոփոխականների արժեքների հաշվարկից կամ ֆունկցիաների արդյունքից։ Օրինակ՝  >> x = 17
x =
 17

>> x = 'hat'
x =
hat

>> x = [3*4, pi/2]
x =
   12.0000    1.5708

>> y = 3*sin(x)
y =
   -1.6097    3.0000

Վեկտորներ և մատրիցներ 
Սովորական զանգվածը սահմանվում է՝ օգտագործելով երկու կետերի կառուցվածքը՝ սկիզբ՝ :աճ՝:ավարտ. Օրինակ՝>> array = 1:2:9
array =
 1 3 5 7 9
վերևում սահմանված է մի փոփոխական՝  array  անունով (կամ վերագրված է նոր արժեք արդեն գոյություն ունեցող փոփոխականի՝ arrayանունով), որը զանգված է՝ կազմված 1, 3, 5, 7 և 9 արժեքներից։

Այսինքն, զանգվածը սկսվում է 1-ից (նախնական արժեքը), հետո յուրաքանչյուր քայլով ավելանում է 2-ով (աճի արժեքը) և կանգ է առնում, երբ այն հասնում է 9-ի (վերջին արժեքը)։
>> array = 1:3:9
array =
 1 4 7
աճի արժեքը, ըստ էության, կարող է դուրս մնալ այս շարահյուսությունից (երկու կետերից մեկի հետ միասին) օգտագործելով 1-նախնական արժեքը։
>> ari = 1:5
ari =
 1 2 3 4 5
ari անունով զանգվածին վերագրված է 1, 2, 3, 4 և 5 թվային արժեքներ, և քանի որ աճի արժեք չկա, այն ավելանում է 1-ով։

Ինդեքսավորումը 1-ից է սկսում, ինչը սովորական է մաթեմատիկական մատրիցների համար, ի տարբերություն զրոյի վրա հիմնված ինդեքսավորման, որը սովորաբար օգտագործվում է այլ հայտնի ծրագրավորման լեզուներում, ինչպիսիք են C, C ++ և Ջավա։

Մատրիցաները կարող են սահմանվել տողի տարրերը դատարկ տարածության կամ ստորակետով բաժանելու միջոցով և յուրաքանչյուր շարքի ավարտի համար կետ-ստորակետ օգտագործելով։ Էլեմենտների ցանկը պետք է քառակուսի փակագծերի մեջ լինի []։ Փակագծերը () օգտագործվում են էլեմենտներին մուտք ունենալու և հետո դրանցով աշխատելու համար (նաև ֆունկցիաներում են հանդիպում)։

>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A =
 16  3  2 13
  5 10 11  8
  9  6  7 12
  4 15 14  1

>> A(2,3)
ans =
 11

Ինդեքսների հավաքածուները կարող են սահմանվել 2:4տիպի արտահայտություններով, որոնք գնահատվում են [2, 3, 4]։

Օրինակ, 2-ից 4-րդ տողերից և 3-ից 4-րդ սյուներից կազմված ենթամատրիցան կարելի է գրել հետևյալ կերպ՝
>> A(2:4,3:4)
ans =
 11 8
 7 12
 14 1
N չափի քառակուսի մատրից կարող է ստեղծվել eyeֆունկցիայի միջոցով, և ցանկացած չափի մատրիցներ, որոնք կազմված են զրոներից կամ մեկերից կարող են ստեղծվել zeros և ones ֆունկցիաների միջոցով, համապատասխանաբար՝
>> eye(3,3)
ans =
 1 0 0
 0 1 0
 0 0 1

>> zeros(2,3)
ans =
 0 0 0
 0 0 0

>> ones(2,3)
ans =
 1 1 1
 1 1 1

Վեկտոր կամ մատրիցա տեղափոխելը կատարվում է կա՛մ transpose ֆունկցիայով, կա՛մ մատրիցից հետո կետ-շտրիխ ավելացնելով (առանց կետի, շտրիխը կկատարի բարդ զանգվածների փոխկապակցված փոխադրում).
>> A = [1 ; 2],  B = A.', C = transpose(A)
A =
     1
     2
B =
     1     2
C =
     1     2

>> D = [0 3 ; 1 5], D.'
D =
     0     3
     1     5
ans =
     0     1
     3     5

Ֆունկցիաներից շատերն ընդունում են զանգվածներ որպես մուտքային տվյալներ և գործողություններ են կատարում յուրաքանչյուր տարրի հետ առանձին-առանձին։ Օրինակ, mod(2*J,n) բազմապատկում է J- ի յուրաքանչյուր տարր 2-ով, այնուհետև յուրաքանչյուր տարրը նվազեցնում է n մոդուլով։ Մաթլաբը ներառում է ստանդարտ for և while ցիկլեր, բայց (ինչպես R- ի նման այլ ծրագրերում), վեկտորիզացված նոտայի օգտագործումը ևս խրախուսվում է և հաճախ ավելի արագ է իրականացվում։ Հետևյալ կոդը, ստացված magic.m ֆունկցիայից, n -ի կենտ արժեքների համար ստեղծում է մեջիք քառակուսի M (Մաթլաբի meshgrid ֆունկցիան օգտագործվում է այստեղ՝ 1:n պարունակող I  և J  քառակուսի մատրիցներ ստեղծելու համար).

[J,I] = meshgrid(1:n);
A = mod(I + J - (n + 3) / 2, n);
B = mod(I + 2 * J - 2, n);
M = n * A + B + 1;

Կառուցվածք 
Մաթլաբն աջակցում է կառուցվածքի տվյալների տիպերին։ Քանի որ Մաթլաբի բոլոր փոփոխականները զանգվածներ են, ավելի համարժեք անուն է «կառուցվածքային զանգված», որտեղ զանգվածի յուրաքանչյուր տարր ունի նույն դաշտային անունները։ Բացի այդ, Մաթլաբն աջակցում է դինամիկ դաշտային անվանումներին (դաշտի որոնումներին անունով, դաշտերի մանիպուլյացիաներով և այլն)։

Ֆունկցիաներ 
Մաթլաբի ֆունկցիա ստեղծելիս ֆայլի անունը պետք է համապատասխանի ֆայլում առաջին ֆունկցիայի անվանմանը։ Ֆունկցիայի թույլատրելի անունները կարող են պարունակել տառեր, թվեր կամ ընդգծման նշաններ։ Փոփոխականները և ֆունկցիաները զգայուն են նիշերի ռեգիստրի նկատմամբ։

Ֆունկցիայի նկարագրություն 
Մաթլաբն աջակցում է լամբդա հաշվարկային տարրերին` ներկայացնելով ֆունկցիայի նկարագրություն, կամ ֆունկցիայի մասին ծանոթագրություններ, որոնք իրականացվում են կա՛մ .m ֆայլերում, կա՛մ անանուն/ ներդրված ֆունկցիաներում։

Կլասսներ և օբյեկտի վրա հիմնված ծրագրավորման լեզու 
Մաթլաբն աջակցում է օբյեկտի վրա հիմնված ծրագրավորմանը` ներառյալ կլասսերը, ժառանգությունը, վիրտուալ ուղարկումը, փաթեթները, անցումային արժեքի իմաստաբանությունը և անցումային նշման իմաստաբանությունը։ Այնուամենայնիվ, շարահյուսությունը և տարրերի կանչերը զգալիորեն տարբերվում են այլ լեզուներից։ Մաթլաբն ունի ինչպես արժեքների կլասսներ, այնպես էլ հղումների կլասսներ, կախված նրանից, թե արդյոք կլասսի նկարագրությունը որպես սուպեր կլասս է (հղման կլասսերի համար), թե` ոչ (արժեքների կլասսերի համար)։

Մեթոդի կանչելը տարբերվում է արժեքի և հղման կլասսերից։ Մեթոդի կանչի օրինակ՝object.method();
Այն կարող է փոխել օբյեկտի ցանկացած անդամ միայն այն դեպքում, եթե օբյեկտը հանդիսանում է հղման կլասսի օրինակ, այլապես արժեքի կլասսի մեթոդները պետք է վերադարձնեն նոր օրինակ, եթե անհրաժեշտ է փոփոխել օբյեկտը։

Ստորև բերված է պարզ կլասսի օրինակ՝

classdef Hello
    methods
        function greet(obj)
            disp('Hello!')
        end
    end
end

Hello.m անունով ֆայլի մեջ դնելիս դա կարող է իրականացվել հետևյալ հրամաններով.
>> x = Hello();
>> x.greet();
Hello!

Գրաֆիկներ և գրաֆիկական ինտերֆեյսի ծրագրավորում 

 

Մաթլաբը սերտորեն ինտեգրված է գրաֆիկային-գծապատկերային հատկանիշներով։

Օրինակ, plot ֆունկցիան կարող է օգտագործվել երկու x և y վեկտորներից գրաֆիկ ստեղծելու համար։ Կոդը՝
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
Սա ստեղծում է սինուս ֆունկցիայի հետևյալ ցուցանիշը.

Մաթլաբն  աջակցում է նաև եռաչափ գրաֆիկայի ՝

Մաթլաբն աջակցում է նաև գրաֆիկական ինտերֆեյսի (GUI)։

Ինտերֆեյս կարող է ստեղծվել ծրագրային կոդի միջոցով կամ վիրտուալ դիզայնի միջավայրում, ինչպիսիք են GUIDE և App Designer միջավայրերը։

Ինտերֆեյս այլ լեզուների հետ 
Մաթլաբը կարող է կանչել C կամ Ֆորտրան ծրագրավորման լեզուներով գրված ֆունկցիաներ։ Ստեղծվում է ֆունկցիա-վահանակ, որը թույլ է տալիս փոխանցել և վերադարձնել Մաթլաբի տվյալների տեսակները։ MEX-ֆայլերը (գործարկվող Մաթլաբ ֆայլեր) դինամիկ կերպով վերբեռնված օբյեկտ ֆայլեր են, որոնք ստեղծվել են նման ֆունկցիաների կազմման միջոցով։  2014 թվականից ավելացավ երկկողմանի ինտերֆեյս Փայթոնի հետ։

Perl-ի, Ջավայյի, ԷքթիվԻքս-ի կամ .Նեթ-ի վրա գրված գրադարանները կարող են ուղղակիորեն կանչվել Մաթլաբից, և շատ Մաթլաբ գրադարաններ (օրինակ XML կամ SQL), օգտագործվում են Ջավայի կամ ԷքթիվԻքս-ի գրադարանների շուրջ։ Մաթլաբից Ջավա կանչելն ավելի բարդ է, բայց կարող է կատարվել Մաթլաբի գործիքների հավաքածուով, որը վաճառվում է առանձին ՄաթՎորքսով կամ jmi-իի (Ջավա-Մաթլաբ ինտերֆեյս) մեխանիզմով (որը չպետք է շփոթել Ջավայի մետատվյալների ոչ կապակցված ինտերֆեյսի հետ, որը ևս կոչվում է JMI): Ջավայի համար պաշտոնական Մաթլաբի API- ն ավելացվել է 2016 թվականին։

Որպես այլընտրանք Մաթվորքսում հասանելի ՄաՓադ շարժիչի վրա հիմնված սիմվոլիկ մաթեմատիկայի գործիքիով Մաթլաբը կարող է միացված լինել Մափըլին։

Գրադարաններ կան նաև ՄաթՄԼ ներմուծելու և արտահանելու համար։

Չինաստանի արգելքը 
2020 թվականին չինական պետական ԶԼՄ-ները հայտնում են, որ Մաթլաբը ԱՄՆ պատժամիջոցներով չեղարկել է Չինաստանի երկու համալսարանների ծառայություններ, և Չինաստանը հայտարարել է, որ դրան կպատասխանեն բաց աղբյուրների այլընտրանքների օգտագործմամբ և ներքին այլընտրանքների զարգացմամբ։

Այլընտրանքներ 
Մաթլաբին մի շարք մրցակիցներ կան։ Որոշ ուշագրավ օրինակներ են.

Մափըլ
ԻԴԼ
Վոլֆրամ Մաթեմատիկա։

Մաթլաբի համար կան նաև անվճար բաց կոդով այլընտրանքներ, մասնավորապես.

 ԳՆՈՒ Օքթավ
 Սքիլաբ
 ՖրիՄաթ
 Ջուլիա
 ՍեյջՄաթ

որոնք որոշ չափով համատեղելի են Մաթլաբ լեզվի հետ։ ԳՆՈՒ Օքթավն առանձնահատուկ է մյուսներից, քանի որ այն նպատակ ունի զուգակցվել Մաթլաբի շարահյուսության հետ։

Կան նաև գրադարաններ, որոնք գոյություն ունեցող լեզուներին նման ֆունկցիոնալություն են ավելացնում, ինչպիսիք են.

 ՆամՓայ/ՍքիՓայ/մաթփլոթլիբ Փայթոնի համար
 Perl Տվյալների լեզու Perl-ի համար  
 ՍքիՌուբի Ruby-ի համար
IT++ C++-ի համար 
 Նյումերիք.ջէյես  Ջավասկրիպտ-ի  համար։

Թողարկման պատմություն 

Մաթլաբի և իր պաշտոնական գործիքատուփերի փոփոխությունների ամբողջական ցուցակի համար կարդացեք Մաթլաբի թողարկման պատմություն աղյուսակի գրառումներ դաշտը։

Ծանոթագրություններ

Արտաքին հղումներ 

 
 
 
 

Ծրագրավորման լեզուներ
Ծրագրավորում