通过matlab中的文档循环

时间:2014-02-14 11:24:07

标签: matlab

我试图循环变量'docs',这是一个包含字符串的单元格数组,我需要创建一个for循环,用于对单元格数组中的术语进行拼写,然后使用命令'lower'和unique来创建一个字典。

这是我尝试过的代码,我只是得到错误

docsLength = length(docs);

for C = 1:docsLength
   list = tokenize(docs, ' .,-');
   Mylist = [list;C];
end

我收到这些错误

Error using textscan
First input must be of type double or string.
Error in tokenize (line 3)
    C = textscan(str,'%s','MultipleDelimsAsOne',1,'delimiter',delimiters);
Error in tk (line 4)
   list = tokenize(docs, ' .,-');

1 个答案:

答案 0 :(得分:2)

通常,如果出现“必须是类型”错误,则表示您将错误的输入类型传递给函数。在这种情况下,您应该查看代码中发生这种情况的位置(此处,tokenize调用textscan时),并仔细检查输入的输入是否是您期望的输入

由于tokenize不是MATLAB内置函数,除非您向我们展示代码,否则我们无法说出这些输入应该是什么。但是,正如评论中提到的akfaz,您可能希望将docs{C}(字符串)传递给tokenize而不是docs(单元格数组)。否则,有一个循环是没有意义的,因为它只是重复地将相同的输入docs传递给函数。

循环还有其他问题:

Mylist = [list; C];将被覆盖每个循环,包含最新版本的listC,这只是一个数字(循环的索引)。根据{{​​1}}的输出结果,tokenize 可能有效,但您应首先初始化Mylist = [Mylist; list]

Mylist