아래 글에서는 Powershell 에서 Cartesian Product 를 구하는 방법에 대해 설명드렸었는데~
2013/08/18 - [powershell] - Powershell 경우의 수 조합 다 구하기(Cartesian Product)
이번 포스팅에서는 MATLAB에서 Cartesian Product 를 구하는 방법에 대해 설명 드리려 합니다.
사실 MATLAB 에서 Cartesian Product 를 구하는 방법은 매우 간단합니다.
바로 ndgrid() 함수를 이용하는 방법인데요~
다음과 같은 set 에 대해 조합의 경우의 수를 구해보죠~
A=[1 2];
B=[3 4];
C=[5 6];
경우의 수는 2 x 2 x 2 니까 8 개가 나오겠고 단순히 생각하면 for 문을 3개 중첩되게 만들면 해결 되겠지만~ 이보다는 ndgrid() 함수를 사용해서 아래와 같이 코딩하는게 더 좋은 방법이라고 생각됩니다.
A=[1 2];
B=[3 4];
C=[5 6];
sets = {A, B, C};
[x y z] = ndgrid(sets{:});
cartProd = [x(:) y(:) z(:)];
보시다 시피 굉장히 간단하게 구해지죠~ 위 코드를 실행 시켜보면 cartProd 변수에 결과가 저장되지만 아래 결과처럼 첫번째 열이 정렬이 안 되서 나옵니다.
경우에 따라 정렬이 필요하신 경우에는 sortrows() 함수를 사용해서 정렬 하시면 됩니다. sortrows() 함수의 두번째 인자는 정렬 기준이 되는 column index 를 의미 합니다.
2번째 column 을 기준으로 정렬하고 싶으신 분들은 아래 코드의 두번째 인자인 1 을 2로 바꾸시면 되겠죠~
sorted_cartProd =sortrows(cartProd, 1)
아래 주소에는 이에 대한 cartesianProduct() 라는 함수도 소개되고 있으니 필요하신 분들은 사용해 보시기 바랍니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB hash table 사용하기 (0) | 2013.10.22 |
---|---|
MATLAB Batman Equation (0) | 2013.10.20 |
MATLAB 시작 폴더 변경 및 startup.m 파일 설정 (0) | 2013.09.30 |
MATLAB filter() 함수의 고급 사용 (0) | 2013.09.21 |
MATLAB에서 sqlite 사용하기 (0) | 2013.06.16 |
MATLAB Gibbs Phenomenon (0) | 2013.04.10 |
MATLAB 로그 스케일 그래프 그리기 semilogx(),semilogy(), loglog() (0) | 2013.01.29 |
MATLAB recursive 파일 검색 (0) | 2012.12.08 |
댓글