수치해석학 - 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. 비선형 방정식의 해 - 1
2017.08.23 -
수치해석학 - 04. 오차해석 - 진법, 수의 표시법, 오차
수치해석학 - 04. 오차해석 - 진법, 수의 표시법, 오차
2017.01.09 -
수치해석학 - 2.1 MATLAB 개요
수치해석학 - 2.1 MATLAB 개요
2016.12.16 -
수치해석학 - 1.1 수치해석의 정의
수치해석학 - 1.1 수치해석의 정의
2016.12.16