2014-05-09 4 views
1

Matlab에서 다음 작업을 수행해야합니다. 탭이나 쉼표로 구분 된 파일에 이름 목록이 있습니다. 예를 들어,Matlab : 파일의 고유 문자열 수를 계산하십시오.

Gregor M. Suka 

Mark A. Pizda 

Matthew A. Blyad 

Mark A. Pizda 

나는 1 개 발생했을 마크 A. Pizda을 제외한 모든 matlab에로이 목록을로드하고 즉 파일에 각 이름의 발생을 계산하고자하는 마크 2.

있을 것입니다

저는 보통 howmany.m을 사용합니다.하지만 textscan 함수로 배열을로드하면 howmany.m count를 통해 실행할 수없는 셀 배열이 생깁니다.

의견을 보내 주시면 대단히 감사하겠습니다.

+0

어쩌면 당신은 [지도 컨테이너 (HTTP를 사용할 수 있습니다 .cn/cn/help/matlab/map-containers.html). 키 필드로 name 문자열을 사용하면 값 필드로 계산됩니다. –

+0

데이터 세트가 매우 커서지도 컨테이너가 가장 좋은 방법인지 잘 모르겠습니다. 다른 제안? 이것은 매우 일반적인 작업 인 것처럼 보이므로 효율적인 방법이 있어야합니다. –

답변

2

파일을로드하고 셀 배열의 문자열을 얻을 가정 : //www.mathworks :

strings = {'Gregor M. Suka', 'Mark A. Pizda', 'Matthew A. Blyad', 'Mark A. Pizda'}; 
[uniqueStrings, ~, v] = unique(strings(:)); 
occurrence = accumarray(v,1); %// Or: occurrence = histc(v,unique(v)); 

uniqueStrings = 
    'Gregor M. Suka' 
    'Mark A. Pizda' 
    'Matthew A. Blyad' 

occurrence = 
    1 
    2 
    1 
관련 문제