MATLAB 은 공학적으로 굉장히 편리 한 툴입니다. 하지만 편리함 속에는 단점도 있는 게 사실 입니다. 쉽다고 함부로 쓰다가는 정말 예상치 못한 결과에 당황하는 경우가 있곤 합니다. 따라서 MATLAB 함수 등을 쓰실 때는 help 문 이나 예제 등을 통해 정확히 알고 난 이후에 이용하는 것이 좋습니다.
이번 포스팅에서는 그럼 기본 함수 몇 가지를 비롯한 몇몇 주의 할 점 들에 대해 설명 드리겠습니다.
첫 번째로 소개해 드릴 함 수는 sort() 함수 입니다. 함수 이름만 봐도 이게 정렬을 해주는 함수구나 하는 건 아실 겁니다.
예를 통해 설명해 보도록 하죠~
A=magic(3)
A =
8 1 6
3 5 7
4 9 2
A 에 대해 sort() 함수를 적용해 보면 다음과 같습니다.
A1=sort(A)
A1 =
3 1 2
4 5 6
8 9 7
각 열에 대해 오름차순으로 정렬이 되는 것을 보실 수 있습니다.
각 행 마다 정렬을 하기 위해서는 아래와 같이 dimension 값을 2로 설정 해 주면 됩니다.
A2=sort(A,2)
A2 =
1 6 8
3 5 7
2 4 9
그럼 내림차순으로 정렬을 한번 해 보죠. 내림차순을 하려면 'descend' 라는 인자를 하나 추가해 주면 됩니다. 다음과 같이 처리 해 보죠 각 열 별로 내림차순으로 정렬되는 것을 알 수 있습니다. 오름차순이 default 값 이지만 'ascend' 를 써 주기도 합니다.
A3=sort(A,'descend')
A3 =
8 9 7
4 5 6
3 1 2
다음으로 max() 함수에 대해 설명 드리겠습니다. max() 함수는 큰 값을 찾아 주는 함수 입니다.
max_A=max(A)
max_A =
8 9 7
두 매트릭스의 각 인자 중 큰 값을 찾아 낼 수도 있습니다. 다음과 같이 매트릭스 B 를 만들어 보죠
B=ones(3)*5
B =
5 5 5
5 5 5
5 5 5
다음 결과에서는 matrix A, B 의 각 인자에 대해 비교를 해서 큰 값을 뽑아 낸 것을 알 수가 있습니다. 이렇게 이용할 때는 당연히 A, B 의 크기가 같아야 합니다.
max_AB=max(A,B)
max_AB =
8 5 6
5 5 7
5 9 5
그럼 각 행 별로 가장 큰 값을 찾을 때는 다음 코드와 같이 중간에 [] 를 써주고 세 번째 인자에 dimension을 써줘야 합니다. 이 부분이 max() 함수를 사용하면서 많이 실수 하는 부분입니다.
max_A_r=max(A,[],2)
max_A_r =
8
7
9
max() 함수는 최대 값과 그 인덱스도 알려 줍니다. 다음과 같이 써주면 됩니다.
[max_A, max_I] = max(A)
max_A =
8 9 7
max_I =
1 3 2
위 결과를 보면 첫 번째 열에서는 8 이 가장 크고 1 열에서의 인덱스는 1 이라는 것을 알 수 있습니다. 두 번째 열에서는 9 가 가장 크고 2열에서의 인덱스는 3, 세 번째 열에서는 7이 가장 크고 3열에서의 인덱스는 2 라는걸 알 수가 있죠.
이상으로 max() 함수의 설명을 마치겠습니다. min() 함수는 최소값을 구하는 함수이며 그 사용법은 max() 함수와 완전 동일 합니다.
다음으로 if ~ end 사용시의 주의 사항에 대해 말씀 드리겠습니다. if 문은 다음과 같이 조건이 만족하면 그 안의 내용을 실행하게 됩니다. m 파일 작성시 기본적으로 ;(세미콜론)을 붙여 주곤 하지만 <if 조건 > 라인의 뒤에는 세미콜론을 안 붙여도 됩니다. 간혹 다 붙이시는 분들이 있어서 말씀 드리는 겁니다.
if 조건
statement ;
end
이때 조건에 대한 판단이 굉장히 중요 합니다. if 문은 조건이 벡터 인 경우 그 결과가 다 참이어야만 if 안의 내용을 실행 합니다.
다음과 같은 예를 보죠
A=0
if [1 1 1]
A=100;
end
A =
100
위 예에서는 [1 1 1] 이므로 모두 참 입니다. 따라서 A=100 이 실행이 됩니다.
하지만 아래 코드에서는 0 이 거짓이므로 A=200 이 실행이 안 되는 거죠. 이 부분을 간과하고 코딩 시에는 정말 이해 못할 결과들이 많이 나오니 주의 하시길 바랍니다.
A=0
if [0 1 1]
A=200;
end
A =
0
마지막으로 for ~ end 문에 대해 설명 드리겠습니다. 기본적으로는 다음과 같이 씁니다. <for n=1:5 > 뒤에는 세미콜론을 안 붙여도 됩니다.
for n=1:5
disp(n)
end
1
2
3
4
5
이렇게 쓸 수도 있습니다.
n=1:5
n =
1 2 3 4 5
for k=n
disp(k)
end
1
2
3
4
5
for 문에서 등호의 오른쪽이 벡터일 경우에는 루프 마다 그 값들을 차례로 k 라는 변수에 넣고 실행이 되게 됩니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB PDF, CDF, CCDF (6) | 2011.03.23 |
---|---|
MATLAB 함수 만들기, inline, function handle (0) | 2011.03.21 |
MATLAB cross product, 삼각형의 면적, 평행 육면체의 부피 (0) | 2011.03.21 |
MATLAB input() (0) | 2011.03.21 |
MATLAB erf, erfc, Q- function (2) | 2011.03.19 |
MATLAB BPSK BER simulation in AWGN channel (77) | 2011.03.19 |
MATLAB 반올림 관련 함수들 round, fix, ceil, floor (4) | 2011.03.19 |
MATLAB interpolation, interp1() (0) | 2011.03.19 |
댓글