2013-09-07 6 views
13

나는 < 20x1> 셀 배열을 가지고 있으며 각각은 문자열 형태로 데이터를 저장합니다 (나에게 나타나는 것처럼 !!!). 셀의 각 요소에 개별 문자열로 액세스하고 분할은 단어로 나타내려고합니다.strsplit : 입력 유형 'char'에 대한 정의되지 않은 함수

내가 가진 셀 배열은 < 20x1> 셀 배열이고 각 요소를 셀로 액세스하려면 for 루프를 사용하고 있습니다.

for i=1:20 
    line=newline{i} 
end 

배열 내의 모든 요소를 ​​보여줍니다. 이제 행이 문자열이기 때문에 문자열의 단어를 검색하기 위해 strsplit 함수를 적용합니다.

for i=1:20 
    words(i,:)=strsplit(line) 
end 

이 나에게 오류 메시지가 있습니다 : 내가 잘못 곳

??? Undefined function or method 'strsplit' for input 
arguments of type 'char'. 

Error in ==> chk at 15 
words=strsplit(newline{i}) 

사람이 나를 설명 할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+1

몇 가지 명확히하기 위해 다음 명령의 출력은 무엇입니까? s = newline {1}; whos 개행; which -all strsplit'. 'strsplit'의 출력은 셀 배열이 될 것입니다. – Amro

+0

명령의 출력은 개행의 첫 번째 셀에있는 문자열입니다 :'ans = YELLOW SMALL STRETCH ADULT T'이 단어들을 배열에서 추출해야합니다 – BajajG

+0

네,하지만 여전히 정보가 충분하지 않다면, MATLAB은 문자열과 셀 배열을 매우 비슷한 문자열로 출력 할 수 있습니다. 그래서 내가 그 명령의 정확한 출력을 게시하도록 요청한 것입니다 ... 또한'strsplit'는 이름이 같거나 완전히 다른 함수/스크립트를 가진 작업 공간의 변수. – Amro

답변

22

내 생각에 당신은 R2013a 이전에 version의 Matlab을 사용하고 있습니다. 그들은 일반 함수이고 이전에 추가 된 꿀벌이 있어야한다는 사실에도 불구하고 strsplitstrjoinadded in this most recent version입니다.

strsplit에 액세스 할 수없는 여러 가지 방법으로 문자열을 단어로 분할하려는 경우가 있습니다.

strread(line,'%s','delimiter',' ') 

그러나, textscan 더 강력한해야한다 : 당신의 공백을 모두 단순한 공간이 있다면 당신은 다음과 같이 strread 사용할 수 있습니다 regexp를 사용

textscan(line,'%s') 

또한 견고해야하지만, 가능성이 느려집니다 : 단지 strsplit 같은

regexp(line,'\s+','split') 

문자열 (단어)의 셀 어레이 등이 반환 출력의 모든

. textscan의 출력은 다른 출력과 관련하여 바뀝니다.

+0

네, 맞습니다! Matlab R2010a를 사용하고 있습니다. 그리고 고마워. 스트 래트는 내가 원하는대로 작동한다. :) – BajajG

+0

Matlab [권장 사항] (http://uk.mathworks.com/help/matlab/ref/strread.html) strsplit을 통해 textscan 사용. – uutsav

+2

@UtsavSinha : 링크는 **'strread' **에 대한 문서입니다. 이 질문과 대답은'strsplit'에 대한 것입니다. – horchler