web-dev-qa-db-ja.com

strsplit:入力タイプ 'char'の未定義関数

<20x1>のセル配列があり、それぞれに文字列の形式でいくつかのデータが格納されています(それが私に見えるように!!!)。セルの各要素に個別の文字列としてアクセスし、単語で分割したい。

私が持っているセル配列は<20x1>セル配列で、forループを使用しているセルとして各要素にアクセスします。

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

配列内のすべての要素が表示されます。ここで、lineは文字列なので、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})

誰かが私が間違っているところを誰かに説明できますか?どんな助けでもありがたいです。前もって感謝します。

14
BajajG

私の推測では、R2013aより前のversionのMatlabを使用しています。それらは一般的な関数であり、何年も前に蜂を追加する必要があったという事実にもかかわらず、 strsplit および strjoinaddedこの最新バージョンでは

文字列を単語に分割するだけの場合に、strsplitにアクセスできない状況を回避するには、いくつかの方法があります。すべての空白が単純なスペースである場合は、次のように strread を使用できます。

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

ただし、 textscan の方が堅牢です。

textscan(line,'%s')

regexp の使用も堅牢ですが、遅くなる可能性があります。

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

これらはすべて、strsplitと同様に、出力を文字列(単語)のセル配列として返します。 textscanからの出力は、他のものに対して相対的に転置されます。

22
horchler