主要内容

이번역최신을있지않습니다않습니다。최신내용으로보려면를하십시오하십시오하십시오。

배열유형

다차원배열

MATLAB®환경의은가두를초과배열을합니다합니다합니다。다차원배열생성하는한은은,,,,那些,,,,兰德,,,,兰德중하나개의인수와호출것입니다입니다입니다。예를다음과같습니다。

r = randn(3,4,5);

이렇게하면분포의의요소개수가총3*4*5 = 60개인3×4×5배열만들어집니다만들어집니다。

3차원사각에서된방의온도같이같이같이같이같이차원물리적데이터를를수있습니다있습니다。또는一种(k)로일련의나타내거나一种((t)와같은행렬샘플나타낼수도있습니다있습니다。이두가지경우k번째행렬(我,j)번째요소또는tk번째행렬은A(i,j,k)로나타냅니다。

matlab버전버전의마방진과뒤러(durer)버전4차차마방진은의위치가바뀐이다릅니다다릅니다다릅니다많은마방진은위치교환하는방식생성수있습니다있습니다있습니다。다음명령문은

p = perms(1:4);

4!= 24인1:4순열을합니다。k번째순열은벡터p(k,:)입니다。그리고다음과같습니다。

a =魔术(4);M =零(4,4,24);k = 1:24 m(:,:,k)= a(:,p(k,:));结尾

24개개개개의의마방진이마방진이마방진이마방진이마방진이마방진이배열배열배열배열배열m에저장됩니다。m의크기다음과같습니다。

尺寸(M)ANS = 4 4 24

참고

이그림있는의차수는의결과와수있습니다있습니다있습니다。珀姆斯함수는입력의순열을반환하지만순열차수차수는는는는버전버전버전다다수있습니다있습니다。

다음명령문은

总和(m,d)

d번째첨자변경합구합니다구합니다。따라서다음을하면

总和(M,1)

24개개이포함포함1×4×24배열생성됩니다됩니다됩니다。

34 34 34 34

또한

总和(M,2)

24개개개벡터열열열열포함포함포함된된된된된된된된된된된된4×1×24배열배열됩니다

34 34 34 34

마지막으로다음은

s = sum(m,3)

3차원으로된된개행렬의구합니다구합니다구합니다。4×4×1이므로크기크기크기크기크기는는이므로이므로이므로됩니다됩니다됩니다됩니다됩니다됩니다됩니다됩니다

S = 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204

셀형배열

matlab의배열다른배열복사본요소로다차원입니다입니다입니다。细胞함수를빈구성된셀형을수있습니다있습니다있습니다。하지만이보다는여러중괄호중괄호{}로묶어을방식더더됩니다됩니다됩니다。다양한내용액세스하는경우첨자와함께사용합니다합니다합니다。예를다음입력합니다。

c = {a sum(a)prod(prod(a))}

이1×3셀형배열됩니다됩니다됩니다됩니다됩니다됩니다。세개셀은,열의으로된행벡터벡터,그리고그리고하는하는모든모든요소의곱곱으로있습니다있습니다。C는다음과표시됩니다。

c = [4x4 double] [1x4 double] [20922789888000]

이렇게표시는두개의셀은크기때문제한제한된에출력출력할할수수수없지만없지만없지만세번째숫자인숫자인16!

여기서할가지사항다음과같습니다같습니다。첫째로,여러셀한의을오려면속에를합니다합니다합니다。예를,C {1}은마방진이며C {3}은16!입니다。둘째로,셀형셀형에는다른의의포인터가아닌복사본이포함됩니다。이후에一种를변경해도C에는아무런이하지않습니다。

3차원을하여크기가가같은일련의저장수있습니다。셀형배열사용하여크기가서로다른일련의저장수도있습니다。예를다음과같습니다。

M =单元格(8,1);n = 1:8 m {n} =魔术(n);结束米

이경우크기각기다른생성됩니다됩니다。

m = [1] [2x2 double] [3x3 double] [4x4 double] [5x5 double] [6x6 double] [7x7 double] [8x8 double]

다음다음을통해통해있습니다을있습니다있습니다있습니다。

m {4}

문자와텍스트

matlab에를할는작은를합니다합니다합니다。예를다음과같습니다。

S ='Hello'

위의사용하여결과는지금다뤄왔던숫자형행렬또는숫자형배열유형유형과과과는는는는는는다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른다른

내부적문자숫자로저장되지만소수점으로는되지않습니다않습니다않습니다。다음명령문은

a = double(s)

문자형배열각에대한대한코드코드부동표현포함한숫자형행렬로변환합니다합니다。결과는같습니다。

a = 72 101 108 108 111

다음명령문은

s = char(a)

반대로변환합니다。

숫자를변환컴퓨터에서사용수있는한을확인할수있습니다있습니다。ASCII문자문자문자출력가능한정수정수정수정수32:127로표현됩니다。32미만정수출력수없는를나타냅니다나타냅니다나타냅니다。6×16배열정렬됩니다정렬됩니다정렬됩니다정렬됩니다정렬됩니다정렬됩니다정렬됩니다정렬됩니다정렬됩니다정렬됩니다정렬됩니다

f =重塑(32:127,16,6)';

ASCII문자문자에서가능가능문자는는는F+128로표현됩니다。이정수들로되는경우결과현재되는글꼴따라달라집니다달라집니다달라집니다。먼저다음을합니다합니다。

char(f)char(f+128)

그다음에서되는글꼴변경합니다합니다。글꼴을변경하려면탭의환경섹션에서기본설정>글꼴을클릭하십시오。코드라인탭을포함경우경우单身같은고정을하여탭를각기라인에합니다합니다합니다。

대괄호를결합텍스트가가됩니다됩니다됩니다。다음명령문은

h = [s,'world']

문자를하고같은결과생성합니다합니다。

h =你好世界

다음명령문은

v = [s;'世界']

문자를하고같은결과생성합니다합니다。

v =你好世界

여기서H'W'앞에는을삽입해야하며v의두모두가합니다합니다。결과로배열둘다배열입니다입니다。H는1×11배열이고v는2×5배열입니다。

서로다른이포함된본문조작하려면두방법을사용할수있습니다있습니다。문자형배열같은를만들거나문자형구성셀형배열사용하는것입니다입니다。문자형배열하는에는배열의행를동일만들어야합니다합니다합니다。이때짧은끝은으로채워집니다。char함수를이러한동작을자동수행수있습니다있습니다있습니다。예를다음과같습니다。

s = char('a','滚动','stone',“收集”,“动量”。

5×9문자형배열됩니다됩니다됩니다됩니다。

S =滚石乐队收集动力。

또는텍스트배열에할있습니다있습니다있습니다。예를다음과같습니다。

c = {'a';'滚动';'stone';'gathers';'势头。'}

5×1셀형셀형셀형됩니다됩니다됩니다됩니다됩니다됩니다됩니다됩니다됩니다。채우기가이유배열의각길이서로달라도때문입니다입니다입니다。

c ='a''''''''

다음을문자형을문자형벡터로셀형배열로수있습니다있습니다있습니다。

C =细胞tr(s)

또한다음이을역수행합니다합니다。

s = char(c)

구조체

구조체는matlab배열입니다。구조체의요소는텍스트필드지정자를통해할있습니다있습니다。예를다음과같습니다。

s.name ='ed plum';S.Score = 83;s.grade ='b+'

이경우세개인구조체가됩니다됩니다됩니다。

S =名称:'Ed Plum'分数:83年级:'B+'

matlab환경다른것과로역시배열요소추가로삽입할수있습니다있습니다。이경우각는여러의필드포함된입니다입니다입니다。필드는다음과한에하나씩추가할있고있고

s(2).name ='toni Miller';s(2).score = 91;s(2).grade ='a-';

하나의사용요소전체를할있습니다있습니다있습니다。

s(3)= struct('名称','Jerry Garcia',...'Score',70,'等级','c')

지금은가만출력하기충분한입니다입니다입니다。

s =带字段的1x3结构阵列:名称分数等级

여러가지으로한필드를를를배열로어셈할있습니다있습니다있습니다。이방법들은주로쉼표로구분된목록표기법을으로합니다。다음을입력경우

S.Score

다음을하는와합니다합니다。

s(1).score,s(2).Score,s(3).Score

그리고이는구분목록나타냅니다나타냅니다。

이러한목록하는표현식을대괄호로묶는경우경우에서에서목록각항목을배열에저장합니다합니다。Matlab에서에서에서에서는배열배열배열s에있는각의分数필드가숫자형행를합니다합니다합니다。

分数= [s.score]得分= 83 91 70 avg_score = sum(得分)/长度(得分)avg_score = 81.3333

텍스트필드하나(예:姓名)에서문자형을생성하려면s.name을사용생성되는구분된목록에char함수를하십시오。

名称= char(s.name)名称= Ed Plum Toni Miller Jerry Garcia

마찬가지,목록목록표현식중괄호로묶는으로으로姓名필드에서배열생성수도있습니다있습니다。

名称= {s.name}名称='Ed Plum''Toni Miller''Jerry Garcia'

구조체형배열각의를구조체에별도의변수에대입하려면출력값값을등호등호왼쪽왼쪽에지정지정하고하고하고모두모두대괄호로묶습니다。

[N1 N2 N3] = s.name n1 = Ed Plum N2 = Toni Miller N3 = Jerry Garcia

동적필드이름

구조체의데이터하기가장일반으로사용방법은할필드의의이름을지정지정하는입니다입니다입니다。또한동적을하여구조체데이터액세스수도있습니다있습니다있습니다。Matlab에서에서에서에실행가변으로표현합니다합니다합니다합니다합니다합니다。아래-에-괄호-괄호구문을사용하면하면表达이동적이름지정됩니다。

structname。(表达式)

표준matlab인덱싱인덱싱사용하여필드의를참조해보겠습니다。예를,表达을필드으로실행하고행7의열1에서25까지이값구하려면다음사용하십시오하십시오。

structname。(表达式)(7,1:25)

동적필드예。아래나와있는AVGSCORE함수는동적이름으로测试成绩구조체에서가져와서테스트점수계산합니다합니다。

函数AVG = AVGSCORE(testScore,Student,First,last)fork = first:last分数(k)= testScores。(student).week(k);end avg = sum(得分)/(最后 - 第一个 + 1);

이함수실행할때필드필드学生에각기값사용수있습니다있습니다。먼저,25주의에점수포함구조체초기화합니다합니다합니다。

testscores.ann_lane.week(1:25)= ... [95 89 76 82 79 92 94 92 89 81 75 93 ... 85 84 83 86 85 90 82 82 82 82 84 79 96 88 98];testscores.william_king.week(1:25)= ... [87 80 91 84 99 87 93 87 97 97 87 82 89 ... 86 82 90 98 79 92 84 90 90 90 93 84 78 81];

이제런타임동적필드이름하여하여测试成绩구조체에학생필드를제공하는으로으로AVGSCORE를실행합니다。

AVGSCORE(testscores,'ann_lane',7,22)ans = 85.2500 avgscore(testscores,'william_king',7,22)ans = 87.7500