[matlab] 1.matlab의 기초 문법(1)


간단한 계산 명령어



명령어를 입력한 후 엔터를 누르면 MATLAM이 명령어를 실행합니다~

그리고 명령어가 실행되면 입력한 명령어 다음 줄부터 실행된 결과물이 표시됩니다.

그럼 먼저 변수에 숫자를 대입하는 것부터 해보겠습니다.

 >>a=1	%a에 1대입
 a=1	%실행된 결과물 표시 



간단하죠?? 명령어를 적고 enter만 누르면 됩니다.

이번에는 행렬을 한 번 생성해보겠습니다.


%1행 3열(1*3) 행렬 생성

 >>mat=[1 2 3]
 mat = 1   2   3

%3행 1열(3*1) 행렬 생성

 >>mat=[1; 2; 3]
mat = 
      1
      2
      3

%3행 3열(3*3) 행렬 생성

 >>mat=[1 2 3; 4 5 6; 7 8 9]
 mat = 
       1   2   3
       4   5   6
       7   8   9



위에 보시면 행을 ;로 구분짓는 것을 볼 수 있습니다.

다음은 matlab에서 행렬에 사용하는 연산입니다~


%3*1행렬 b

 >>b=[1; 2; 3]
 b = 
     1
     2
     3
     
%b행렬을 c에 대입

 >>c=b
 c = 
     1
     2
     3

%b의 전치행렬을 c에 대입

 >>c=b'
 c = 1   2   3

%b의 2행 1열의 원소 출력

 >>b(2,1)
 ans = 2



위에서 행렬 b의 2행 1열의 원소를 출력할 때 ans가 나옵니다.

ans은 계산된 가장 마지막의 결과 값이 저장됩니다.

예를 들어보겠습니다.


 >>3*3
 ans=9

 >>5*3
 ans = 15

 >>4*2
 ans = 8

 >>ans
 ans = 8	%가장 마지막 결과 값이 저장됩니다.



ans의 값은 계속 바뀌기에 ans를 이용해서 코드를 짜기보다는,

그 결과값을 다른 변수에 대입하는 것이 좋습니다.

그리고 명령어 다음 줄에 결과물이 출력되는데 출력하지 않게 하려면,

세미콜론(;)을 붙이면 됩니다.


 >>a=1;b=2,c=3;
 b = 2 %세미콜론을 붙이지 않은 b만 출력



다른 연산을 계속해서 알아보겠습니다.


%행렬 b
 >>b=[1 2 3]; %세미콜론을 붙였기에 출력은 되지 않습니다.

%b의 각원소를 제곱한다.

 >>b.^2
 ans = 1   4   9

%a행렬의 각 원소와 b 행렬의 각 원소를 곱한다.

 >>a=[7 8 9];
 >>a.*b
 ans = 7   16   27

%a벡터와 b벡터의 내적

 >> a*b' %전치행렬을 이용합니다
 ans= 50



다음은 유용한 행렬들을 생성하는 방법입니다.


%3*3 영행렬 생성

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

%A라는 이름의 2*4 영행렬 생성

 >>A=zeros(2,4)
 A = 
     0   0   0   0
     0   0   0   0

%행렬 A와 같은 크기의 영행렬을 생성

 >>zeros(size(A));
 ans = 
       0   0   0   0
       0   0   0   0
       
%크기가 3인 단위행렬 생성

 >>eye(3)
 ans = 
       1   0   0
       0   1   0
       0   0   1

%각 원소 값들이 1인 3*3 행렬 생성

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

%각 원소 값들이 2인 3*3 행렬 생성

 >>2*ones(3)
 ans = 
       2   2   2
       2   2   2
       2   2   2



아 그리고 다른 언어와 마찬가지로 MATLAB은 대소문자를 구분합니다~

행렬의 연산을 더 알아보겠습니다!


%행렬 A,B

 >>A=[1 2; 3 4]
 A = 
     1   2
     3   4
      
 >>B=[5 6; 7 8]
 B = 
     5   6
     7   8
     
%A행렬의 각 열의 원소들의 합

 >>sum(A) or sum(A,1)
 ans = 4   6

%A행렬의 각 행의 원소들의 합

 >>sum(A')
 ans = 3   7

 >>sum(A,2)
 ans = 3
      7

%sum(A)의 각 원소들의 합

 >>sum(sum(A))
 ans = 10

%A행렬의 각 열의 최댓값

 >>max(A)
 ans = 3   4

%A행렬의 각 열의 최솟값

 >>min(A)
 ans = 1   2

%max(A)의 최댓값

 >>max(max(A))
 ans = 4

%min(A)의 최솟값

 >>min(min(A))
 ans = 1

%A행렬과 B행렬의 각 원소들의 합

 >>A+B
 ans = 
       6    8
       10   12

%A행렬과 B행렬의 각 원소들의 차

 >>A-B
 ans = 
       -4   -4
       -4   -4

%A행렬의 각 원소에 2씩 더한 값

 >>A+2
 ans = 
       3   4
       5   6

%size로 벡터 또는 행렬의 크기를 알 수 있습니다.

 >>size(A)
 ans = 2   2

%length로 벡터의 길이를 알 수 있습니다.

 >>C=[1 2 3];
 >>length(C)
 ans = 3

%length는 행렬의 행과 열 중에 큰 값을 출력합니다.

 >>C=[1 2 3; 4 5 6];
 >>length(C)
 ans = 3

%행렬 곱

 >>A*B
 ans = 
       19   22
       43   50

%A와 B의 역행렬과의 행렬곱

 >>A/B or A*inv(B);

%A의 역행렬과 B와의 행렬곱

 >>A\B or inv(A)*B;

%A의 제곱

 >>A^2 or A*A;

%A와 B의 원소를 대응시켜서 곱함

 >>A.*B; %이 때 A와 B의 크기는 정확하게 일치해야합니다.

%A의 원소에 B의 원소를 대응시켜 제곱함

 >>A.^B;


%연산자 앞에 .이 붙게 되면 행렬의 같은 위치에 있는 각각의 원소끼리 연산을 수행하라는 의미입니다.



이제 행령의 일부나 전체를 불러오는 표현을 배워보겠습니다.


 >>A=[1 1 1 1; 2 2 2 2; 3 3 3 3; 4 4 4 4]
 A = 
     1   1   1   1
     2   2   2   2
     3   3   3   3
     4   4   4   4

 >>A(2, 1:4) %2행과 1열~4열 겹치는 부분 출력
 ans = 2   2   2   2

 >>A(2,:) % :는 행렬에서 전체를 나타내는 표현입니다.
 ans = 2   2   2   2

 >>A(2:3,2:3) %2~3행과 2~3열 겹치는 부분 출력
 ans = 
       2   2
       3   3



그 다음은 숫자의 연산에 관한 함수입니다.


%절댓값

 >>abs(-3)
 ans = 3

%가장 가까운 정수(반올림)

 >>round(1.24)
 ans = 1

%올림

 >>ceil(1.24)
 ans = 2

%내림

 >>floor(1.24)
 ans = 1

%0 방향으로 반올림

 >>fix(1.24)
 ans = 1

%제곱 근

 >>sqrt(2); %루트 2

%실수부, 허수부

 >>real(3+2i),imag(3+2i)
 ans = 3 ans = 2

%나머지 연산

 >>mod(5,4)
 ans = 1

 >>mod([1,2,3,4,5],2)
 ans = 1  0  1  0  1

 >>A=[1 2 3; 4 5 6];
 >>mod(A,2)
 ans = 
       1   0   1
       0   1   0

%단, 음수일 때는 조심하여야 합니다.

 >>mod(10,-4)
 ans = -2 %정수론에서 나머지는 음이 아니라고 했던 것과 다릅니다.

%나머지를 음수가 아니게 하려면 rem을 이용합니다.

 >>rem(10,-4)
 ans = 2

%rem와 mod는 양의 실수일 때는 동일하나 음의 실수일 때 mod는 나머지가 음수여도 되고,

%rem은 나머지가 음수이면 안됩니다.



마지막으로 유용한 명령어들을 알아보겠습니다.



%1~10까지의 수를 원소로 하는 배열

 >>A=[1:10]
 A = 1   2   3   4   5   6   7   8   9   10




1. 줄넘기기 
명령어가 너무 길어 다음 줄로 넘어가고 싶을 때 ...을 사용합니다.


2. 명령어의 앞에 %를 입력하면 주석으로 처리됩니다.


3. command window에 표시되었던 모든 내용을 지우고 싶으면 clc라고 입력합니다.


4. Figure에 나타난 모든 그림을 지우고 싶을 때는 clf를 입력합니다.


5. 변수 및 배열에 할당된 값들을 모두 삭제할 때는 clear를 입력합니다.

모든 변수 삭제 : clear all

특정 변수만을 삭제 : clear 특정변수


6. 사용 중인 변수들의 이름을 알고 싶으면 who를 입력합니다.


사용 중인 변수들의 size를 알고 싶을 때는 whos를 입력합니다