我试图循环变量'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, ' .,-');
答案 0 :(得分:2)
通常,如果出现“必须是类型”错误,则表示您将错误的输入类型传递给函数。在这种情况下,您应该查看代码中发生这种情况的位置(此处,tokenize
调用textscan
时),并仔细检查输入的输入是否是您期望的输入
由于tokenize
不是MATLAB内置函数,除非您向我们展示代码,否则我们无法说出这些输入应该是什么。但是,正如评论中提到的akfaz,您可能希望将docs{C}
(字符串)传递给tokenize
而不是docs
(单元格数组)。否则,有一个循环是没有意义的,因为它只是重复地将相同的输入docs
传递给函数。
循环还有其他问题:
Mylist = [list; C];
将被覆盖每个循环,包含最新版本的list
加C
,这只是一个数字(循环的索引)。根据{{1}}的输出结果,tokenize
可能有效,但您应首先初始化Mylist = [Mylist; list]
。
Mylist