본문 바로가기

공부/프로그래밍

matlab(매틀랩) programing 강의 180319

이 강의는 2015b 버전을 기초로 만들어짐


randi(a,m,n)  1부터 a까지 mxn개의 개수 랜덤 발생

e) randi([-10 10],3,3) -10부터 10까지 사이의 개수에서 3x3 행렬 생성


지금부터 할 건 잘 숙지해두지 않으면 나중에 헷갈리거나 까먹을 수 있다.


A =

    10     9

     5     2

라 할 때


A를 한 열로 정리하고 싶으면

>> A(:)

ans =

    10

     5

     9

     2


A의 n번째 수와 m번째 수까지 표시 

이를 보면 배열의 번호는

1 3

2 4

이렇게 매겨지는 것을 알 수 있다.


>> A(2:3)

ans =

     5     9

>> A(1:3)

ans =

    10     5     9


2열만 표시
>> A(:,2)
ans =
     9
     2


>> A(:,1:2)     : A의 행은 관계없이 1부터 2열까지 표시

ans =

    10     9

     5     2


>> B=randi([0 10],3,5) 

B =

     4    10     9     8     7

    10     7    10     8     1

     8     0     7     4     7


>> B(2, 2:5)    : B의 2행 2~5열 표시

ans =


     7    10     8     1


>> B([1 3],2:5)  : B의 1, 3행의 2~5열 표시

ans =

    10     9     8     7

     0     7     4     7


>> B(:,2:end)  : B의 행은 관계없이 2열부터 마지막 열까지 표시

ans =

    10     9     8     7

     7    10     8     1

     0     7     4     7


max(A) : A라는 행렬에서 각 열마다 가장 큰 값 단 행이 하나일 경우 그 행에서 가장 큰 값


A =

    -5    13    -5    12

     1    10     4    -1

    -4     1     3     5

    -3    15    11     4

>> max(A)

ans =

     1    15    11    12


[x,k]=max(A) : A라는 행렬에서 x는 위에서 동일한 논리로 가장 큰 값을 받고 k는 해당 값의 인덱스(위치)를 나타낸다.

                   위치 번호는 행 먼저 세고 열을 세는 식으로 이뤄진다.

3x3 행렬일 경우 위치는

1 4 7

2 5 8

3 6 9

처럼 세어진다.


>> [x,k]=max(A)

x =

     1    15    11    12

k =

     2     4     4     1


max(A,[],2) 는 각 행마다 큰 값을 받아온다.

max(A')는 값은 같게 나오지만 행렬을 전치행렬(행렬을 교환하여 얻는 행렬)을 만들고 그것의 열마다 가장 큰 값을 얻어오는 것이므로

          값만 같게 나오지 형태는 다르게 나온다.


A =

     7     7     5     3

     8     7    10     8

     8     2     4     3

     3     2     6     6


>> max(A)

ans =

     8     7    10     8


>> max(A,[],2)   

ans =                

     7

    10

     8

     6


 >> max(A')

 ans =

         7    10     8     6


같은 논리를 적용받는 min(변수)가 있다.


sort(변수) : 변수의 행렬을 오름차순으로 정렬한다. 옵션을 붙여 내림차순으로 바꿀 수 있다.

sort(변수,'descend') 내림차순 sort(c,'ascend') 오름차순

sort(변수,1,'descend') : 열을 정렬

sort(변수,2,'descend') : 행을 정렬


a =

     6    12     4

     7    -2     3

     2     8    -9

                                  란 행렬이 있으면

>> sort(a,1)

ans =


     2    -2    -9

     6     8     3

     7    12     4

                                  각 열을 오름차순으로 정렬했다

>> sort(a,2)

ans =


     4     6    12

    -2     3     7

    -9     2     8

                                  각 행을 오름차순으로 정렬했다.


sum(변수) : 열마다 더한 값 행이 하나면 행을 더한 값

sum(변수,2) : 행마다 더한 값


cat(1, A, B) : A와 B 행렬을 위아래로 합친다 

A

B       <- 이런 형태

cat(2, A, B) : A와 B 행렬을 양옆으로 합친다.

A B    <- 이런 형태

cat(3, A, B) : A와 B를 3차원으로 합친다.

                xyz 좌표구간을 생각했을 때 위에 1,2가 xy축 안에서 합치는 거라면 3으로 합치는 cat은 z축으로 합친다


>> A=randi(10,2,2)

A =

     7    10

     9     6


>> B=randi(10,2,2)

B =

     2     3

     2     9


>> cat(1,A,B)

ans =

     7    10

     9     6

     2     3

     2     9


>> cat(2,A,B)

ans =

     7    10     2     3

     9     6     2     9


>> cat(3,A,B)

ans(:,:,1) =

     7    10

     9     6


ans(:,:,2) =

     2     3

     2     9


>> C=cat(1,A,B)

C =


     7    10

     9     6

     2     3

     2     9


>> C1=cat(2,A,B)

C1 =

     7    10     2     3

     9     6     2     9


>> C2=cat(3,A,B)

C2(:,:,1) =

     7    10

     9     6


C2(:,:,2) =

     2     3

     2     9


>> size(C2)

ans =

     2     2     2


>> size(C1)

ans =

     2     4


>> size(C1)

ans =

     2     4


>> size(C)

ans =

     4     2


행렬 간 계산에서는 기호 옆에 .을 붙여줘야 한다.

A.*B

A./B

A.\B

A.^B

728x90