본문 바로가기
programming language/MATLAB

MATLAB MAP data structure

by 남성 2012. 6. 10.

MATLAB 은 보통 수치 분석의 용도로 많이 사용 됩니다. 


비싼 툴이니 만큼 어려운 수학들을 굉장히 쉽게 처리 할 수 있어서 너무나 좋은 툴이라고 생각을 했죠~

 

반면에 MATLAB 을 사용하면서 아쉬웠던 부분도 있었는데~ 


hash 또는 dictionary 형태의 데이터 타입에 대한 지원이었습니다. 그런데.. 비싼놈은 뭔가 다르더군요.

 

있었는데 제가 몰랐던 것이었습니다. ㅡㅡ;

 

2008b 버전부터 Map Data Structure 를 제공해 주고 있더군요. 아~~ 왜 이걸 지금 알았지.. ㅡㅡ;

 

hash 나 dictionary 형태의 데이터 구조는 요즘과 같이 검색이 일반화된 시대에 더욱더 광범위하게 사용되는 데이터 타입이라고 생각이 되는데요~

 

바로 key 와 value 의 형태로 자료를 저장해서 key 만으로 자료를 찾을 수 있게 해주는 데이터 타입입니다.

 


 

각 나라들의 수도를 저장하는 데이터 타입을 예로 해서 설명해 보겠습니다.

 

아래는 예로 설명하기 위한 나라와 수도에 대한 표 입니다. 


 나라

수도 

Korea

Seoul 

USA

Washington  

Japan

Tokyo

China 

Beijing 










위 표에서 key 는 나라로 하겠습니다.

 

위 표에 대한 데이터의 정의는 아래와 같이 합니다.

 

Map_ContCapi= containers.Map({'Korea', 'USA', 'Japan', 'China'}, {'Seoul','Washington','Tokyo', 'Beijing'});

 

이후에 프랑스의 수도 파리를 추가 하고 싶다면 ~ 요렇게 합니다. 굉장히 직관 적이죠~

 

Map_ContCapi('France')='Paris';

 

Map_ContCapi 라는 map objecy 의 키를 알고 싶을 때는 멤버 함수인 keys 라는 함수를 이용합니다.

 

Map_ContCapi.keys 하면 결과는 요렇게 나옵니다.

   

ans =

 

'China' 'France' 'Japan' 'Korea' 'USA'

 

value 를 알고 싶을때는? Map_ContCapi.values 하면 되고요~ 아래와 같이 나오죠~

 

ans =

 

'Beijing' 'Paris' 'Tokyo' 'Seoul' 'Washington'

 

이제 가장 중요한 찾기 인데요~

 

찾기야 너무나 간단하죠~

 

S='USA' ;

if isKey(Map_ContCapi,S)     % Map_ContCapi 에 USA 라는 키가 정의되어 있다면~

    fprintf('%s 의 수도는 %s 입니다. \n',S, Map_ContCapi(S))

end

 

command 창에 결과는 요렇게~~ 나옵니다.

 

USA 의 수도는 Washington 입니다.

 

좀더 자세한 설명은 MATLAB help 문서를 참조 하시길~


댓글0