14

<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})

誰かが私が間違っている場所を説明できますか? どんな助けでも大歓迎です。前もって感謝します。

4

1 に答える 1

22

私の推測では、versionR2013a より前の Matlab を使用していると思われます。それらは一般的な関数であり、何年も前に追加されるべきであり、この最新バージョンでのみ追加されたという事実にstrsplitかかわらstrjoinず.

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

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

ただし、textscanより堅牢にする必要があります。

textscan(line,'%s')

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

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

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

于 2013-09-07T18:05:06.247 に答える