수치해석학 - 2.2 MATLAB과 배열
2.2 MATLAB과 배열
MATLAB에서 배열
배열이란: MATLAB이 데이터를 저장하고 다루기 위해 사용하는 기본적인 형태를 말한다. 행(Row)이나 열(Column), 또는 행과 열로 정렬된 수들의 나열을 뜻한다.
1차원 배열 생성 방법
- 꺾은 괄호 [ ] 안에 배열의 원소들을 직접 입력
- 외부 데이터 파일로부터 행렬을 읽어 들임
- MATLAB 명령어나 자신이 만든 m 파일을 이용하여 행렬을 생성
배열의 각 요소
- 수 또는 미리 정의된 변수들 함수들이 포함된 수학식 등이 될 수 있음.
행 벡터(Row vector)로 만들기
- 꺾은 괄호[ ] 안에 알려진 원소들을 기입하며, 원소와 원소는 공백이나 콤마(,)로 구분
- 
>> 변수명 = [ 벡터 원소들의 나열]
>> t = [ 5, 7, 2, 4 10 29]  % 공백이나 콤마로 원소를 구분
>> t = [ 0, 0.4*pi, 0.8*pi, 1.2*pi, 1.5*pi, 2*pi]   % 수식 표현 가능
>> t = [ 0 0.4 0.8 1.2 1.5 2]*pi    % 위 결과와 같음
열 벡터(Column vector)를 생성하는 세 가지 방법
- 꺾은 괄호 속에서 원소 뒤에 세미콜론(;)을 입력하면 줄이 바뀜
- 각 원소 뒤에서 Enter 키를 눌러 바뀐 줄에 새로운 원소를 입력
- 행 벡터 입력을 마친 후 꺾은 괄호 뒤에 작은따옴표(')를 입력 하여 행 벡터를 전치 (Transpose)
콜론(:)을 사용하여 일정한 간격으로 커지는 원소들을 가진 벡터 생성
- 
>> 변수명 = [ m: d: n]
- m: 배열의 첫번째 원소
- q: 배열의 원소간 간격, 수학에서 등차수열의 공차와 같은 의미
- n: 배열의 마지막 원소는 n 을 초과할 수 없음, n이 생략된 경우 1을 의미
>> x = [ 1 : 2 : 8 ]
x =
    1   3   5   7
>> x = 15 : -3 : 8
x =
    15  12  9
>> x = ( 0 : 0.5 : 1 )*pi
x =
    0   1.5708  3.1416
>> t = -1 : 0.5 : 1
t =
    -1.0000   -0.5000   0   0.5000  1.0000
2차원 배열의 생성 방법
- 행렬(Matrix)로도 불리며 다수의 행과 열을 가짐.
- 세미콜론(;)이나 엔터(Enter) 키는 새로운 행(Row)을 만드는 역할을 함.
- 원소들 끝에 세미콜론을 입력하거나 엔터키를 누름으로써 원하는 행렬 생성.
>> A = [2 4 10; 16 3 7; 8 12 35]
A =
    2   4   10
    16  3   7
    8   12  35
>> A = [2 4 10
16 3 7
8 12 35]
A =
    2   4   10
    16  3   7
    8   12  35
콜론(:)을 이용하여 2차원 배열이 생성 방법
>> x = 4; y = 2; z = 8;   % 세 변수의 정의
>> A = [x y z; sin(x/z) x^2 x+y]
A =
    4.0000  2.0000  8.0000
    0.4794  16.0000 6.0000
>> A = [1:2:11; 0:5:25; linspace(10,10,60); 67 2 43 68 4 13]
A =
    1   3   5   7   9   11
    0   5   10  15  20  25
    10  20  30  40  50  60
    67  2   43  68  4   13
linspace을 이용하여 2차원 배열이 생성 방법
>> A = [2 4 10; linspace(8, 3, 3)]
A =
    2   4   10
    8   3   -2
>> A = [2 4 10; 8: -5: -2]
A =
    2   4   10
    8   3   -2
>>A = [A;10 20 30]
A =
    2   4   10
    8   3   -2
    10  20  30
배열 명령어
- zeros(m, n), ones(m, n), eye(n) 명령들은 특수한 원소들을 갖는 배열을 만드는 데 사용
>> Z = zeros(2:3)   % 원소가 모두0인 2x3 크기의 행렬
Z =
    0   0   0
    0   0   0
>> O = ones(2,2)    % 원소가 모두1인 2x2 크기의 행렬
O =
    1   1
    1   1
>> I = eye(3)   %  대각선 원소만 1이고 나머지, 원소들은 모두 0인 3x3의 행렬
I =
    1   0   0
    0   1   0
    0   0   1
전치(Transpose) 연산자
- 행 벡터를 열 벡터로, 열 벡터를 행 벡터로 변환.
- 행렬의 행과 열을 바꾸는 전치 연산.
- 벡터나 행렬 뒤에 따옴표(‘)를 첨부.
>> v = [10; 20; 30];
>> vt = v’
vt =
    10  20  30
>> x = [10 20 30]; xt = x’
xt =
    10  20  30
>> A = [1 2 3; 10 20 30]
A =
    1   2   3
    10  20  30
>> B = A’
B =
    1   10
    2   20
    3   30
배열에 접근
- 행렬이나 배열에서 한 개 또는 여러 개의 원소의 위치를 찾거나 접근 가능.
- 행렬이나 배열의 일부 원소들의 값을 갱신하거나 계산에서 특정 원소를 이용하려고 할 때.
- 일부 원소들을 새 변수에 할당하고자 할 때.
- 벡터에서 원소의 주소는 첫 번째 원소로부터 해당 원소의 순서.
- v(k)는 k번째의 벡터 v의 원소.
- 벡터의 한 원소를 나타내는 v(k)는 변수처럼 사용 가능.
- 수학식에도 사용 가능.
>> v = [12 8 9 6 28];
>> v(3)
ans =
    9
>> v(3) = 80;       % 세 번째 원소의 값 변경
>> v(4) = v(3)/8+3  % 수학식을 이용한 네 번째 원소의 변경
v =
    12  8   80  13  28
>> VCT = [35 46 78 23 5 14 81 3 55]
VCT =
    35  46  78  23  5   14  81  3   55
>> VCT(4)   % 네 번째 원소를 출력함.
ans =
    23
>> VCT(6) = 273     % 여섯 번째 원소에 새로운 값을 할당함.
VCT =
      35 46 78 23 5 273 81 3 55
>> VCT(2)+VCT(8)    % 수학식에 벡터 원소를 사용함.
ans =
    49
>> VCT(5)^VCT(8)+sqrt(VCT(7))
ans =
    134
행렬 원소의 주소 지정
- 행렬원소의 주소는 원소가 있는 행(row)과 열(column)의 위치를 말함.
- 행렬 A에서 A(r, c)는 행렬 A의 r번째 행과 c번째 열에 위치한 원소를 나타냄.
>> A = [5 10 9 8;18 1 7 11;29 14 3 6];  % 3x4행렬을생성함.
>> A(3,1) =13       % 위치 (3,1)의 원소에 새로운 값을 할당함.
A =
    5   10  9   8
    18  1   7   11
    13  14  3   6
>> A(2,1) = A(2,1)-A(2,4)       % 수학식에 원소를 사용함.
A =
    5   10  9   8
    7   1   7   11
    13  14  3   6
클론(;)을 이용한 배열 접근
- 콜론을 이용하여 벡터나 행렬의 일정 범위의 원소들을 지정할 수 있음.
- v(:) : 벡터 v의 모든 원소를 열벡터로 나타냄.
- v(m:n) : 벡터 v의 m 번째 원소에서 n 번째 원소까지의 원소들을 나타냄.
- end는 벡터나 행렬의 마지막 원소의 주소를 나타내는 데 사용 → 벡터의 경우 end는 명령어 length(벡터)의 실행 결과와 같은 값을 가짐.
>> v = [10 20 30 40 50];
>> v(3)
ans =
    30
>> w = v(2:4)
w =
    20  30  40
>> length(v)
ans =
    5
>> v = [10 20 30 40 50];
>> x = v(2:end)
x =
    20  30  40  50
>> y = v(2:length(v))
y =
    20  30  40  50
>> v(3:end) = 0
v =
    10  20   0   0   0
콜론(;)을 이용한 벡터 주소 지정
- 콜론을 이용하여 행렬 A의 일부 행이나 열을 지정할 수 있음.
A( :, n) : 행렬 A의 n번째 열(column)의 모든 원소를 가리킴. A(n, : ) : 행렬 A의 n번째 행(row)의 모든 원소를 가리킴. A(:, m:n) : 행렬 A의 m ~ n번째 열(column)의 모든 원소를 가리킴. A(m:n, :) : 행렬 A의 m ~ n번째 행(row)의 모든 원소를 가리킴. A(m:n, p:q) : m ~ n번째 행과 p ~ q번째 열에 해당하는 원소를 가리킴.
>> A = [2 4 13 9; 16 3 7 11;8 21 6 5];
>> C = A(2:3, 1:3)
C =
    16  3   7
    8   21  6
>> D = A(:, 2)
D =
    4   3
    2   1
>> E = A(1:2, :)
D =
    2   4   13  9
    16  3   7   11
반응형
    
    
    
  '수치해석' 카테고리의 다른 글
| 수치해석학 - 05. 비선형 방정식의 해 - 1 (0) | 2017.08.23 | 
|---|---|
| 수치해석학 - 04. 오차해석 - 진법, 수의 표시법, 오차 (2) | 2017.01.09 | 
| 수치해석학 - 2.1 MATLAB 개요 (0) | 2016.12.16 | 
| 수치해석학 - 1.1 수치해석의 정의 (0) | 2016.12.16 | 
댓글
이 글 공유하기
다른 글
- 
수치해석학 - 05. 비선형 방정식의 해 - 1수치해석학 - 05. 비선형 방정식의 해 - 12017.08.23
- 
수치해석학 - 04. 오차해석 - 진법, 수의 표시법, 오차수치해석학 - 04. 오차해석 - 진법, 수의 표시법, 오차2017.01.09
- 
수치해석학 - 2.1 MATLAB 개요수치해석학 - 2.1 MATLAB 개요2016.12.16
- 
수치해석학 - 1.1 수치해석의 정의수치해석학 - 1.1 수치해석의 정의2016.12.16