일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 태그를 입력해 주세요.
- 유주
- 후한서
- 창평
- 히스토그램
- 신라
- 단군
- 선형회귀분석
- 패수
- 통계학
- 한서
- 한서지리지
- 지리지
- categorical variable
- 독사방여기요
- 우분투
- Histogram
- 기자조선
- R
- post hoc test
- t test
- ANOVA
- repeated measures ANOVA
- spss
- linear regression
- 기자
- 풍백
- 고구려
- 낙랑군
- 통계
- Today
- Total
獨斷論
산술 연산자들, 행렬의 곱셈 나눗셈 덧셈 연립방정식 등등 (Matlab 사용법 6) 본문
Matlab에서 사용되는 기본적인 산술연산자들을 알아보자.
덧셈 +
그냥 '+'를 사용하는데 행렬에도 사용가능하다.
>> A = [1 2; 3 4];
>> b = 2;
>> A + b
ans =
3 4
5 6
위의 예를 보면, 행렬에 스칼라를 더할때도 그냥 '+'를 사용하였다. 행렬의 모든 원소에 b의 값을 더했다.
행렬끼리의 덧셈에도 사용한다.
>> A = [1 2; 3 4];
>> B = [10 20; 30 40];
>> C = A + B
C =
11 22
33 44
뺄셈 -
위 덧셈의 예에서 '+' 대신에 '-'를 사용하면 된다.
원소끼리 곱셈 .*
행렬의 곱셈이 아니라 행렬의 원소끼리 곱하는 것을 말한다.
>> A = [1 2 3];
>> B = [100 0 2];
>> A .* B
ans =
100 0 6
원소끼리 나눗셈 ./
행렬의 원소끼리 나누는 것을 말한다.
>> A = [2 4 6 8; 3 5 7 9];
>> B = 10 * ones(2,4)
B =
10 10 10 10
10 10 10 10
>> x = A ./ B
x =
0.2000 0.4000 0.6000 0.8000
0.3000 0.5000 0.7000 0.9000
>> c = 5;
>> D = magic(4);
>> x = c ./ D
x =
0.3125 2.5000 1.6667 0.3846
1.0000 0.4545 0.5000 0.6250
0.5556 0.7143 0.8333 0.4167
1.2500 0.3571 0.3333 5.0000
위 예에서 A의 각 원소를 B의 각 원소로 나누었다. B의 모든 원소가 10이므로 모든 원소를 10으로 나눈 꼴이 된다.
c는 스칼라 5인데 여기에 magic(4)로 4x4의 행렬을 만든 후, 5를 D의 각 원소로 나눈 값을 각각 행렬로 저장했다.
원소끼리 왼쪽나눔 .\
보통 연산은 왼쪽수를 오른쪽수로 나누는데 이건 반대로 오른쪽 수를 왼쪽수로 나누는 것이다.
예를 들어 위에 ./의 연산을 반대로 해보자.
>> B .\ A
ans =
0.2000 0.4000 0.6000 0.8000
0.3000 0.5000 0.7000 0.9000
>> D .\ c
ans =
0.3125 2.5000 1.6667 0.3846
1.0000 0.4545 0.5000 0.6250
0.5556 0.7143 0.8333 0.4167
1.2500 0.3571 0.3333 5.0000
결과가 같다.
제곱 .^
행렬의 각 원소에 3 제곱을 해보자.
>> A
A =
2 4 6 8
3 5 7 9
>> A .^ 3
ans =
8 64 216 512
27 125 343 729
행렬 각각의 원소의 역수를 구하는데도 사용할수 있다.
>> A .^ -1
ans =
0.5000 0.2500 0.1667 0.1250
0.3333 0.2000 0.1429 0.1111
행렬의 곱셈 *
벡터의 곱셈과 행렬의 곱셈에 이용된다.
>> A = [1 2 3; 4 5 6; 7 8 9];
>> B = [1 0 -1; 5 6 3; 0 0 1];
>> A * B
ans =
11 12 8
29 30 17
47 48 26
>> B * inv(B)
ans =
1 0 0
0 1 0
0 0 1
다 알다시피 역행렬을 곱하면 단위행렬이 나온다.
선형연립방정식 풀기 mrdivide 또는 /
xA = B의 연립방정식을 푸는데 사용된다.
사용하는 방법은 아래와 같다.
x = B/A
x = mrdivide(B, A)
연립방정식을 푸는 예를 들어보면
>> A = [1 1 3; 2 0 4; -1 6 -1];
>> B = [2 19 8];
>> x = B/A;>> x
x =
1.0000 2.0000 3.0000
Underdetermined system의 최소자승법(least squares)에도 사용될수 있다.
>> C = [1 0; 2 0; 1 0];
>> D = [1 2];
>> x = D / C;
Warning: Rank deficient, rank = 1, tol = 1.332268e-15.
>> x
x =
0 0.5000 0
선형연립방정식 풀기 mldivide 또는 \
Ax = B의 연립방정식을 푸는데 이용된다.
사용방법은 아래와 같다. 위 xA = B와 다른점을 주의해야만 한다.
x = A\B
x = mldivide(A, B)
사용예를 들어보자.
우선 연립방정식의 예를 들어보면
>> A = [1 2 -1; 1 0 6; 3 4 -1];
>> B = [2; 19; 8];
>> x = A \ B;
>> x
x =
1.0000
2.0000
3.0000
Underdetermined system의 최소자승법(least sqaures)에 사용된다.
>> A = [1 2 0; 0 4 3];
>> b = [8; 18];
>> x = A \ b
x =
0
4.0000
0.6667
행렬 원소의 합
sum()을 이용하면 쉽다.
열방향으로 더하고 싶을땐 아래와 같이 한다.
>> A
A =
1 2 0
0 4 3
>> sum(A)
ans =
1 6 3
행방향으로 더하고 싶을땐 아래와 같이 한다.
>> sum(A, 2)
ans =
3
7