MATLAB 의 rot90() 함수는 matrix 를 시계 반대방향으로 돌리는 기능을 하는 함수입니다.
x=magic(4)
x =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
위 x 에 대하여 다음과 같이 하면 시계 방대방향으로 90 도 돌리게 됩니다.
x1=rot90(x)
x1 =
13 8 12 1
3 10 6 15
2 11 7 14
16 5 9 4
위 x 에 90 도씩 3번 시계 방대방향으로 돌리고 싶다면 다음과 같이 하면 됩니다.
x2=rot90(x,3)
x2 =
4 9 5 16
14 7 11 2
15 6 10 3
1 12 8 13
다음으로 설명한 명령어는 triu(), tril() 함수 입니다.
triu() 함수는 upper triangular 부분을 구하는 함수이며 tril() 함수는 lower triangular 부분을 구하는 함수입니다.
triu() 함수를 실행하면 다음과 같이 됩니다. diagonal 을 포함하여 upper triangular 부분만 남아 있고 나머지는 다 0 이 되게 됩니다.
x_triu=triu(x)
x_triu =
16 2 3 13
0 11 10 8
0 0 6 12
0 0 0 1
triu() 함수에 diagonal 로 부터의 offset 을 줘서 다음과 같이 diagonal 부분을 제외하고 선택도 가능합니다.
x_triu2=triu(x,1)
x_triu2 =
0 2 3 13
0 0 10 8
0 0 0 12
0 0 0 0
triu() 함수에 – 의 옵셋을 주게 되면 diagonal 아래 방향으로 옵셋을 주게 됩니다.
x_triu3=triu(x,-1)
x_triu3 =
16 2 3 13
5 11 10 8
0 7 6 12
0 0 15 1
tril() 함수는 다음과 같이 사용합니다.
x_tril= tril(x)
x_tril =
16 0 0 0
5 11 0 0
9 7 6 0
4 14 15 1
triu() 함수와 사용방법은 비슷하지만 옵셋을 줄 때는 조심하셔야 합니다.
x_tril1= tril(x,1)
x_tril1 =
16 2 0 0
5 11 10 0
9 7 6 12
4 14 15 1
triu() 함수에서 + 옵셋을 줬을 때는 triangular 의 크기가 줄어들었는데 tril() 함수에서는 + 옵셋을 줬을 때 triangular 의 크기가 커지는 것을 알 수 있습니다.
tril(), triu() 함수의 옵셋은 무조건 diagonal 을 기준으로 + 면 위쪽으로 – 면 아래 쪽으로 triangle 의 크기가 변한다고 알고 계시면 됩니다.
tril() 함수에서 -1로 옵셋을 주니깐 삼각형이 줄어들게 됩니다.
x_tril2= tril(x,-1)
x_tril2 =
0 0 0 0
5 0 0 0
9 7 0 0
4 14 15 0
MATLAB 에서 '(쉼표) 는 hermitian transpose 를 의미 합니다.
hermitian transpose 란 complex conjugate transpose 를 하는 것입니다.
다음과 같은 matrix 에 대해 hermitian transpose 를 취해 보죠
x=magic(3)+i*magic(3)
x =
8.0000 + 8.0000i 1.0000 + 1.0000i 6.0000 + 6.0000i
3.0000 + 3.0000i 5.0000 + 5.0000i 7.0000 + 7.0000i
4.0000 + 4.0000i 9.0000 + 9.0000i 2.0000 + 2.0000i
위 결과를 보면 imaginary 의 부호가 바뀌었고 transpose 된 것을 확인 할 수 있습니다.
x'
ans =
8.0000 - 8.0000i 3.0000 - 3.0000i 4.0000 - 4.0000i
1.0000 - 1.0000i 5.0000 - 5.0000i 9.0000 - 9.0000i
6.0000 - 6.0000i 7.0000 - 7.0000i 2.0000 - 2.0000i
complex conjugate 는 안 하고 transpose 만 할 때는 .' (점 - 쉼표)를 이용해야 합니다.
x.'
ans =
8.0000 + 8.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i
1.0000 + 1.0000i 5.0000 + 5.0000i 9.0000 + 9.0000i
6.0000 + 6.0000i 7.0000 + 7.0000i 2.0000 + 2.0000i
MATLAB 에서 대소문자 변환 관련한 함수로는 upper(), lower() 함수가 있습니다.
upper()함수는 대문자로 변환해 주며
X=upper('I am a man')
X =
I AM A MAN
lower() 함수는 소문자로 변환 해주는 함수 입니다.
lower(X)
ans =
i am a man
'programming language > MATLAB' 카테고리의 다른 글
MATLAB Symbolic math 미적분, diff(), int() (0) | 2011.04.05 |
---|---|
MATLAB 누적합 cumsum(), 누적곱 cumprod(), 누적 사다리꼴 수치 적분 cumtrapz() (0) | 2011.04.04 |
MATLAB 수학이 쉬워지는 symbolic math toolbox (4) | 2011.04.04 |
MATLAB Bisection method(이분법) (1262) | 2011.04.03 |
MATLAB diff(), sortrows(), (0) | 2011.04.03 |
MATLAB .* ./ .^ 연산 (0) | 2011.04.01 |
MATLAB index (0) | 2011.04.01 |
MATLAB shortcut, 단축키 설정 (0) | 2011.04.01 |
댓글